<function __main__.add_numbers(x, y)>中的__main__是什么意思?

3

Suppose such a function:

 In [56]: def add_numbers(x, y): return x + y

当我不使用括号时,它的含义会发生改变。
In [57]: add_numbers
Out[57]: <function __main__.add_numbers(x, y)>

这里的__main__是什么意思?
它不属于add_numbers的标准或元属性:

In [59]: "__main__" in dir(add_numbers)
Out[59]: False
2个回答

2

您正在使用的是IPython功能。它使用一个漂亮的打印机,将模块名附加到函数的限定名称前面。如果您禁用了漂亮的打印机,您将得到通常的函数repr

>>> def add_numbers(x, y): return x + y
... 
>>> add_numbers
<function __main__.add_numbers(x, y)>
>>> %pprint
Pretty printing has been turned OFF
>>> add_numbers
<function add_numbers at 0x107921598>

如果您是在交互环境中定义函数的,则函数的模块是 __main__。如果您从其他模块导入它,您将看到那里的模块名称。


1

来自文档:

'__main__'是顶级代码执行的作用域名称。当从标准输入、脚本或交互式提示读取时,模块的__name__被设置为'__main__'

由于您正在从标准输入运行Python,因此模块名称设置为'__name__',并且定义的所有变量和函数都在此模块的作用域中。


我写了这段代码,但我的代码打印出了其他东西:def main(): def add_numbers(x, y): return x + y print(add_numbers) if __name__ == '__main__': main()我得到了这个输出: <function main.<locals>.add_numbers at 0x7f21d39f40d0> - Abhishek Arya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接