<function __main __。add_numbers(x,=“” y)=“”>中的__main__

时间:2018-08-10 05:24:13

标签: python ipython

假设这样的功能:

 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 个答案:

答案 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)

来自the documentation

  

'__main__'是顶级代码所在范围的名称   执行。读取时,模块的__name__设置为等于'__main__'   来自标准输入,脚本或交互式提示。

由于您是从标准输入运行Python,因此模块名称设置为'__name__',并且所有定义的变量和函数都在该模块的范围内。