python常见的模块

前面几章学了turtle模块,开实现画布和图形的移动

copy模块

这儿的复制有浅复制(copy)和深复制(deepcopy)
区别:把包含几个对象的列表复制以后,如果源列表中的一个元素的属性改变则目标列表也跟随着变,如果想避免这个情况则用copy.deepcopy()函数。

添加和删除源列表中的元素,无论是浅复制还是深复制都没有影响。

>>> #下面这个例子我们创建了一个人的类,赋予了age、sex属性,初始一个人并复制一群人
>>> class People:
    def __init__(self,age,sex):
        self.age = age
        self.sex = sex


>>> p1 = People(6,boy)
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    p1 = People(6,boy)
NameError: name 'boy' is not defined
>>> p1 = People(6,'boy')
>>> # 初始化完成后开始复制
>>> import copy
>>> p1 = People(6,'boy')
>>> p2 = copy.copy(p1)
>>> print(p2.age)
6
>>> print(p2.sex)
boy
>>> # 完成了单个复制,开始进行多个复制
>>> p3 = People(8,'girl')
>>> list1 = [p1,p2,p3]
>>> list2 = copy.copy(list1)

>>> print(list2[1].age)
6
# 用循环把里面的值打印出来,用while实现
>>> long_list2 = len(list2)
>>> i = 0
>>> while i < long_list2:
    print(list2[i].age)
    print(list2[i].sex)
    i = i + 1


6
boy
6
boy
8
girl
>>> 
#用for+range来实现,注意range里面的最后一个值是小于,并不包括这个值

>>> for i in range(0,long_list2):
    print(list1[i].age)
    print(list1[i].sex)
    i = i + 1


6
boy
6
boy
8
girl
>>> 

#直接在range里面调用函数来得到数组的长度也是可以的

>>> for i in range(0,len(list2)):
    print(list1[i].age)
    print(list1[i].sex)
    i = i + 1


6
boy
6
boy
8
girl
>>> 

#修改一个源列表中一个元素的属性,目标列表中的会跟着改变
>>> list1[1].age = 7
>>> for i in range(0,len(list2)):
    print(list2[i].age)
    print(list2[i].sex)
    i = i + 1


6
boy
7
boy
8
girl
>>> #修改源列表中的一个属性,目标表中属性会跟着改变的,
>>> #下面来在源列表中删除和添加一个元素,来看看目标表中会发生什么

>>> del list1[1]
>>> for i in range(0,len(list1)):
    print(list1[i].age)
    print(list1[i].sex)
    i = i + 1


6
boy
8
girl
>>> for i in range(0,len(list2)):
    print(list2[i].age)
    print(list2[i].sex)
    i = i + 1


6
boy
7
boy
8
girl
>>> 
# 源的删和添加是对目标无影响的
>>> p4 = People(9,'girl')
>>> list1.append(p4)
>>> for i in range(0,len(list1)):
    print(list1[i].age)
    print(list1[i].sex)
    i = i + 1


6
boy
8
girl
9
girl
>>> for i in range(0,len(list2)):
    print(list2[i].age)
    print(list2[i].sex)
    i = i + 1


6
boy
7
boy
8
girl
>>> 

如果一个对象直接赋值的话,那么被赋值的对象的属性的改变也会导致源头对象属性的改变,如果用copy.copy()函数的话是对源头没影响的,这里要注意源头对目标的影响,和目标对源头的影响。如下面的代码:


>>> car1 = Car()
>>> car1.wheels = 4
>>> car2 = car1
>>> car2.wheels = 3
>>> car1.wheels
3
>>> car2.wheels
3
>>> car3 = copy.copy(car1)
>>> car3.wheels = 6
>>> car1.wheels
3
>>> 

keyword

这个模块中有个iskeyword函数,用来判断返回的字符串是不是python中的关键字,还有一个kwlist变量,列出所有的关键字,在python3.4中共有

>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>> print(len(keyword.kwlist))
33
>>> keyword.iskeyword('else')
True
>>> 

随机数 random

常用的有如下三个函数

用randint() 产生一个随机整数

一般包含一个范围,两个参数

random.choice()

参数为列表

这个函数用来随机从列表中随机选择一个元素

洗牌函数shuffle() 这个函数用来把列表中的元素打乱

用法函数内直接加入列表参数即可


>>> random.randint(1,10)
5
>>> t
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=23, tm_hour=18, tm_min=21, tm_sec=14, tm_wday=1, tm_yday=54, tm_isdst=0)
>>> random.choice(t)
1
>>> random.choice(t)
2
>>> random.choice(t)
1
>>> random.choice(t)
21
>>> len(t)
9

>>> list1 = [1,2,3,4,5,6]
>>> list1
[1, 2, 3, 4, 5, 6]
>>> random.shuffle(list1)
>>> list1
[1, 2, 4, 5, 6, 3]
>>> random.shuffle(list1)
>>> list1
[2, 5, 4, 6, 1, 3]
>>> 

sys模块

sys.exit()

退出当前shell程序

sys.stdin.readline()

加入数字参数后可以指定读取多少个字符。

获取键盘输入

sys.stdout.write()

和print() 的区别是最后打出一个数字,显示打印了多少个字符。

查看版本号 sys.version()

time 模块

time.time()

这个函数用来显示从1970年刚刚开始经历的秒数

>>>import time
>>> def lots_of_number(max):
    t1 = time.time()
    for x in range(0,max):
        print(x)
    t2 = time.time()
    print("It's cost %s seconds" % (t2-t1))


>>> lots_of_number(1000)

asctime() 转换日期


>>> print(time.asctime())
Tue Feb 23 18:17:04 2016

# 共输入9个参数分别是年月日时分秒、星期几、本年中的第几天
>>> t = (2016,2,23,18,18,60,0,0,44)
>>> print(time.asctime(t))
Mon Feb 23 18:18:60 2016
>>> t = (2016,2,23,18,18,160,0,0,44)
>>> print(time.asctime(t))
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    print(time.asctime(t))
ValueError: seconds out of range
>>> t = (2016,2,23,18,18,00,0,0,44)
>>> print(time.asctime(t))
Mon Feb 23 18:18:00 2016

time.localtime()

打印打出当前时间的一个元组,可以用来格式化时间


>>> time.localtime()
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=23, tm_hour=18, tm_min=20, tm_sec=24, tm_wday=1, tm_yday=54, tm_isdst=0)
>>> t = time.localtime()
>>> year = t[0]
>>> month = t[1]
>>> print(year)
2016
>>> print(month)
2
>>> time.sleep(2)

time.sleep()

相当于shell中的sleep

pickle

这个单词的英语意思是腌菜

pickle.dump() 函数


>>> import pickle

#写入数据
>>> save_file = open('c:\\新建 Microsoft Excel 工作表.xlsxsave.dat','wb')
>>> pickle.dump(t1,save_file)
>>> save_file.close()

#读入数据
>>> load_file = open('c:\\新建 Microsoft Excel 工作表.xlsxsave.dat','rb')
>>> load_t1 = pickle.load(load_file)
>>> load_t1
[2, 2016, 2, 23, 18, 21, 14, 1, 54, 0]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贤时间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值