eval 與 repr
2024年10月9日大约 1 分鐘
在 Python 中,eval()
和 repr()
是兩個經常被用來處理字串與程式碼的內建函式。
eval()
函式
eval()
函式可以將字串當作 Python 表達式來執行,並返回其結果。
範例:
# 將字串當作表達式進行計算
expression = "2 + 3 * 4"
result = eval(expression)
print(result) # 14
注意事項:
eval()
非常強大,但也非常危險,因為它會執行字串中的任何 Python 程式碼,可能導致安全風險。使用時務必小心,不要在不信任的來源上使用。
repr()
函式
repr()
函式返回一個物件的字串表達式,這個字串通常可以使用 eval 函式返回原物件的形式。這在除錯和開發中非常有用。
範例:
x = 5
x_repr = repr(x)
print(x_repr) # '5'
# 對於字串,repr() 會顯示引號
s = "Hello, world!"
s_repr = repr(s)
print(s_repr) # "'Hello, world!'"
# 對於複雜的數據結構
lst = [1, 2, 3]
print(repr(lst)) # '[1, 2, 3]'
Quine(自我複製程式)
Quine 是指一個不接受任何輸入卻能夠輸出自己完整程式碼的程式。以下是一個有趣的程式範例,用來展示程式語言的自我描述能力。
Quine 範例:
quine = 'quine = {!r}\nprint(quine.format(quine))'
print(quine.format(quine))
輸出結果:
quine = 'quine = {!r}\nprint(quine.format(quine))'
print(quine.format(quine))
解釋:
- 這個 Quine 使用了
format()
函式和!r
,後者會將變數轉換為其repr()
形式(即字串形式),這樣就能實現完整的自我複製。 - 程式執行後會輸出自身的程式碼,這就是一個 Quine。
你能想出其他的 Quine 程式碼嗎?