Python 方括号是什么意思;[]“是的;,在函数/类文档中是什么意思?

Python 方括号是什么意思;[]“是的;,在函数/类文档中是什么意思?,python,Python,我在计算csv.dictreader的参数时遇到困难,并意识到我不知道方括号表示什么 从文档中: class csv.DictReader(csvfile[, fieldnames=None[, restkey=None[, restval=None[, dialect='excel'[, *args, **kwds]]]]]) 我希望能总结一下类实例化的参数 谢谢方括号表示这些参数是可选的。你可以把它们排除在外 因此,在这种情况下,只需要将csvfile参数传递给csv.DictReader

我在计算csv.dictreader的参数时遇到困难,并意识到我不知道方括号表示什么

从文档中:

class csv.DictReader(csvfile[, fieldnames=None[, restkey=None[, restval=None[, dialect='excel'[, *args, **kwds]]]]])
我希望能总结一下类实例化的参数


谢谢

方括号表示这些参数是可选的。你可以把它们排除在外

因此,在这种情况下,只需要将
csvfile
参数传递给
csv.DictReader
。如果要传递第二个参数,它将被解释为
fieldnames
参数。第三个是
restkey
,等等

如果只想指定例如
cvsfile
方言
,则必须明确地命名关键字参数,如下所示:

csv.DictReader(file('test.csv'), dialect='excel_tab')

有关关键字参数的更多信息,请参阅python.org上的教程。

通常在api文档中,方括号表示可选。我认为他们在这里的意思是一样的。

为了重申其他人所说的,这些论点是可选的

如果省略可选部分,剩余的
字段名=
restval=
restkey=
方言=
关键字会告诉函数缺少哪些部分


语法并不建议这样做,但如果关键字允许以任何顺序指定参数,我也不会感到惊讶,除非最后两个参数必须同时指定或同时省略。

这实际上是广泛使用的符号的子集,用于明确描述语言语法,称为(详见维基百科文章)。

事实上,关键字参数可以按任何顺序指定。这是(部分)它们的吸引力。另外,函数使用
**kwargs
参数执行任意多个关键字参数,这是一个
dict
。正如您所知,
dict
对象不保持顺序。@pavium:如何指示最后两个参数都被指定或省略?它们都在一组括号内。T他的答案是正确的。我只想补充一件事。尽管cvs.DictReader使用关键字参数,但也可以使用带有默认值的非关键字参数。这些参数通常位于用C编写的内置函数中,如全局“range()”函数或“split()字符串上的“split”的文档给出了如下参数:S.split([sep,[,maxslit]])->字符串列表因此您可能认为这是可行的:“a b c d e f g”。split(maxslit=2)但是,遗憾的是,它没有。Python抛出了一个“TypeError:split()不接受关键字参数”异常。叹气。可选参数和默认参数之间有区别吗?def exampleFunc1(arg1,[arg2=2],[arg3=3]):和def exampleFunc2(arg1,arg2=2,arg3=3)之间有什么区别: Thanks@behindalens:在这两种情况下,
arg2
arg3
都可以省略,在这种情况下,它们的值将分别为
2
3
。可选参数可以有一个默认值。方括号嵌套这一事实有什么意义吗?@behindalens:它更清楚地表达了未命名的opti解释了可选参数。我认为未列出的版本可能意味着其他内容,即必须命名这些可选参数,因为没有明确的顺序(因此您必须编写例如
arg2=7
),但如果您问我:
exampleFunc1(arg1,[arg2=2,][arg3=3]),则第二个逗号应该在括号内:
(不过,也许这只是我的问题。)一般来说,我的建议是仔细阅读文档,如果有疑问,就编写一些测试代码。这就是我所做的:)相关:可能重复