Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于使用Python-Six模块的查询_Python_Python 2.7_Python 3.x_Six - Fatal编程技术网

关于使用Python-Six模块的查询

关于使用Python-Six模块的查询,python,python-2.7,python-3.x,six,Python,Python 2.7,Python 3.x,Six,我正在程序中使用该模块,代码如下: if six.PY2: do_something() else: do_something_else() 这种方法的问题是,由于依赖关系,只有当Python版本为3.4+时,函数do\u something\u else()才会运行。(且不在Py 3.3上) 我怎么检查这个 非常感谢!:) 您可以从中以元组的形式获取实际版本号。因此: 由于这是一个常见的要求,six已经提供了以下要求: six.PY34 如果Python版本大于或等于

我正在程序中使用该模块,代码如下:

if six.PY2:
    do_something()
else:   
    do_something_else()
这种方法的问题是,由于依赖关系,只有当Python版本为3.4+时,函数
do\u something\u else()
才会运行。(且不在Py 3.3上)

我怎么检查这个


非常感谢!:)

您可以从中以元组的形式获取实际版本号。因此:


由于这是一个常见的要求,
six
已经提供了以下要求:

six.PY34
如果Python版本大于或等于v3.4,则为真

所以你可以这样做:

if six.PY2:
    do_something()
elif six.PY34:   
    do_something_else()
else:
    # ...do what?

您是否在问如何检查Python是否为3.4版或更高版本?是的。我很想知道是否可以使用相同的六。如果你担心V.2与3的不同依赖关系,请考虑<代码>导入< /代码>可以放在I/EL子句下。如果条件:import something/else:import something\u other,然后使用元组的字典顺序:
sys.version\u info>=(3,4)
看起来他们从3.4开始就放弃了两位数的方案。我有v3.6,6.PY34是真的,但是PY35和PY36是未定义的,并且抛出AttributeError。因此,例如,如果F“…”字符串可用,则无法通过这种方式进行测试。@ddbug您无法测试F字符串是否可用,因为在导入时这将是一个语法错误。因此,您的示例并不好。我不理解您为什么在这里提到
import
,但是是的,if和else路径必须在编译时被实际的编译器版本理解。由于导入语句的语法在v2和3中基本相同,因此为v2和3导入不同的内容将起作用,导入语句将在运行时执行。@ddbug导入时出现错误,因为f字符串语法在Python 3.6之前的版本中无效。因此,您甚至无法使用Python 3.5导入包含f字符串的文件,更不用说使用if语句对其进行测试了。我想指出的是,当实际的py版本已知时,可以在运行时调用合适的导入。而且six.PYnn不是查询3.x版本的可靠方法,
six
只能区分py2和py3。即使这样,主文件/模块也不应该包含v2无法编译的内容。
if six.PY2:
    do_something()
elif six.PY34:   
    do_something_else()
else:
    # ...do what?