[英]exec() for multi-line string
这有效:
s = "for x in range(5):" \
"print(x)"
exec(s)
如何将if
语句添加到该动态代码中,例如:
s = "for x in range(5):" \
"if x>2:" \
"print(x)"
exec(s)
上面给出了错误:
...
for x in range(5):if x > 2:print(x)
^
SyntaxError: invalid syntax
问题是字符串中的代码缺乏适当的缩进。 一个简单的方法是将正确格式化的代码包含在三引号字符串中。
s = """
for x in range(5):
if x>2:
print(x)
"""
exec(s)
s = "for x in range(5):\n\t" \
"if x > 2:\n\t\t" \
"print(x)"
exec(s)
这将解决您的问题。 出现错误的原因是忽略了 python 缩进规则,因此您需要使用\t
处理它们。
请注意, \
只是 python 允许在“新行”处以视觉方式继续相同声明的方式。 所以在实践中,
s = "for x in range(5):" \
"if x>2:" \
"print(x)"
等于
s = "for x in range(5):if x>2:print(x)"
您将需要添加实际的换行符和制表符以使语法有效,例如:
s = "for x in range(5):\n\tif x>2:\n\t\tprint(x)"
请注意,如果将\
与上述内容结合起来,并将\t
与空格交换,则可以使其更具可读性,从而导致:
s = "for x in range(5):" \
"\n if x>2:" \
"\n print(x)"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.