python - Python 2.x 和 3.x 的带有 args 和默认 kwargs 的函数

标签 python

我有一个 Python 类,其方法如下:

class Table(object):
    def create_index(self, *fields, name=None):
        ...

它在 Python 3.4 中工作正常,但在 Python 2.7 中抛出一个 SyntaxError,因为 args 和默认 kwarg 的顺序。如果我将其更改为:

def create_index(self, name=None, *fields):
    ...

根据 this post它在 Python 2.7 中工作并且在 Python 3.4 中不会抛出错误,但是,无论我传入什么,fields 总是以空元组结束。我这样调用它:

table.create_index('地址')

有没有什么方法可以用 args 和 default kwargs 定义一个与两个版本兼容的函数?

最佳答案

遗憾的是,在 Python 2 中,您不能在填充 *args 的同时还省略可选的命名参数。您正在使用的功能是在 Python 3 中添加的,正是为了这个目的。

这是我能想到的最佳解决方法:

def create_index(self, *fields, **kwargs):
    name = kwargs.pop('name', None)

它强制您按名称提供 name,但您原来的 python 3 接口(interface)似乎已经要求这样做了。

关于python - Python 2.x 和 3.x 的带有 args 和默认 kwargs 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36440371/

相关文章:

python - 基于距离的点列表排序函数

python - 用python解决迷宫

python - 在Python中的Xpath中选择标签之间的文本

Python:将/etc/services 文件导入字典

python:文件路径不再适用于 imp

python - scipy中的偏斜正态分布

python - 如何使用 Xpath 或 CSS 提取特定的 <li> 元素?

javascript - Flask 中的服务器端事件 (SSE) 不断推送,而不是根据请求推送

python - 如何在 Flask send_file() 或 send_from_directory() 之后运行代码

python - Flask TypeError : The view function did not return a valid response. 该函数要么返回 None 要么在没有返回语句的情况下结束