尝试运行使用输入函数的脚本时,您可能会遇到错误“NameError: name ' ...' 没有定义。”当输入函数尝试将用户的输入计算为 Python 表达式时,由于缺少有效名称或变量而失败,就会发生这种情况。
在 Python 2.7 中,输入函数执行独特的行为。它将用户的输入解释为 Python 表达式。如果脚本需要一个字符串,则输入不应包含在引号中。但是,当需要一个字符串但用引号引起来时,由于存在额外的引号,就会发生错误。
例如:
input_variable = input("Enter your name: ") # Expecting a string without quotes print("Your name is " + input_variable) # Error: NameError
要在 Python 2.7 中纠正此问题,请改用 raw_input 函数。该函数只是读取用户的输入,而不将其解释为 Python 表达式。
input_variable = raw_input("Enter your name: ") # Expecting a string with quotes print("Your name is " + input_variable) # No error
在 Python 3.x 中,raw_input 函数已被重命名输入。因此,它的行为方式与 Python 2.7 中的 raw_input 类似:它将用户的输入读取为字符串而不进行解释。
由于 Python 中的输入2.7 评估用户输入,这会带来安全问题。如果恶意用户输入未经正确清理或验证的命令,则可能会执行恶意代码。例如,如果脚本导入了 os 模块并且用户输入以下内容作为输入:
os.remove("/etc/hosts")
这可能会导致 /etc/hosts 文件被删除,突出显示使用 raw_input 的重要性用于读取敏感的用户输入。
以上是为什么 Python 的 `input()` 函数会导致'NameError”以及如何避免它?的详细内容。更多信息请关注PHP中文网其他相关文章!