如果传递了另一个参数,则 Python 函数使参数成为强制性参数
Posted
技术标签:
【中文标题】如果传递了另一个参数,则 Python 函数使参数成为强制性参数【英文标题】:Python function make parameter mandatory if another parameter is passed 【发布时间】:2021-11-02 06:09:49 【问题描述】:我在 Python 中有一个函数
def myfunc(a, b=None, c=None):
my code here
有没有办法确保如果用户传递参数b
的值,就必须将参数c
传递给myfunc
?
【问题讨论】:
【参考方案1】:您可以在函数中编写一个简单的if
条件。请看下面的代码:
def myfunc(a, b=None, c=None):
if c is not None and b is None:
raise ValueError("Value of b must be passed if value of c is passed")
your code here
【讨论】:
如果用户提供了None
作为第三个参数,这将失败
这里的假设是传递None
等价于不传递任何东西,因为None
是这里的默认值。
None 被假定为默认值,不是没有值被传递【参考方案2】:
不是以任何内置方式。自己检查一下:
def myfunc(a, b=None, c=None):
if b is not None and c is None:
raise ValueError("Invalid arguments")
# ...
【讨论】:
如果用户提供了None
作为第三个参数,这将失败
@sahasrara62 如果您提供与默认值相同的值,则假定您想要默认值所暗示的任何行为。
这可能是在 None
中传递 c 值的情况之一,从这个意义上说,至少这个解决方案没有任何意义
@sahasrara62 对于定义为def func(a=None)
的python 函数,使用func()
、func(None)
或func(a=None)
调用它都应该具有相同的行为。以上是关于如果传递了另一个参数,则 Python 函数使参数成为强制性参数的主要内容,如果未能解决你的问题,请参考以下文章
php函数中,多个参数的情况下怎么使其中一个参数为默认值而其他的使用指定值