Python 3.6 统计模块 - NameError: name 'statistics' is not defined
Posted
技术标签:
【中文标题】Python 3.6 统计模块 - NameError: name \'statistics\' is not defined【英文标题】:Python 3.6 Statistics module - NameError: name 'statistics' is not definedPython 3.6 统计模块 - NameError: name 'statistics' is not defined 【发布时间】:2018-06-11 05:19:22 【问题描述】:在 python 3.6 中学习使用“统计模块”时,我遇到了以下错误: NameError:名称“统计”未定义 我只是在测试应该返回均值、中值、众数、标准差、方差的统计基本函数。 我是 Python 新手,找不到错误所在。
代码:
from statistics import *
example_list = [5,2,5,6,1,2,6,7,2,6,3,5,5]
x = statistics.mean(example_list)
print(x)
y = statistics.median(example_list)
print(y)
z = statistics.mode(example_list)
print(z)
a = statistics.stdev(example_list)
print(a)
b = statistics.variance(example_list)
print(b)
我做错了什么?
【问题讨论】:
【参考方案1】:"from" module "import" *
引入在 __all__
中定义的所有名称(如果存在),以及除了以下划线开头的名称之外的所有名称(如果 __all__
不存在)。
您不需要限定导入的名称(即,在它们前面加上statistics
)。直接用了median
,mode
,stdev
,variance
。
【讨论】:
也许值得回答from something import *
真的不是一个好主意,解决这个问题的更好方法是import statistics
并保持其余代码不变?
感谢您的回答。我得到了相同的 NameError 'mean' is not defined after 'statistics' prefix【参考方案2】:
如果我在 IDLE 中执行此操作,一切都会按预期工作。
>>> from statistics import *
>>> example_list = [5,2,5,6,1,2,6,7,2,6,3,5,5]
>>> x = mean(example_list)
>>> x
4.230769230769231
所以我没有收到您在x = mean(example_list)
报告的错误。
你还没有报告你的堆栈跟踪(为什么不?)所以我无法告诉你,但我怀疑你已经将你的测试程序命名为statistics.py
,这隐藏了真正的statistics
模块。
【讨论】:
你是绝对正确的。谢谢你。我仍然不明白如何命名脚本 statistics.py 将隐藏所有函数的模块,但是当我将其更改为 stats.py 时,一切正常。statistics
模块位于一个名为 statistics. py
的文件中。在本地文件夹中拥有自己的同名模块优先。以上是关于Python 3.6 统计模块 - NameError: name 'statistics' is not defined的主要内容,如果未能解决你的问题,请参考以下文章
Python 3.6 AttributeError:模块“statsmodels”没有属性“compat”
如何将所有模块移动到新版本的 Python(从 3.6 到 3.7)
模块导入 Python 3.6 上的 ModuleNotFoundError 和 ImportError