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 os import time source=[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
表示含在指定文件名列表中的文件会被排除在备份之外。例如,你可以在文件中指定*~
,从而不让备份包括所有以~
结尾的文件。
__init__
方法在类的一个对象被建立时,马上运行
例子:
class
Person
:
def
__init__
(self, name): self.name = name
def
sayHi
(self):
'Hello, my name is'
, self.name
p = Person(
'Swaroop'
) p.sayHi()
说明:self 区分类和普通函数 不用赋值self:类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是
self
。
5:文件操作
file
类的对象来打开一个文件,分别使用file
类的read
、readline
或write
方法来恰当地读写文件,模式可以为读模式('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 p storage = ['hello', 'world', 'test'] filepath1 = 'D:\\pythonZip\\a.txt' f = open(filepath1, "wb+") p.dump(storage, f, 0) f.close() del storage f = 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