python如何定义带有方括号可选参数的函数?

xzlaal3s  于 2022-11-21  发布在  Python
关注(0)|答案(3)|浏览(132)

我经常发现一些函数的定义类似于open(name[, mode[, buffering]]),我知道它意味着可选参数。
Python文档说它是模块级函数,当我尝试用这种风格定义函数时,总是失败。
比如说
def f([a[,b]]): print('123')
不起作用。
有人能告诉我模块级是什么意思吗?我如何用这种风格定义函数?

bwitn5fc

bwitn5fc1#

这是你要找的吗?

>>> def abc(a=None,b=None):
...  if a is not None: print a
...  if b is not None: print b
... 
>>> abc("a")
a
>>> abc("a","b")
a
b
>>> abc()
>>>
nzkunb0c

nzkunb0c2#

1.“* 是否可以使用这种方式定义可选参数(目前没有)*”
方括号符号不是python语法,它是巴科斯-诺尔形式-它只是一个文档标准。
1.模块级函数是在模块(包括__main__)中定义的函数-这与在类(方法)中定义的函数形成对比。

41zrol4v

41zrol4v3#

到目前为止,我仍然没有得到一个预期的答案。最初,当我看到open(name[, mode[, buffering]])这种表达方式时,我很想知道这是什么意思。它显然是可选参数的意思。当时,我发现这可能是一种不同的方式(不同于像f(a,b,c=None,d='balabala')这样的正常方式)定义一个带有可选参数的函数而不是只告诉我们它的可选参数。这样写的好处是可以帮助我们使用可选参数,但没有默认值,所以我认为这是一种更清晰、更简单的定义可选参数的方法。
我真正想知道的是两件事:1.如果我们可以用这种方式定义可选参数(目前还不能)2.如果有人能解释一下模块级函数是什么意思,那就太好了?我真的很感谢以上的回答和评论!非常感谢

相关问题