没有默认值的可选参数

8
Python文档中关于参数的定义如下:

参数 - 函数(或方法)定义中的一个命名实体,它指定函数可以接受的一个或多个参数(或在某些情况下,多组参数)... 参数可以指定可选参数和必需参数,以及一些可选参数的默认值。

纯粹出于好奇,我想知道为什么会包含some这个词。是否可能有一个没有默认值的可选参数?

7
*args**kwargs 是没有默认值的可选参数。 - Pranav Hosangadi
@Pranav 请不要在评论中发布答案。如果您将其作为答案发布,我会点赞 :) 您甚至不需要添加任何内容。 - wjandrea
3个回答

4

在最近的版本中,可以以多种方式定义函数参数。以下是如何定义和调用它们:

def fun(a, b, c='foo'):
    ...
fun(1, 2)
fun(1, 2, 'bar')
fun(1, b=2)
fun(1, b=2, c='bar')
fun(a=1, b=2, c='bar')

其中ab位置或关键字参数,而c是可选的位置或关键字参数

或者

def fun(a, b, *, c, d='foo'):
    ...
fun(1, 2, c='bar')
fun(1, b=2, c='bar', d='baz')
fun(a=1, b=2, c='bar', d='baz')

其中ab位置或关键字参数,c是一个必需的关键字参数,d是一个可选的关键字参数

或者

def fun(a, b, /, c, *, d, e='foo'):
    ...
fun(1, 2, 3)
fun(1, 2, c=3)
fun(1, 2, c=3, d='bar')

ab位置参数c位置或关键字参数d必需的关键字参数,e可选的关键字参数。


说到这一点,为每个示例使用不同的参数名称可能会更清晰:def fun(a, b, c='foo')def fun(d, e, *, f, g='foo')def fun(h, i, /, j, *, k, m='foo'),跳过l因为它是一个糟糕的名称 - wjandrea

2
< p > * 前缀表示“任意数量的位置参数”,并且以它为前缀的参数可以声明而不带默认值。单词“some”与此相关,您无需为所有可选参数提供默认值。< /p >

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接