-1

在 Python 中,当您无法为函数重新分配任何东西时,为什么您可以为模块重新分配值?

是因为模块是预先编写的脚本,而您在执行这样的命令时只是在编辑这些脚本?

>>> import math
>>> math.log = 1
>>> math.log
1
4

1 回答 1

2

在 Python 中(不像,例如 Java 等)import module是一个命令而不是一个声明,它大致相当于:

math = __import__('math', globals(), locals(), [], -1)

因此,在这里我们加载一个模块math并将对它的引用分配给变量math。现在,由于模块也是对象,您可以重新分配它们中的任何属性(您不是通过它来编辑脚本)。不用说,这是一件非常不推荐的事情。

于 2013-01-29T21:07:57.703 回答