python之函数
2016-05-31 12:04
387 查看
本节主要内容:
1. 上节遗留的内置函数:
callable(), chr(),ord(), compile(), eval(),exec(), divmod(), isinstance() ,filter(), map()
2. 装饰器
(一)内置函数补充:
callable(): 查看函数是否可被调用,可以调用为True,否则返回False。
print(callable(0)) print(callable('string')) def add(a,b): return a + b print(add(1,2)) print(callable(add)) False False 3 True
chr(), ord() : 字母转换为数字,数字转换为字母。
r = chr(65) print(r) n = ord('a') print(n) A 97
应用ASCII字符代码随机生成验证码:
点击一次随机自动生成验证码:
import random li = [] for i in range(6): r = random.randrange(0,5) if r == 2 or r == 4: num = random.randrange(0,10) li.append(str(num)) else: temp = random.randrange(65,91) c = chr(temp) li.append(c) result = ''.join(li) print(result) 7SC45Q
complie() : 将字符串转换为Python代码
eval() : 编译成表达式,执行表达式,并获取结果,有返回值
exec(): 执行python代码,但没有返回值
s = 'print(123)' r =compile(s,'<string>','exec') #中间字符串必须指定 exec(r) print(exec('7+9+8')) #没有返回值为None ret = eval('7+9+8') print(ret) 123 None 24
divmod(): 得到商和余数,一般用于分页标识
r = divmod(97,10) #97行,每页10行 print(r) print(r[0]) print(r[1]) (9, 7) #分9页,余7行 9 7
isinstance(): 判断对象是否为某个类的实例
s = [11,22,33] r = isinstance(s,list) print(r) True
filter() : 函数,可迭代的对象,给定一个对象的序列或函数,每个序列元素都通过过滤器筛选,保留函数返回值为True的对象。
def f2(a): if a > 22: return True li = [11,22,33,44,55] ret = filter(f2,li) print(list(ret)) #lambda案例: f1 = lambda a: a > 30 #不成立即为False ret = f1(10) print(ret) li = [11,22,33,44,55] result = filter(lambda a:a>33, li) print(list(result)) [33, 44, 55] False [44, 55]
map(): 与filter相似,map()将函数调用映射到每一个序列的元素上,并返回一个包含所有返回值的列表。可实现for 循环
li = [11,22,33,44,55] def f2(a): return a + 100 #循环每一个元素并加100 result1 = map(f2,li) print(list(result1)) #返回列表必须指定list result2 = map(lambda a:a - 10, li)#lambda用法 print(list(result2)) [111, 122, 133, 144, 155] [1, 12, 23, 34, 45]
(二)装饰器:
可称为在函数调用上的一种修饰,当声明一个函数或者方法时,才会应用额外的调用。
装饰器的格式:
@ + 函数名
def 函数名(参数):
@开头,装饰器的函数名和参数(可选参数),接着装饰器声明的是被修饰的函数和装饰函数的可选参数
def outer(func): def inner(): print('log') return func() return inner() @outer def f1(): print("F1") @outer def f2(): print("F2") @outer def f100(): print("F100") log F1 log F2 log F100
一个实际例子:
from time import ctime,sleep #调用模块 def time_func(func): #定义时间函数装饰器并定义内容函数tm_func def tm_func(): print('[%s] called' % (ctime())) #输出当前时间戳 return (func) return tm_func() @time_func #应用空函数体定义foo()函数并用time_func修饰 def foo(): pass foo() sleep(2) #第一个函数执行后等待2s后执行第二个函数 @time_func #定义第二个函数修饰 def foo1(): print('调用成功') #输出结果 foo1() [Tue May 31 11:59:37 2016] called [Tue May 31 11:59:39 2016] called 调用成功
后续内容下节补充。。。。谢谢
相关文章推荐
- Python命名规范
- Python-Gantt
- Python2.x中文乱码问题解决方法
- Python脚本性能分析
- pyenv安装与使用-多版本python共存解决方法
- selenium+python windows环境搭建
- python的Button的小程序
- python3 threading thread 模块学习
- Paste模块的世界
- [python] 多版本安装
- 防暴力破解 Fail2Ban之python 推荐
- os.walk( )遍历指定目录下的所有文件
- Python学习之基础总结--2
- Python3 几个常见问题
- python3下安装Django
- Python 多进程 多线程
- python post request
- [python] pip 使用经验记录
- python3 连接SQLserver
- Python SMTP发送邮件