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

时间:2017-09-09 06:47:01

标签: python

我经常发现一些定义为open(name[, mode[, buffering]])的函数,我知道这意味着可选参数 Python文档说它是模块级功能。当我尝试用这种风格定义一个函数时,它总是失败 例如
def f([a[,b]]): print('123')
不起作用。
有人可以告诉我模块级别的含义以及如何使用此样式定义函数?

3 个答案:

答案 0 :(得分:1)

这是你在找什么?

>>> 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()
>>> 

答案 1 :(得分:1)

" 1。如果我们可以用这种方式定义可选参数(目前没有)"

方括号表示法不是python语法,它是Backus-Naur表单 - 它只是一个文档标准。

  1. 模块级函数是模块中定义的函数(包括__main__) - 这与类(方法)中定义的函数形成对比。

答案 2 :(得分:0)

到目前为止,我仍然没有得到预期的答案。最初,当我看到这种表达方式open(name[, mode[, buffering]])时,我真的想知道这是什么意思。它显然意味着可选参数。在那一刻,我发现它可能是一种不同的方式(与f(a,b,c=None,d='balabala')的常规方式不同)来定义具有可选参数的函数,但不仅告诉我们它的可选参数。这篇文章的好处可以帮助我们使用可选参数,但没有默认值,所以我认为这是一种更清晰,更简单的方法来定义可选参数。
我真正想知道的是两件事:1。如果我们可以用这种方式定义可选参数(目前没有)2。如果有人可以解释模块级函数的含义会很好吗? 我非常感谢上述答案和评论!感谢很多