知识点:
1、copy模块。
copy模块中包含了制作对象的拷贝的函数。
1、copy.copy函数
import copy class Animal: def __init__(self,species,number_of_legs,color): self.species = species self.number_of_legs = number_of_legs self.color = color harry = Animal('hippogriff',6,'pink') carrie = Animal('chimera',4,'green polka dots') billy = Animal('bogill',0,'paisley') my_animals = [harry,carrie,billy] more_animals = copy.copy(my_animals) my_animals[0].species = 'ghoul' print(my_animals[0].species) print(more_animals[0].species)
<pre name="code" class="python">ghoul ghoulsally = Animal('sphinx',4,'sand')my_animals.append(sally)print(len(my_animals))print(len(more_animals))
4 3copy函数是一个浅拷贝,一个列表相当于一排小树,copy函数只是拷贝了对应的这几个树坑,在树坑里面更换树苗种类,输出的当然是新的种类。所以
more_animals[0].species == ghoul多挖一个树坑种上树,新的树坑肯定不在拷贝的里面啊,所以
len(more_animals) == 32、copy.deepcopy函数
对于原来列表中Animal对象的改动不会影响到新列表。
more_animals = copy.deepcopy(my_animals) my_animals[0].species = 'wyrm' print(my_animals[0].species) print(more_animals[0].species)
wyrm hippogriff
sally = Animal('sphinx',4,'sand') my_animals.append(sally) print(len(my_animals)) print(len(more_animals))
4 3但是,对于新挖的树坑里面种的树,他同样控制不了。
2、keyword模块
1、keyword模块中有一个iskeyword函数,返回一个字符串是否为Python关键字。
2、keyword模块中有一个kwlist变量,包含所有Python关键字的列表。
3、random模块
1、random.randint(a,b)在(a,b)中随机挑选一个数字。
import random print(random.randint(1,100))
552、random.choice(列表名)在列表中随机挑选一个元素。
import random temp =['aa','ss','dd','ff','gg'] print(random.choice(temp))
gg3、random.shuffle(列表名)来给列表打乱顺序。
import random temp =['aa','ss','dd','ff','gg'] random.shuffle(temp) print(temp)
['aa', 'ss', 'gg', 'dd', 'ff']
1、sys.exit()函数用来停止Python Shell程序
import sys sys.exit()2、sys.stdin对象是标准输入
sys.stdin.readline(字符数量)读取从键盘输入的一行文本,直到用户按了回车键结束。
其与input的区别就是它能用一个参数来指定输入多少个字符
import sys a = sys.stdin.readline(4) print(a)
asdfghjkl asdf3、sys.stdout对象是标准输出
sys.stdout是一个文本对象,可以使用write函数。
import sys sys.stdout.write('asdfghh')
asdfghh4、sys.version返回Python版本
import sys print(sys.version)
3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)]
1、time.time()函数返回自1970年1月1日00:00:00以来的秒数,一般在程序中两次使用该函数,然后求差以求的程序运行的时间。
2、time.asctime()函数来转换日期。
不带参数时,asctime函数返回当前的日期和时间
import time print(time.asctime())
Tue Dec 1 17:13:19 2015带参数时,要创建一个元组,其元素依次是(年、月、日、时、分、秒、星期几(0代表星期一)、一年中的第几天、是否为夏令时时间(0否1是))
import time t = (2020,2,23,10,30,48,6,0,0) print(time.asctime(t))
Sun Feb 23 10:30:48 20203、time.localtime()来得到日期和时间
import time print(time.localtime())
time.struct_time(tm_year=2015, tm_mon=12, tm_mday=1, tm_hour=17, tm_min=20, tm_sec=35, tm_wday=1, tm_yday=335, tm_isdst=0)其返回顺序和asctime()函数一样
若想单独输出比如年、月,可用索引的方法,因为其存储也是一个元组
import time t = time.localtime() year = t[0] month = t[1] print(year) print(month)
2015 124、time.sleep()休息函数
如果想让程序推迟或者慢下来,用time.sleep(休息时间)函数,这个函数会让动画看上去更真实
6、pickle模块
pickle模块用来把Python对象转换成可以方便写入到文件和从文件读取的形式。我们可以在保存游戏进度中使用。
pickle模块保存信息,用写入方式打开文件然后调用pickle里的dump函数。
import pickle game_data = { 'player-position' : 'N23 E45', 'pockets' : ['keys','pocket knife','polished stone'], 'money' : 158.50 } save_file = open('save.dat','wb') #参数wb就是告诉Python用二进制模式写入文件 pickle.dump(game_data,save_file) save_file.close()pickle模块读取信息,用load函数将写入的文件反序列化
import pickle game_data = { 'player-position' : 'N23 E45', 'pockets' : ['keys','pocket knife','polished stone'], 'money' : 158.50 } save_file = open('save.dat','wb') #参数wb就是告诉Python用二进制模式写入文件 pickle.dump(game_data,save_file) save_file.close() load_file = open('save.dat','rb') #参数rb就是读取二进制模式 loaded_game_data = pickle.load(load_file) load_file.close() print(loaded_game_data)
{'money': 158.5, 'player-position': 'N23 E45', 'pockets': ['keys', 'pocket knife', 'polished stone']}