是否可以获取标准库函数的全名(函数的点分隔路径,包括其名称)?例如:
import sys
import os
from random import choice
my_function = choice([sys.exit, os.path.join, os.getcwd])
print(my_function) # Somehow generate full name of the built-in function
# Would expect to get one of 'sys.exit', 'os.path.join' or 'os.getcwd'
答案 0 :(得分:1)
您可以使用函数的__module__
和__qualname__
属性来获取所需的信息(在Python 3下)。例如:
>>> import sys
>>> func = sys.exit
>>> print('{}.{}'.format(func.__module__, func.__qualname__))
sys.exit
这也适用于班级成员:
>>> import email.message
>>> func = email.message.Message.get_payload
>>> print('{}.{}'.format(func.__module__, func.__qualname__))
email.message.Message.get_payload
在Python 2.x下需要做更多的工作,因为__qualname__
属性不可用:
>>> print('{}.{}.{}'.format(func.__module__, func.im_class.__name__, func.__name__))