Python 2.6没有';t在分析整个脚本之前抛出断言错误

Python 2.6没有';t在分析整个脚本之前抛出断言错误,python,assertion,Python,Assertion,在继续之前,我使用Python中的一个简单代码来断言新版本。代码如下:- import sys assert sys.version_info >= (3, 5) print(f"New formatting style") 通过Python 2.6解释器运行该代码将返回一个语法错误,如下所示:- File "test.py", line 3 print(f"New formatting style")

在继续之前,我使用Python中的一个简单代码来断言新版本。代码如下:-

import sys
assert sys.version_info >= (3, 5)
print(f"New formatting style")
通过Python 2.6解释器运行该代码将返回一个语法错误,如下所示:-

  File "test.py", line 3
    print(f"New formatting style")
                                ^
SyntaxError: invalid syntax

我期待着一个断言者。有解决办法吗?我的目标是显示一条用户友好的消息,表明Python版本不受支持。

我认为问题在于Python解释器在执行任何语句之前正在标记代码

一种解决方法是将工作者代码分离到不同的模块中,并在main.py中只添加一个警告

e、 g

导入系统 如果系统版本信息<(3,5): 打印(“对不起,需要Python 3.6或更高版本”) 系统出口(1) 其他: 导入MyCoreModule MyCoreModule.main()
我认为问题在于Python解释器在执行任何语句之前对代码进行标记

一种解决方法是将工作者代码分离到不同的模块中,并在main.py中只添加一个警告

e、 g

导入系统 如果系统版本信息<(3,5): 打印(“对不起,需要Python 3.6或更高版本”) 系统出口(1) 其他: 导入MyCoreModule MyCoreModule.main()
FWIW,f-strings是在Python3.6中引入的,因此断言应该是
>(3,5)
=(3,6)
无法在2.7.16上重现:无法在线找到任何Python2.6解释器,因为它可能太旧了。为什么要支持这么旧的Python版本?无论如何,请尝试打印sys.version\u info以查看它返回的内容。对于Python2.7及以下版本,字符串将不起作用。{.format}方法适用于Python2.7及以下版本。语法检查在字节码编译过程中发生-在执行(断言发生的地方)之前发生。FWIW,f字符串在Python3.6中引入,因此断言应该是
>(3,5)
=(3,6)
无法在2.7.16上复制:无法在线找到任何Python 2.6解释器,因为它可能太旧了。为什么要支持这么旧的Python版本?无论如何,请尝试打印sys.version\u info以查看它返回的内容。对于Python2.7及以下版本,字符串将不起作用。{.format}方法适用于Python2.7及以下版本。语法检查在字节码编译过程中发生-这发生在执行(断言发生的地方)之前。对于复杂的脚本,我当然会使用这种方法。谢谢Rob。对于复杂的脚本,我当然会使用这种方法。
import sys
if sys.version_info < (3, 5):
    print("Sorry requires Python 3.6 or greater")
    sys.exit(1)
else:
    import MyCoreModule
    MyCoreModule.main()