events.py 知识点记录

mac2022-06-30  20

1.__all__

__all__是一个字符串list,其他模块中使用from xxx import *的时候只能导入__all__列表里的内容

2.sys.version_info

获取版本号

import sys print(sys.version_info)

输出

sys.version_info(major=3, minor=7, micro=2, releaselevel='final', serial=0)

比较时候

sys.version_info >= (3, 4) #是个元组

3.inspect.unwrap

装饰器的解包,前提是装饰器上添加了@wraps(func)装饰器。 参考链接:https://www.cnblogs.com/blackmatrix/p/6875359.html

4.__wrapped__获取被装饰之前的方法

5.判断是否是方法 inspect.isfunction

如果是输出True,否则False。

4-5涉及的代码

from functools import wraps import inspect def log(func): @wraps(func) def wrapper(*args, **kwargs): result = func(*args) print(func.__name__,'has been called') return result return wrapper #等价于add = log(add) @log def add(x, y): result = x+y return result if __name__ == '__main__': print(add(1, 3)) print(inspect.isfunction(int)) orig_add = add.__wrapped__ print(inspect.isfunction(orig_add)) print(orig_add(1,3))

输出

add has been called 4 False#int不是方法所以输出了Flase True #上面的是被装饰器装饰后的函数调用结果 #下面是被装饰前的函数的结果 4

6.__code__获取代码行数或者代码所在文件 用的还是4-5的代码

if inspect.isfunction(orig_add): code = orig_add.__code__ print (code.co_filename, code.co_firstlineno)

输出

/Users/chennan/pythonproject/demo/asyncdemo/1.py 12

转载于:https://www.cnblogs.com/c-x-a/p/10339286.html

最新回复(0)