[英]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.