python3 函数3
装饰器 decorator ***
概念:装饰器是一个函数,主要作用是用来包装另一个函数或类;
包装的目的:是在不改变原函数名的情况下,改变被包装函数(对象)的行为。
装饰器函数: def 装饰器函数名(参数):
函数块
return 函数
例子:
def deco(fn):
print("装饰器函数被调用,并返回原函数")
return fn
带装饰器函数语法:
@装饰器函数名 [(装饰器函数传参)] <换行>
def 函数名(参数列表):
语句块
注:[ ] 代表可省略
def deco(fn):
print("装饰器被调用,原函数被返回")
print(fn)
return fn
#return lambda :print("hello,world") @deco
def myfac():
print("myfac被调用") #myfac = deco(myfac)
myfac()
myfac()
#
def deco(fn):
print("装饰器被调用,原函数被返回")
print(fn)
#return fn
return lambda :print("hello,world") @deco
def myfac():
print("myfac被调用") #myfac = deco(myfac)
myfac()
myfac()
#
#装饰器被调用,原函数被返回
#<function myfac at 0x00000000006766A8>
#myfac被调用
#myfac被调用
#装饰器被调用,原函数被返回
#<function myfac at 0x00000000005ACB70>
#hello,world
#hello,world
函数的文档字符串:
语法:def 函数名(参数列表):
"函数文档字符串"
语句块
.....
说明:文档字符串通常用来说明函数的功能和用法;
用>>>help(函数名) 可以查看文档字符串
例子:
def mymax(a, b):
"""mymax 函数用于获取两个变量的最大值
a 形参
b 也是形参
"""
pass help(mymax)
#help(mymax)
#Help on function mymax:
#mymax(a, b)
# mymax 函数用于获取两个变量的最大值
# a 形参
# b 也是形参
已学过的函数的语法:
[@装饰器]
def 函数名([位置参数],[*元组参数], [命名关键字参数],[**字典参数]):
["文档字符串"]
语句块
[ ] 代表内部的内容可省略
函数的属性:
__name__属性
作用:用来记录函数名;
说明:以双下划线开头,以双下划线结尾的标识符通常代表python的特殊属性等。
def abc():
pass a = abc
print(a.__name__) #abc
print(abc.__name__) #abc #
def xxx(fn):
if fn.__name__ == 'abc':
pass
elif fn.__name__ == "max":
pass
__doc__ 属性
作用:用于记录文档字符
例子:
def cba():
"我是文档字符串"
pass
def cba():
"我是文档字符串"
pass #help(cba)
#Help on function cba:
#cba()
# 我是文档字符串
补充内容:
布尔测试:
bool(x) #True / False
为False的情况为: None 、 False 、0、 0.0、 0+0j、 [ ] 、 ' ' 、()、{ } 、set()、 frozenset()