我经常发现一些定义为open(name[, mode[, buffering]])
的函数,我知道这意味着可选参数
Python文档说它是模块级功能。当我尝试用这种风格定义一个函数时,它总是失败
例如
def f([a[,b]]): print('123')
不起作用。
有人可以告诉我模块级别的含义以及如何使用此样式定义函数?
答案 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表单 - 它只是一个文档标准。
__main__
) - 这与类(方法)中定义的函数形成对比。答案 2 :(得分:0)
到目前为止,我仍然没有得到预期的答案。最初,当我看到这种表达方式open(name[, mode[, buffering]])
时,我真的想知道这是什么意思。它显然意味着可选参数。在那一刻,我发现它可能是一种不同的方式(与f(a,b,c=None,d='balabala')
的常规方式不同)来定义具有可选参数的函数,但不仅告诉我们它的可选参数。这篇文章的好处可以帮助我们使用可选参数,但没有默认值,所以我认为这是一种更清晰,更简单的方法来定义可选参数。
我真正想知道的是两件事:1。如果我们可以用这种方式定义可选参数(目前没有)2。如果有人可以解释模块级函数的含义会很好吗?
我非常感谢上述答案和评论!感谢很多