在不知道其名称的情况下获得第一个通过的 kwarg 的 Pythonic 方法?

ruo*_*ola 3 python keyword-argument python-3.x

我有一个函数,它有这样的签名:

def func(**kwargs):
Run Code Online (Sandbox Code Playgroud)

该函数的用户将使用零个或一个关键字参数调用该函数。如果他通过一个参数,该名称将是foo_idbar_idbaz_id等,但我不知道他会用的确切名称。传递的参数的值将是一些整数。我仍然想获取该参数的值并使用它。

目前我正在这样做,但我想知道是否有更清洁的方法来实现这一目标:

def func(**kwargs):
    if kwargs:
        target_id = list(kwargs.values())[0]
    else:
        target_id = None

    # use target_id here, no worries if it's None
Run Code Online (Sandbox Code Playgroud)

我使用的是 Python 3.8,所以向后兼容性不是问题。

Ale*_*gin 5

我们到了

def func(**kwargs):
    target_id = next(iter(kwargs.values()), None)

    print(target_id)


func(name_id='name')
func(value_id='value')
func(test_id='test')
func()

Run Code Online (Sandbox Code Playgroud)

输出

python test.py
name
value
test
None
Run Code Online (Sandbox Code Playgroud)

  • 由于旧版本中字典的排序方式。或者不在其中 (2认同)