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!