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 中运行 dlib 模块

Python 3.6 AttributeError:模块“statsmodels”没有属性“compat”

如何将所有模块移动到新版本的 Python(从 3.6 到 3.7)

模块导入 Python 3.6 上的 ModuleNotFoundError 和 ImportError

python 3.6 on win 10 editdistance模块无法导入(DLL加载失败问题)

当我使用 matplotlib.pyplot 时,python 3.6 中没有名为 PyQt4 的模块