python 关键 贰

来源:互联网 发布:mac华康新篆体 编辑:程序博客网 时间:2024/05/14 11:02

1:参考与对象

      当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 参考 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定

例如:

shoplist = ['apple''mango''carrot''banana']
mylist = shoplist 

del shoplist[0]

#shoplist is ['mango', 'carrot', 'banana']
#mylist is ['mango', 'carrot', 'banana']

//拷贝

print 'Copy by making a full slice'
mylist = shoplist[:] # make a copy by doing a full slice
del mylist[0

#shoplist is ['mango', 'carrot', 'banana']
#mylist is ['carrot', 'banana']

注意:记住列表的赋值语句创建拷贝。你得使用切片操作符来建立序列的拷贝。

2:切片和索引: Python从0开始计数

  2.1 索引同样可以是负数,在那样的情况下,位置是从序列尾开始计算的。因此,shoplist[-1]表示序列的最后一个元素而shoplist[-2]抓取序列的倒数第二个项目。

   2.2切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。注意这与你使用的索引操作符十分相似。记住数是可选的,而冒号是必须的。同样负数也是从后面开始计算

例如:

shoplist = ['apple''mango''carrot''banana']

print 'Item 0 is', shoplist[0]

print 'characters 1 to -1 is', name[1:-1]
print 'characters start to end is', name[:]


3:备份脚本 

例子:

import osimport timesource=[r'D:\desktop',r'D:\wifi']target_dir = "D:\\pythonZip\\"target = target_dir+time.strftime('%Y%m%d%H%M%S')+'.zip'zip_command = "zip -qr %s %s" % (target, " ".join(source))print(zip_command)if os.system(zip_command) == 0:    print('Successful backup to', target)else:    print('Backup FAILED')
注意1:

首先在命令行下看是否安装了ZIP包。windows下默认是不安装的。如果未安装,下载地址:https://sourceforge.net/projects/gnuwin32/files/zip/3.0/zip-3.0-setup.exe/download?use_mirror=nchc

然后配置环境变量。

注意2:-q选项用来表示zip命令安静地工作。-r选项表示zip命令对目录递归地工作

zip_command = "zip -qr %s %s" % (target, " ".join(source))

命令字符串现在将称为:

tar = 'tar -cvzf %s %s -X /home/swaroop/excludes.txt' % (target, ' '.join(srcdir))

选项解释如下:

  • -c表示创建一个归档。

  • -v表示交互,即命令更具交互性。

  • -z表示使用gzip滤波器。

  • -f表示强迫创建归档,即如果已经有一个同名文件,它会被替换。

  • -X表示含在指定文件名列表中的文件会被排除在备份之外。例如,你可以在文件中指定*~,从而不让备份包括所有以~结尾的文件。

4:__init__方法:__init__方法在类的一个对象被建立时,马上运行
例子:
class Person:
    def __init__(self, name):        self.name = name
    def sayHi(self):
        print 'Hello, my name is', self.name

p = Person('Swaroop')p.sayHi()
说明:self 区分类和普通函数 不用赋值

self:类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self

5:文件操作

file类的对象来打开一个文件,分别使用file类的readreadlinewrite方法来恰当地读写文件,模式可以为读模式('r')、写模式('w')或追加模式('a'),首先用写模式打开文件,然后使用file类的write方法来写文件,最后我们用close关闭这个文件。

例子:

poem="hello,world"

f = file('poem.txt''w'# open for 'w'riting
f.write(poem) # write text to file
f.close() # close the file

f = file('poem.txt')
# if no mode is specified, 'r'ead mode is assumed by default
while True:
    line = f.readline()

    if len(line) == 0# Zero length indicates EOF
        break
    print line,
    # Notice comma to avoid automatic newline added by Python
f.close()


6:存储器

Python提供一个标准的模块,称为pickle和cPickle ,cPickle比Pickle快1000倍。

首先以写模式打开一个file对象,然后调用储存器模块的dump函数,把对象储存到打开的文件中。这个过程称为 储存 。

接下来,我们使用pickle模块的load函数的返回来取回对象。这个过程称为 取储存 。

 基本接口:

  pickle.dump(obj, file, [,protocol])
  注解:将对象obj保存到文件file中去。
     protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。其中协议0和1兼容老版本的python。protocol默认值为0。
     file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以'w'方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。

  pickle.load(file)
  注解:从file中读取一个字符串,并将它重构为原来的python对象

例子:

import pickle as pstorage = ['hello', 'world', 'test']filepath1 = 'D:\\pythonZip\\a.txt'f = open(filepath1, "wb+")p.dump(storage, f, 0)f.close()del storagef = open(filepath1, "rb")storage1=p.load(f)print(storage1)

:7:exec和eval语句

exec语句用来执行储存在字符串或文件中的Python语句

例如:

>>> exec 'print "Hello World"'
Hello World

eval语句用来计算存储在字符串中的有效Python表达式

例如:

>>> eval('2*3')
6