从函数本身获取标准库函数的点分隔路径

时间:2019-04-23 18:03:58

标签: python python-3.x standard-library

是否可以获取标准库函数的全名(函数的点分隔路径,包括其名称)?例如:

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'

1 个答案:

答案 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__))