Python __name__属性的其他用法

Python __name__属性的其他用法,python,Python,我通过在线阅读学习Python,在第2章中,我看到您可以使用\uuu name\uuu属性进行测试,所以我想知道,有人知道该属性的其他用途吗?谢谢我曾经有一个命令行脚本文件的装饰程序 装饰师是这样使用的: @command def someFunc(): # code goes here commands = {} def command(func) commands[func.__name__] = func return func commandName = ra

我通过在线阅读学习Python,在第2章中,我看到您可以使用
\uuu name\uuu
属性进行测试,所以我想知道,有人知道该属性的其他用途吗?谢谢

我曾经有一个命令行脚本文件的装饰程序

装饰师是这样使用的:

@command
def someFunc():
    # code goes here
commands = {}
def command(func)
    commands[func.__name__] = func
    return func
commandName = raw_input()
commands[commandName]();
装饰师在做这样的事情:

@command
def someFunc():
    # code goes here
commands = {}
def command(func)
    commands[func.__name__] = func
    return func
commandName = raw_input()
commands[commandName]();
然后我可以这样做:

@command
def someFunc():
    # code goes here
commands = {}
def command(func)
    commands[func.__name__] = func
    return func
commandName = raw_input()
commands[commandName]();
它将从控制台读取命令的名称并调用它-如果它以前被标记为decorator(这样就不会像使用
input
)那样进行危险的调用)

(在我的代码中,名称取自命令行参数,而不是
raw\u input

这很容易让我提供通过其名称访问的命令。这是一个用途-一般规则是“当你想在函数定义的概念中添加你自己的语义时,它很有用”。一般来说,装饰师也是如此


(顺便说一句,有一个
func.func\u name
字段,它比
func.\uu\u名称
更适合使用,因为在Python中以
\uuuu
开头的标识符应该是私有的,这只是一个小细节)

它在调试时非常有用。在编写框架(或任何其他高度通用的软件)时,您可以使用name轻松地进行调试,以了解传递的内容。

太好了,我仍然需要完全理解您所说的内容,感谢func.func\u name提示。请注意,这是函数上的
\u name\u
;首先找到的
\uuuu name\uuuuuuuu
位于模块上,表示其名称已导入,或者对于最初调用的模块,
'\uuuuu main\uuuuu'
;在任何情况下,
sys.modules[\u\u name\u]
都是当前模块。