【问题标题】:Handling NameErrors caused by invalid parameters in Python functions处理 Python 函数中参数无效导致的 NameErrors
【发布时间】:2021-04-10 20:26:57
【问题描述】:

所以我已经声明了一个带有参数的函数,像这样;
def getNumber(number = None, minimum = None, maximum = None):,但我不知道如何捕获和处理当用户将无效参数传递给它们时出现的 NameErrors。

例如,用户调用getNumber(apples) 之类的函数。 apples 只是一个占位符,用户可以输入任何非字符串/非数字。请注意,单词 apples 不是字符串。当代码运行时,它会输出: Traceback (most recent call last):

File "<pyshell#0>", line 1, in <module>
getNumber(apples)
NameError: name 'apples' is not defined

我将如何捕获和处理发生的 NameError?

【问题讨论】:

  • 为什么你会为此做点什么? 他们的代码有问题。
  • 是的,但由于某种原因,我仍然被停靠标记
  • 听起来不对,您可能想告诉我们更多关于您在做什么的信息。
  • 该函数接受用户输入的数字(分配给“数字”参数),以及最小和最大尺寸的两个可选参数。检查数字是否在范围内后,将其转换为整数并返回
  • 这里的主要内容是:您想在编写任何代码之前捕获错误。你不能。

标签: python function error-handling parameter-passing nameerror


【解决方案1】:

如果您想捕获未定义的变量(如 apple),请使用以下内容:

>>> def getNumber(number = None, minimum = None, maximum = None):
...     pass
...
>>>
>>> try:
...     getNumber(apples)
... except NameError as e:
...     print("ERROR {}. Please use proper variable.".format(e))
...
ERROR name 'apples' is not defined. Please use proper variable.

【讨论】:

  • 发现错误后你想做什么? @Roden2019
  • 只需发送一条错误消息,告诉他们使用正确的值并循环函数
  • @Roden2019 我从 python 解释器添加了一个完整的工作示例。
  • @Roden2019 如果在循环中调用此函数,并且您希望即使在错误发生后仍继续该循环,则应在 except 块中使用 continue 语句。
【解决方案2】:

在调用函数时,像这样调用它

try:
    getNumber(number, minimum, maximum)
except:
    print("Please pass in valid arguments")

如果给定的参数无效或不正确,它将打印出写在except:块中的语句

【讨论】:

  • 能分享一下你写的代码吗
猜你喜欢
  • 2015-06-07
  • 1970-01-01
  • 2023-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
相关资源
最近更新 更多