python - 获取作为 *args 和 **kwargs 传递的值的名称

标签 python

我正在尝试获取子类函数的 args 或 kwargs 中可能存在也可能不存在的前缀值。

原函数:

def list(self, prefix='', delimiter='', marker='', headers=None):
    pass

子类化函数:

def list(self, *args, **kwargs):
    # get prefix from args[0] or kwargs['prefix']
    pass

我已经尝试过:

kwargs.get('prefix', args[0])

但如果没有传递参数,则会失败。

我已经尝试过:

prefix = ''

if len(args):
    prefix = args[0]

if 'prefix' in kwargs:
    prefix = kwargs['prefix']

if prefix != '':
    # Do something with the prefix

它可以工作,但不是很优雅。

还尝试寻找一种使用 kwargs 来 zip() args 的方法。有什么想法吗?

最佳答案

这个应该按预期工作:

def list(self, *args, **kwargs):
    prefix = kwargs.get('prefix', args[0] if args else '')

关于python - 获取作为 *args 和 **kwargs 传递的值的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20009882/

相关文章:

python - 具有多个应用程序的 Django 并重用相同的数据库表

python - 在 python 3 中从父类扩展 __init__ 的正确方法

python - 从 sqlite3 切换到 postgres 后 django 迁移失败

python - 如何使用 Python 打印多行文本

python - 找到字符串的精确匹配

python:添加到字典会出错

python - 如何计算列表的最小不公平总和

python - 在使用多个正则表达式分析单个字符串时,线程或多处理能否提高性能?

java - 如何在外部组件上发生事件时立即检测到该事件。不想投票,还有其他选择吗?

python - 多个groupby后如何将pandas数据从索引移动到列