带有args的函数和适用于Python 2.x和3.x的默认kwargs

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

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

在python 3.4中可以正常工作,但是SyntaxError由于args和默认kwarg的顺序在python 2.7中抛出如果我将其更改为:

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

根据这篇文章,它可以在python 2.7中工作,并且在python 3.4中不会引发错误,但是,fields无论我传入什么内容,它总是以空元组结尾。我这样称呼它:

table.create_index('address')

有什么方法可以定义与两个版本兼容的args和默认kwargs函数?

威姆

可悲的是,在Python 2中,您无法*args同时填充,同时也忽略了可选的命名参数。正是为了这个目的,您正在使用的功能是在Python 3中添加的。

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

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

它强迫您提供name按名称,但是您的原始python 3接口似乎已经要求这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

适用于python 2.x和3.x的可移植ctypes.c_char_p

来自分类Dev

jQuery延迟适用于jQuery v1.x和v2.x,但不适用于v3.x

来自分类Dev

适用于笔记本电脑的台式机Linux发行版(带有带1x VGA和2x Display Port的扩展坞)

来自分类Dev

适用于.NET3.5和Python3.x的.NET编译Python

来自分类Dev

适用于.NET3.5和Python3.x的.NET编译Python

来自分类Dev

添加没有 1x 版本的 @2x 和 @3x 图片

来自分类Dev

Python 2.x和3.x中的有效语法是否引发异常?

来自分类Dev

获取设备图像比例(例如@ 1x,@ 2x和@ 3x)

来自分类Dev

@ 2x,@ 3x和@ 4x图像的媒体查询

来自分类Dev

Spirit V2和X3的状态

来自分类Dev

无法在Python 2.x和Python 3.x中导入turtle模块

来自分类Dev

Python 2.x和Python 3.x的脚本不兼容

来自分类Dev

Python 2.x和Python 3.x之间的生成器评估差异

来自分类Dev

Python 3.x 和 Python 2.x 在 while 循环中的区别

来自分类Dev

Redmine 3.x和2.x版本之间有什么区别

来自分类Dev

为什么只有Matrix3x2和Matrix4x4?

来自分类Dev

处理Python 2.x和3.x中的缓冲区

来自分类Dev

python 2.x和3.x之间的多线程开销差异

来自分类Dev

Python 2.x和3.x中输入命令之间的差异

来自分类Dev

python 2.x和3.x中的正则表达式unicode

来自分类Dev

为Python2.X和3.X设置Django环境?

来自分类Dev

处理Python 2.x和3.x中的缓冲区

来自分类Dev

在Windows中访问Python2.x和3.x

来自分类Dev

Spring(适用于Android)和Jackson2:将PUT作为application / x-www-form-urlencoded

来自分类Dev

暂停和恢复不适用于ASUS X54CBBK3

来自分类Dev

忘记密码不适用于.NET Core 3.x和React支架

来自分类Dev

暂停和恢复不适用于ASUS X54CBBK3

来自分类Dev

ggplot2:经典图,带有用于x和y轴的黑色标签

来自分类Dev

如何上传适用于Python 2和3的通用Python轮子?

Related 相关文章

  1. 1

    适用于python 2.x和3.x的可移植ctypes.c_char_p

  2. 2

    jQuery延迟适用于jQuery v1.x和v2.x,但不适用于v3.x

  3. 3

    适用于笔记本电脑的台式机Linux发行版(带有带1x VGA和2x Display Port的扩展坞)

  4. 4

    适用于.NET3.5和Python3.x的.NET编译Python

  5. 5

    适用于.NET3.5和Python3.x的.NET编译Python

  6. 6

    添加没有 1x 版本的 @2x 和 @3x 图片

  7. 7

    Python 2.x和3.x中的有效语法是否引发异常?

  8. 8

    获取设备图像比例(例如@ 1x,@ 2x和@ 3x)

  9. 9

    @ 2x,@ 3x和@ 4x图像的媒体查询

  10. 10

    Spirit V2和X3的状态

  11. 11

    无法在Python 2.x和Python 3.x中导入turtle模块

  12. 12

    Python 2.x和Python 3.x的脚本不兼容

  13. 13

    Python 2.x和Python 3.x之间的生成器评估差异

  14. 14

    Python 3.x 和 Python 2.x 在 while 循环中的区别

  15. 15

    Redmine 3.x和2.x版本之间有什么区别

  16. 16

    为什么只有Matrix3x2和Matrix4x4?

  17. 17

    处理Python 2.x和3.x中的缓冲区

  18. 18

    python 2.x和3.x之间的多线程开销差异

  19. 19

    Python 2.x和3.x中输入命令之间的差异

  20. 20

    python 2.x和3.x中的正则表达式unicode

  21. 21

    为Python2.X和3.X设置Django环境?

  22. 22

    处理Python 2.x和3.x中的缓冲区

  23. 23

    在Windows中访问Python2.x和3.x

  24. 24

    Spring(适用于Android)和Jackson2:将PUT作为application / x-www-form-urlencoded

  25. 25

    暂停和恢复不适用于ASUS X54CBBK3

  26. 26

    忘记密码不适用于.NET Core 3.x和React支架

  27. 27

    暂停和恢复不适用于ASUS X54CBBK3

  28. 28

    ggplot2:经典图,带有用于x和y轴的黑色标签

  29. 29

    如何上传适用于Python 2和3的通用Python轮子?

热门标签

归档