簡體   English   中英

exec() 用於多行字符串

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM