趣学Python-教孩子学编程--第十章

知识点:

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
ghoul
sally = Animal('sphinx',4,'sand')my_animals.append(sally)print(len(my_animals))print(len(more_animals))

 
 
4
3
copy函数是一个浅拷贝,一个列表相当于一排小树,copy函数只是拷贝了对应的这几个树坑,在树坑里面更换树苗种类,输出的当然是新的种类。所以
more_animals[0].species == ghoul
多挖一个树坑种上树,新的树坑肯定不在拷贝的里面啊,所以
len(more_animals) == 3
      2、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))
55
      2、random.choice(列表名)在列表中随机挑选一个元素。

import random
temp =['aa','ss','dd','ff','gg']
print(random.choice(temp))
gg
      3、random.shuffle(列表名)来给列表打乱顺序。

import random
temp =['aa','ss','dd','ff','gg']
random.shuffle(temp)
print(temp)
['aa', 'ss', 'gg', 'dd', 'ff']

4、sys模块

     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
asdf
     3、sys.stdout对象是标准输出

          sys.stdout是一个文本对象,可以使用write函数。

import sys
sys.stdout.write('asdfghh')
asdfghh
     4、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)]

5、time模块

     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 2020
     3、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
12
     4、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']}

























你可能感兴趣的:(趣学Python-教孩子学编程--第十章)