Python之路,第十二篇:Python入门与基础12
python3 函数3
装饰器 decorator ***
概念:装饰器是一个函数,主要作用是用来包装另一个函数或类;
包装的目的:是在不改变原函数名的情况下,改变被包装函数(对象)的行为。
装饰器函数: def 装饰器函数名(参数):
函数块
return 函数
例子:
def deco(fn):
print("装饰器函数被调用,并返回原函数")
return fn
带装饰器函数语法:
@装饰器函数名 [(装饰器函数传参)] <换行>
def 函数名(参数列表):
语句块
注:[ ] 代表可省略
1 def deco(fn): 2 print("装饰器被调用,原函数被返回") 3 print(fn) 4 return fn 5 #return lambda :print("hello,world") 6 7 @deco 8 def myfac(): 9 print("myfac被调用") 10 11 #myfac = deco(myfac) 12 myfac() 13 myfac() 14 # 15 def deco(fn): 16 print("装饰器被调用,原函数被返回") 17 print(fn) 18 #return fn 19 return lambda :print("hello,world") 20 21 @deco 22 def myfac(): 23 print("myfac被调用") 24 25 #myfac = deco(myfac) 26 myfac() 27 myfac() 28 # 29 #装饰器被调用,原函数被返回 30 #<function myfac at 0x00000000006766A8> 31 #myfac被调用 32 #myfac被调用 33 #装饰器被调用,原函数被返回 34 #<function myfac at 0x00000000005ACB70> 35 #hello,world 36 #hello,world
函数的文档字符串:
语法:def 函数名(参数列表):
"函数文档字符串"
语句块
.....
说明:文档字符串通常用来说明函数的功能和用法;
用>>>help(函数名) 可以查看文档字符串
例子:
1 def mymax(a, b): 2 """mymax 函数用于获取两个变量的最大值 3 a 形参 4 b 也是形参 5 """ 6 pass 7 8 help(mymax) 9 #help(mymax) 10 #Help on function mymax: 11 #mymax(a, b) 12 # mymax 函数用于获取两个变量的最大值 13 # a 形参 14 # b 也是形参
已学过的函数的语法:
[@装饰器]
def 函数名([位置参数],[*元组参数], [命名关键字参数],[**字典参数]):
["文档字符串"]
语句块
[ ] 代表内部的内容可省略
函数的属性:
__name__属性
作用:用来记录函数名;
说明:以双下划线开头,以双下划线结尾的标识符通常代表python的特殊属性等。
1 def abc(): 2 pass 3 4 a = abc 5 print(a.__name__) #abc 6 print(abc.__name__) #abc 7 8 # 9 def xxx(fn): 10 if fn.__name__ == 'abc': 11 pass 12 elif fn.__name__ == "max": 13 pass 14
__doc__ 属性
作用:用于记录文档字符
例子:
1 def cba(): 2 "我是文档字符串" 3 pass
1 def cba(): 2 "我是文档字符串" 3 pass 4 5 6 #help(cba) 7 #Help on function cba: 8 #cba() 9 # 我是文档字符串
补充内容:
布尔测试:
bool(x) #True / False
为False的情况为: None 、 False 、0、 0.0、 0+0j、 [ ] 、 ' ' 、()、{ } 、set()、 frozenset()