我没有看我之前写的内容,所以我不小心在 ipython 中声明了一个变量:
np.zerosn=10
令人惊讶的是,这是允许的。所以我想也许是因为你可以在变量名称中命名使用句点,但事实并非如此。所以我想知道到底发生了什么。这是向 numpy 模块添加新变量吗?
最佳答案
是的。
一般来说,(大多数/许多)Python 对象具有动态属性空间,您可以随时将任何您想要的内容粘贴到它们上。模块只是对象。它们的属性空间本质上与其全局范围相同。
纯 python 函数是另一个(也许令人惊讶的)示例,您可以在其上粘贴任意属性,尽管这些属性与函数的本地作用域无关。
大多数“内置”类型(即在扩展模块中实现的类型,而不是在 __builtins__
模块中找到的类型)及其实例,没有动态属性空间。带有 __slots__
的纯 Python 类型也不行。
关于python向导入的模块添加变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26310079/