从函数本身获取标准库函数的点分隔路径
Get dot separated path of a standard library function from the function itself
有没有办法获取标准库函数的全名(函数的点分隔路径,包括其名称)?例如:
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'
您可以使用函数的 __module__
和 __qualname__
属性获取您要查找的信息(在 Python 3 下)。例如:
>>> import sys
>>> func = sys.exit
>>> print('{}.{}'.format(func.__module__, func.__qualname__))
sys.exit
这也适用于 class 名成员:
>>> 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__))
有没有办法获取标准库函数的全名(函数的点分隔路径,包括其名称)?例如:
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'
您可以使用函数的 __module__
和 __qualname__
属性获取您要查找的信息(在 Python 3 下)。例如:
>>> import sys
>>> func = sys.exit
>>> print('{}.{}'.format(func.__module__, func.__qualname__))
sys.exit
这也适用于 class 名成员:
>>> 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__))