基本原理
在 Python 中,获取函数名称是一个简单但非常有用的技巧,尤其是当你需要动态地引用函数或者在日志、调试中需要函数名称时。Python 提供了几种方法来获取函数的名称。
方法一:使用 __name__
属性
每个函数对象都有一个 __name__
属性,它返回函数的名称作为字符串。
方法二:使用 globals()
函数
globals()
函数返回一个字典,其中包含当前全局符号表的内容。如果你知道函数名是全局变量,可以通过 globals()[函数名]
访问函数对象,然后使用 __name__
属性获取函数名。
方法三:使用 func.__module__ + '.' + func.__qualname__
__module__
属性返回定义函数的模块的名称,而 __qualname__
属性返回一个包含嵌套函数信息的名称。将这两个属性结合起来,可以获取完整的函数名。
代码示例
以下是几种获取函数名称的方法的示例代码:
# 示例代码 1:使用 __name__ 属性
def my_function():
print("Hello, I am a function!")
print(my_function.__name__) # 输出: my_function
# 示例代码 2:使用 globals() 函数
print(globals()['my_function'].__name__) # 输出: my_function
# 示例代码 3:使用 __module__ 和 __qualname__
def outer_function():
def inner_function():
pass
print(outer_function.__module__ + '.' + outer_function.__qualname__) # 输出: __main__.outer_function
# 运行结果
my_function()
print(my_function.__name__) # Hello, I am a function!
# my_function
# __main__.outer_function
注意事项
- 使用
__name__
属性时,它返回的是函数的名称,不包括模块名。 - 如果函数是嵌套函数,
__qualname__
会包含额外的嵌套信息,例如outer_function.inner_function
。 globals()
函数可以访问全局作用域中的所有变量和函数,但使用时需要小心,因为它可能会覆盖已有的全局变量。
结论
获取 Python 函数的名称是一个在多种场景下都非常有用的功能。通过 __name__
属性、globals()
函数和结合 __module__
与 __qualname__
,你可以灵活地获取所需的函数名称。这些方法各有适用场景,选择合适的方法可以提高代码的可读性和维护性。
>
> 【痕迹】QQ+微信朋友圈和聊天记录分析工具1.0.4 (1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。
>
> (2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。
>
> (3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。
>
> 下载地址:https://www.alipan.com/s/x6fqXe1jVg1
>