python第四天
Posted 浮光掠影转瞬间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python第四天相关的知识,希望对你有一定的参考价值。
本节主要内容:
1. 上节遗留的内置函数:
callable(), chr(),ord(), compile(), eval(),exec(), divmod(), isinstance() ,filter(), map()
2. 装饰器
(一)内置函数补充:
callable(): 查看函数是否可被调用,可以调用为True,否则返回False。
1 print(callable(0)) 2 print(callable(\'string\')) 3 def add(a,b): 4 return a + b 5 print(add(1,2)) 6 print(callable(add)) 7 8 9 False 10 False 11 3 12 True
chr(), ord() : 字母转换为数字,数字转换为字母。
1 r = chr(65) 2 print(r) 3 4 n = ord(\'a\') 5 print(n) 6 7 8 A 9 97
应用ASCII字符代码随机生成验证码:
点击一次随机自动生成验证码:
1 import random 2 li = [] 3 for i in range(6): 4 r = random.randrange(0,5) 5 if r == 2 or r == 4: 6 num = random.randrange(0,10) 7 li.append(str(num)) 8 else: 9 temp = random.randrange(65,91) 10 c = chr(temp) 11 li.append(c) 12 result = \'\'.join(li) 13 print(result) 14 15 16 7SC45Q
complie() : 将字符串转换为Python代码
eval() : 编译成表达式,执行表达式,并获取结果,有返回值
exec(): 执行python代码,但没有返回值
1 s = \'print(123)\' 2 r =compile(s,\'<string>\',\'exec\') #中间字符串必须指定 3 exec(r) 4 5 print(exec(\'7+9+8\')) #没有返回值为None 6 ret = eval(\'7+9+8\') 7 print(ret) 8 9 10 123 11 None 12 24
divmod(): 得到商和余数,一般用于分页标识
1 r = divmod(97,10) #97行,每页10行 2 print(r) 3 print(r[0]) 4 print(r[1]) 5 6 (9, 7) #分9页,余7行 7 9 8 7
isinstance(): 判断对象是否为某个类的实例
1 s = [11,22,33] 2 r = isinstance(s,list) 3 print(r) 4 5 True
filter() : 函数,可迭代的对象,给定一个对象的序列或函数,每个序列元素都通过过滤器筛选,保留函数返回值为True的对象。
1 def f2(a): 2 if a > 22: 3 return True 4 li = [11,22,33,44,55] 5 ret = filter(f2,li) 6 print(list(ret)) 7 8 #lambda案例: 9 f1 = lambda a: a > 30 #不成立即为False 10 ret = f1(10) 11 print(ret) 12 13 li = [11,22,33,44,55] 14 result = filter(lambda a:a>33, li) 15 print(list(result)) 16 17 [33, 44, 55] 18 False 19 [44, 55]
map(): 与filter相似,map()将函数调用映射到每一个序列的元素上,并返回一个包含所有返回值的列表。可实现for 循环
1 li = [11,22,33,44,55] 2 def f2(a): 3 return a + 100 #循环每一个元素并加100 4 result1 = map(f2,li) 5 print(list(result1)) #返回列表必须指定list 6 7 result2 = map(lambda a:a - 10, li)#lambda用法 8 print(list(result2)) 9 10 11 [111, 122, 133, 144, 155] 12 [1, 12, 23, 34, 45]
(二)装饰器:
可称为在函数调用上的一种修饰,当声明一个函数或者方法时,才会应用额外的调用。
装饰器的格式:
@ + 函数名
def 函数名(参数):
@开头,装饰器的函数名和参数(可选参数),接着装饰器声明的是被修饰的函数和装饰函数的可选参数
1 def outer(func): 2 def inner(): 3 print(\'log\') 4 return func() 5 return inner() 6 7 @outer 8 def f1(): 9 print("F1") 10 11 @outer 12 def f2(): 13 print("F2") 14 15 @outer 16 def f100(): 17 print("F100") 18 19 log 20 F1 21 log 22 F2 23 log 24 F100
一个实际例子:
1 from time import ctime,sleep #调用模块 2 3 def time_func(func): #定义时间函数装饰器并定义内容函数tm_func 4 def tm_func(): 5 print(\'[%s] called\' % (ctime())) #输出当前时间戳 6 return (func) 7 return tm_func() 8 @time_func #应用空函数体定义foo()函数并用time_func修饰 9 def foo(): 10 pass 11 foo() 12 sleep(2) #第一个函数执行后等待2s后执行第二个函数 13 @time_func #定义第二个函数修饰 14 def foo1(): 15 print(\'调用成功\') #输出结果 16 foo1() 17 18 19 [Tue May 31 11:59:37 2016] called 20 [Tue May 31 11:59:39 2016] called 21 调用成功
后续内容下节补充。。。。谢谢
以上是关于python第四天的主要内容,如果未能解决你的问题,请参考以下文章