hoo*_*rEE 3 python version-detection f-string
我想通知用户他们应该使用哪个 python 版本:
import sys
assert sys.version_info >= (3, 6), "Use Python 3.6 or newer"
print(f"a format string")
Run Code Online (Sandbox Code Playgroud)
但是相反,运行上述文件会导致语法错误:
$ python fstring.py. # default python is 2.7
File "fstring.py", line 3
print(f"a format string")
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
是否可以按文件执行此操作,而无需将所有 f 字符串包装在 try 块内?
不,这在每个文件的基础上是不可能的,因为在执行任何文件之前对整个文件进行解析,因此在检查任何断言之前。try出于同样的原因,也不起作用。
这可能起作用的唯一方法是,如果您通过将代码放入字符串中并调用 将部分代码的解析推迟到运行时eval,但是...不要那样做。您有两个明智的选择:根本不使用 f 字符串,或者让它失败,SyntaxError而不是您自己的自定义错误消息。
或者,如果您在 Unix 或 Linux 系统上工作,那么您可以将文件标记为可执行文件并在开始时给它一个shebang行,#!/usr/bin/python3.8这样用户就不需要知道正确的版本来使用自己。
如果您想在每个模块的基础上执行此操作,请参阅@Chris 的回答。
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |