我想告诉用户应该使用哪个python版本:
import sys
assert sys.version_info >= (3, 6), "Use Python 3.6 or newer"
print(f"a format string")
但是,运行上述文件会产生语法错误:
$ python fstring.py. # default python is 2.7
File "fstring.py", line 3
print(f"a format string")
^
SyntaxError: invalid syntax
是否可以对每个文件执行此操作,而不在try块中包装所有f字符串
不,这在每个文件的基础上是不可能的,因为在执行任何文件之前,以及在检查任何断言之前,都会对整个文件进行解析
try
也不起作用,因为同样的原因唯一可行的方法是,通过将代码放入字符串并调用
eval
,将部分代码的解析推迟到运行时,但是。。。不要那样做。您有两个明智的选择:根本不使用f字符串,或者让它以SyntaxError
而不是您自己的自定义错误消息失败或者,如果您在Unix或Linux系统上工作,那么您可以将文件标记为可执行文件,并在开始时给它一个shebang行,如
#!/usr/bin/python3.8
,这样用户就不需要知道正确的版本来使用自己如果您想在每个模块的基础上进行此操作,请参见@Chris的答案
如果您正在编写模块,则可以通过模块的
__init__.py
来完成此操作,例如,如果您有foo_module/
__init__.py
foo_module/
foo.py
setup.py
其中
__init__.py
包含和
foo.py
包含例如:
相关问题 更多 >
编程相关推荐