python - 没有默认值的命名参数?

标签 python python-2.7

我知道我可以创建一个命名参数化 python 函数,例如

def t(a=None, b=None):
    return a+b

然后我可以调用

 t(b=2, a=5)

但是,如果 ab 都不是可选的,那么我需要在运行时检查函数,例如

def t(a=None, b=None):
    if a is not None and b is not None:
        return a+b
    else:
        raise Exception('Missing a or b')

是否可以在编译时检查并尽快失败?

例如

t(a=3) # raise error

最佳答案

如果参数不是可选的,不要使用默认值。

您仍然可以在调用中将这些参数用作命名参数; Python 函数中的所有 参数都命名为:

def t(a, b):
    return a+b

t(a=3, b=4)

请注意,传入错误数量的参数始终是运行时检查,而不是编译时检查。作为一种动态语言,不可能在编译时知道调用它时实际对象 t 是什么。

关于python - 没有默认值的命名参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703006/

相关文章:

python - 导入模块 - 多少才算太多?

python - 运行 scikit 学习示例时 matplotlib 出错

python - 在 Cython 中声明 FILE 指针

python - 在 Python 中以 HTML 形式发送 MySQL 查询

python - python列表函数的运行时复杂度是多少?

Python string.strip 剥离太多字符

python - 多处理管理器进程不释放内存

python - 有些模块以前可以在python中导入,但现在只能在ipython2中导入

python - httplib 与 urllib2 和 cookies

python - 如何恢复损坏的 python "cPickle"转储?