假设这样的功能:
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
答案 0 :(得分:2)
您正在看到IPython功能。它使用了漂亮的打印机,该打印机在模块名称前附加了函数的qualified name。如果禁用漂亮打印机,则将显示usual function 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 :(得分:1)
'__main__'
是顶级代码所在范围的名称 执行。读取时,模块的__name__
设置为等于'__main__'
来自标准输入,脚本或交互式提示。
由于您是从标准输入运行Python,因此模块名称设置为'__name__'
,并且所有定义的变量和函数都在该模块的范围内。