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

Python允许将元组分配给函数(pyplot的xtick),python,matplotlib,tuples,Python,Matplotlib,Tuples,我意外地为pyplot函数(即xticks)分配了一个元组,该函数变成了元组。无法将其以前的类型恢复为函数。这是正常的还是被认为是一个问题 import matplotlib.pyplot as plt import matplotlib as mpl %matplotlib inline print mpl.__version__ # Version : 1.5.1 br = (1.0,2.0,3.0) brand = ('Ford','Audi','Wolskvagen') count

我意外地为pyplot函数(即xticks)分配了一个元组,该函数变成了元组。无法将其以前的类型恢复为函数。这是正常的还是被认为是一个问题

import matplotlib.pyplot as plt
import matplotlib as mpl
%matplotlib inline 

print mpl.__version__
# Version : 1.5.1

br = (1.0,2.0,3.0)
brand = ('Ford','Audi','Wolskvagen')
count = (100,2000,10000)
plt.xticks((1,2,3),('Ford','Audi','Wolskvagen'))

plt.scatter(x = br,y = count,c = col,s=count)

print type(plt.xticks)
#<type 'function'>

plt.xticks = ((1,2,3),('Ford','Audi','Wolskvagen'))
print type(plt.xticks)
#<type 'tuple'>
#Now, I can't use xticks function any more...
导入matplotlib.pyplot作为plt
将matplotlib导入为mpl
%matplotlib内联
打印mpl.\u版本__
#版本:1.5.1
br=(1.0,2.0,3.0)
品牌=(‘福特’、‘奥迪’、‘沃尔斯克瓦根’)
计数=(100200010000)
plt.xticks((1,2,3),(‘福特’、‘奥迪’、‘沃尔斯克瓦根’)
plt.散射(x=br,y=count,c=col,s=count)
打印类型(plt.xticks)
#
plt.xticks=((1,2,3),(‘福特’、‘奥迪’、‘沃尔斯克瓦根’)
打印类型(plt.xticks)
#
#现在,我不能再使用xticks函数了。。。

在Python中,没有受保护的变量。您可以将当前名称空间中的变量写入模块,但只有少数例外(未子类化的内置类型,以及定义
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu slots
的任何类都是主要例外)

例如:

>>> 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'
这仅适用于少数内置类型,以及以特定方式重写
\uuuuu setattr\uuuu
的类,或者使用不带属性设置器的属性的类。一般的规则是,任何东西都可以写入,无论是类、模块、函数等等。是的,函数

>>> 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>
>>> import matplotlib.pyplot as plt
>>> import importlib
>>> plt.xticks = 5
>>> plt = importlib.reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>
>>将matplotlib.pyplot作为plt导入
>>>plt.xticks=5
>>>plt=重新加载(plt)
>>>plt.xticks
Python3重新加载

>>> import matplotlib.pyplot as plt
>>> plt.xticks = 5
>>> plt = reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>
>>> import matplotlib.pyplot as plt
>>> import importlib
>>> plt.xticks = 5
>>> plt = importlib.reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>
>>将matplotlib.pyplot作为plt导入
>>>导入导入库
>>>plt.xticks=5
>>>plt=导入库重新加载(plt)
>>>plt.xticks

在Python中,没有受保护的变量。您可以将当前名称空间中的变量写入模块,但只有少数例外(未子类化的内置类型,以及定义
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu slots
的任何类都是主要例外)

例如:

>>> 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'
这仅适用于少数内置类型,以及以特定方式重写
\uuuuu setattr\uuuu
的类,或者使用不带属性设置器的属性的类。一般的规则是,任何东西都可以写入,无论是类、模块、函数等等。是的,函数

>>> 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>
>>> import matplotlib.pyplot as plt
>>> import importlib
>>> plt.xticks = 5
>>> plt = importlib.reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>
>>将matplotlib.pyplot作为plt导入
>>>plt.xticks=5
>>>plt=重新加载(plt)
>>>plt.xticks
Python3重新加载

>>> import matplotlib.pyplot as plt
>>> plt.xticks = 5
>>> plt = reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>
>>> import matplotlib.pyplot as plt
>>> import importlib
>>> plt.xticks = 5
>>> plt = importlib.reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>
>>将matplotlib.pyplot作为plt导入
>>>导入导入库
>>>plt.xticks=5
>>>plt=导入库重新加载(plt)
>>>plt.xticks

您正在重写一个模块变量。模块变量是可写的。变量是可写的。Python中没有受保护的变量。最接近的是内部实例变量的名称空间卷积,它从一个
\uuuu方法\u名称
开始,在实例外部变成
\u类\uuu方法\u名称
。因此,我明白为了恢复它,我需要重新启动python?您也可以重新加载模块。我会给出一个完整的答案。你在重写一个模块变量。模块变量是可写的。变量是可写的。Python中没有受保护的变量。最接近的是内部实例变量的名称空间卷积,它从一个
\uuuu方法\u名称
开始,在实例外部变成
\u类\uuu方法\u名称
。因此,我明白为了恢复它,我需要重新启动python?您也可以重新加载模块。我会给出一个完整的答案。任何直接定义
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
namedtuple
具有
\uuuuuu slots\uuuuu=()
。任何直接定义
\uuuuuuu slots\uuuuu
的类都不允许设置任何不在其中的属性名称
namedtuple
具有
\uuuuuuu插槽(uuuuu=()
)。