我没看到我之前在线上写的东西,所以我意外地在ipython中声明了一个变量:
np.zerosn=10
令人惊讶的是,这是允许的。所以我想也许是因为你可以在变量名中命名使用句点,但事实并非如此。所以我想知道实际发生了什么。这是为numpy模块添加一个新变量吗?
答案 0 :(得分:4)
是
通常,(大多数/多个)python对象具有动态属性空间,您可以随时将任意内容粘贴到它们上。模块只是对象。它们的属性空间与它们的全局范围基本相同。
纯Python函数是另一个(可能是令人惊讶的)某些东西的例子,你可以在其上粘贴任意属性,尽管它们与函数的局部范围无关。
大多数“内置”类型(即在扩展模块中实现的类型,而不是在__builtins__
模块中找到的类型)及其实例,没有动态属性空间。使用__slots__
的纯python类型也不会。