python - 对特定的值列表强制执行参数

标签 python function

强制函数为给定参数获取一组特定值的 pythonic 方法是什么?例如有一个函数如下:

def results(status, data):
    

我想将参数 status 限制为一组值,例如 0、1 或 99。

最佳答案

您需要检查函数内部的值:

def results(status, data):
    valid = {0, 1, 99}
    if status not in valid:
        raise ValueError("results: status must be one of %r." % valid)

这里,valid是一个集合,因为我们唯一关心的是status是否是集合的成员(我们对顺序不感兴趣,因为例子)。为避免每次使用该函数时都重新创建集合,您可能会将其定义为“常量”1 全局变量:

VALID_STATUS = {0, 1, 99}

def results(status, data):
    if status not in VALID_STATUS:
        raise ValueError("results: status must be one of %r." % VALID_STATUS)

示例用法:

>>> results(7, [...])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in results
ValueError: results: status must be one of {0, 1, 99}.

始终尝试提高 the most appropriate exception你可以 - ValueError告诉函数的调用者发生了什么比 Exception 更好例如。


1 它不是真正常量,但按照惯例,Python 中的ALL_UPPERCASE 变量名被认为是常量。

关于python - 对特定的值列表强制执行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25854380/

相关文章:

c - 无论如何,如何在 C 中使用已声明但未定义的函数?

python - 为什么在函数conway的Python游戏中出现这种语法错误?

javascript - 单击的元素将其自身传递给将来的函数调用

Python:检测共享单词的字符串

python - 为什么某些代码在 Python2 中是确定性的,而在 Python 3 中是非确定性的?

python - 如何使用 Python Backoff 库根据 http 错误代码进行重试?

python - 使用类作为另一个类的方法的装饰器

python - 代码在函数外部工作,但在函数内部不起作用(python)

python - 如何将Python安装目录打印到输出?

javascript - 调用保存到附加了事件处理程序的变量的函数