Python允许将元组分配给函数(xticks的pyplot)

时间:2016-05-15 23:10:46

标签: python matplotlib tuples

我不小心为一个pyplot函数(即xticks)分配了一个元组,并且该函数变成了一个元组。无法将其先前类型恢复为功能。这是正常的还是被认为是一个问题?

<p> q </p> <!-- q = 'worked' -->

1 个答案:

答案 0 :(得分:2)

在Python中,没有受保护变量这样的东西。您可以在当前命名空间中将变量写入模块,只有少数例外(未编译子类的内置类型,以及定义__slots__的任何类(感谢Alex Hall)是主要的例外情况)。

例如:

>>> from collections import namedtuple
>>> x = namedtuple('x', 'a b')
>>> y = x(1, 3)
>>> y.a = 3
AttributeError: 'X' object attribute 'a' is read-only
>>> a.t = 3
AttributeError: 'X' object has no attribute 't'

仅适用于少数内置类型,以及以特定方式覆盖__setattr__或使用不带属性设置器的属性的类。一般规则是,任何东西都可以写入,无论是类,模块,函数等。是的,函数。

>>> def a(x):
...     pass
>>> a.b = 1
>>> a.b
1

那么,如果意外覆盖您导入的模块中的变量,如何修复错误?或者,重新启动Python解释器或重新加载模块。

Python2重新加载

>>> import matplotlib.pyplot as plt
>>> plt.xticks = 5
>>> plt = reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>

Python3重新加载

>>> import matplotlib.pyplot as plt
>>> import importlib
>>> plt.xticks = 5
>>> plt = importlib.reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>