首页 >后端开发 >Python教程 >Python 2.7 与 3.x:为什么 `input()` 会导致 `NameError: name '...' is not Defined`?

Python 2.7 与 3.x:为什么 `input()` 会导致 `NameError: name '...' is not Defined`?

Linda Hamilton
Linda Hamilton原创
2024-12-25 18:43:41338浏览

Python 2.7 vs. 3.x:  Why Does `input()` Cause a `NameError: name '...' is not defined`?

Input() 错误:理解 NameError: Name '...' 未定义

在 Python 2.7 和 3.x 中, input() 函数用于接受用户输入。但是,这些版本中 input() 的行为存在细微差别。

Python 2.7

在 Python 2.7 中,input() 函数计算字符串由用户作为 Python 表达式输入。这意味着,如果您输入现有变量或函数的名称,则 input() 函数将返回该变量的值或执行该函数。

例如,如果您有一个名为“dude”的变量如果值为“thefourtheye”,则在 input() 函数中输入“dude”将返回“thefourtheye”。但是,如果您输入当前上下文中未定义的名称,则会收到 NameError。

Python 3.x

在 Python 3.x 中, input() 函数相当于 Python 2.7 中的 raw_input() 函数。它只是从标准输入中读取一行并将其作为字符串返回,而不对其进行评估。

这意味着您不能再在 input() 函数中输入变量或函数名称并期望它返回它们的值。相反,input() 将始终返回一个字符串,然后您可以根据需要将其转换为适当的类型(例如 int 或 float)。

安全注意事项

事实上,input() 在 Python 2.7 中评估用户输入可能会带来安全风险。如果用户输入恶意代码,它可能会被Python解释器执行。因此,请务必小心如何在代码中使用 input()。

在 Python 3.x 中,由于不评估用户输入,因此与 input() 相关的安全风险显着降低。然而,在代码中使用用户输入之前对其进行清理仍然是一个很好的做法。

以上是Python 2.7 与 3.x:为什么 `input()` 会导致 `NameError: name '...' is not Defined`?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn