我经常发现一些函数的定义类似于open(name[, mode[, buffering]]),我知道它意味着可选参数。Python文档说它是模块级函数,当我尝试用这种风格定义函数时,总是失败。比如说def f([a[,b]]): print('123')不起作用。有人能告诉我模块级是什么意思吗?我如何用这种风格定义函数?
open(name[, mode[, buffering]])
def f([a[,b]]): print('123')
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() >>>
nzkunb0c2#
1.“* 是否可以使用这种方式定义可选参数(目前没有)*”方括号符号不是python语法,它是巴科斯-诺尔形式-它只是一个文档标准。1.模块级函数是在模块(包括__main__)中定义的函数-这与在类(方法)中定义的函数形成对比。
__main__
41zrol4v3#
到目前为止,我仍然没有得到一个预期的答案。最初,当我看到open(name[, mode[, buffering]])这种表达方式时,我很想知道这是什么意思。它显然是可选参数的意思。当时,我发现这可能是一种不同的方式(不同于像f(a,b,c=None,d='balabala')这样的正常方式)定义一个带有可选参数的函数而不是只告诉我们它的可选参数。这样写的好处是可以帮助我们使用可选参数,但没有默认值,所以我认为这是一种更清晰、更简单的定义可选参数的方法。我真正想知道的是两件事:1.如果我们可以用这种方式定义可选参数(目前还不能)2.如果有人能解释一下模块级函数是什么意思,那就太好了?我真的很感谢以上的回答和评论!非常感谢
f(a,b,c=None,d='balabala')
3条答案
按热度按时间bwitn5fc1#
这是你要找的吗?
nzkunb0c2#
1.“* 是否可以使用这种方式定义可选参数(目前没有)*”
方括号符号不是python语法,它是巴科斯-诺尔形式-它只是一个文档标准。
1.模块级函数是在模块(包括
__main__
)中定义的函数-这与在类(方法)中定义的函数形成对比。41zrol4v3#
到目前为止,我仍然没有得到一个预期的答案。最初,当我看到
open(name[, mode[, buffering]])
这种表达方式时,我很想知道这是什么意思。它显然是可选参数的意思。当时,我发现这可能是一种不同的方式(不同于像f(a,b,c=None,d='balabala')
这样的正常方式)定义一个带有可选参数的函数而不是只告诉我们它的可选参数。这样写的好处是可以帮助我们使用可选参数,但没有默认值,所以我认为这是一种更清晰、更简单的定义可选参数的方法。我真正想知道的是两件事:1.如果我们可以用这种方式定义可选参数(目前还不能)2.如果有人能解释一下模块级函数是什么意思,那就太好了?我真的很感谢以上的回答和评论!非常感谢