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

Python 从函数本身获取标准库函数的点分隔路径,python,python-3.x,standard-library,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.

有没有办法获得标准库函数的全名(函数的点分隔路径,包括其名称)?例如:

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'

您可以使用函数(在Python 3下)的
\uu模块\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
属性获取所需的信息。例如:

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'
导入系统 >>>func=sys.exit >>>打印(“{}.{}.”格式(函数模块、函数质量名称) 系统出口 这也适用于班级成员:

导入email.message >>>func=email.message.message.get\u有效载荷 >>>打印(“{}.{}.”格式(函数模块、函数质量名称) email.message.message.get_有效载荷 在Python2.x下需要做更多的工作,因为
\uuu qualname\uu
属性不可用:

>>打印({}.{}.{}.{}.格式(函数模块,函数im类,函数名称,函数名称)

您将如何处理这样一个函数?将存储人类可读的日志,调用了哪个函数。无需任何解释的向下投票?请告诉我这个问题出了什么问题。我已经修复了错误的标记(将
builtin
更改为
standard library
)。对于
os.path.join
我得到了
“posixpath.join”
,但是我认为
“os.path.join”
是一个糟糕的测试用例,因为这实际上是
posixpath
macpath
ntpath
等,取决于平台。因此,您实际上得到了正确的答案。奇怪的是,您选择使用
func.\uuuuu qualname\uuuuu
而不是
func.\uuuu name\uuuuu
。区别是什么?比较
email.message.message.get\u有效载荷的输出。
name\uuuu
email.message.message.get\u有效载荷。
。因此
\uuu name\uuuu
只返回函数名,例如
'get\u有效载荷'
,并且
\uuu qualname\uu
也包括类名,例如,
“消息。获取有效负载”
。伟大的谢谢你@larsks!