Function
docstring
def function(a: int, b: str, c = True) -> bool:
"""_summary_ 这里的格式支持restructed text
Args:
a (int): _description_
b (str): _description_
c (bool, optional): _description_. Defaults to True.
Returns:
bool: _description_
"""
基础
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
----------- ---------- ----------
| | |
| Positional or keyword |
| - Keyword only
-- Positional only
为什么存在positional only的函数, 比如我的
class LargeQueryHandler:
def handle_object(self, instance): # 这个时候各个类就能用不同的名称了
def main(name, age, height=2.2, *args, **kwargs):
print("name: {}".format(name))
print("age: {}".format(age))
参数的传递
调用的时候, 必须先传递位置变量,后传递名称变量。
main('name', key='value', 'age') # 错如果位置变量已经有了值,后面肯定不能再加同名称变量了
Annotation
详情见typing模块
decorator 装饰器
基础用法
# 基础用法
from functools import update_wrapper
def log(f):
print('log')
print(f.__name__)
def fin(*args, **kwargs):
return f(*args, **kwargs)
return update_wrapper(fin, f)
return fin
@log
def main():
''' main __docstring__ '''
print(1)
让装饰器带参数
def deco(text):
def _deco(func):
def __deco(*args, **kwargs):
print('before myfunc() called.')
print(text)
func(*args, **kwargs)
print('after myfunc() called.')
return update_wrapper(__deco, func)
return _deco
@deco('text')
def myfunc(text= 'no text' ):
print("myfunc() called")
print(text)