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

2024-10-02 20:31:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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...

Tags: 函数importmatplotlibastypecountpltmpl
1条回答
网友
1楼 · 发布于 2024-10-02 20:31:22

在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__的类,或者使用不带属性设置器的属性的类。一般规则是,任何东西都可以被写入,不管是类、模块、函数等等。是的,函数。在

^{pr2}$

那么,如果不小心覆盖了导入的模块中的变量,如何修复错误?重新启动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>

相关问题 更多 >