eval(expression, /, globals=None, locals=None)
expression: 字串
globals: 必須是一個 dictionary
locals: 可以是任何映射 (mapping) 物件
EX:
1 2 3 4 5 6 7 8 |
x = 1 print(eval('x + 1')) # 2 print(eval('3 * x')) # 3 print(eval('pow(2,2)')) # 4 x = 3 y = 4 print(eval("x + y")) # 7 |
EX: 比較 eval 與 exec
1 2 3 |
# eval僅可以執行單個表達式, exec可執行多個表達式 # print(eval('z = 3\nprint(z + 1)')) # SyntaxError: invalid syntax print(exec('z = 3\nprint(z + 1)')) # 4 |
EX: 動態修改PyQt
1 2 3 4 5 6 7 8 9 |
import random d = {"A": "_01_a_rb", "B": "_02_b_rb", "C": "_03_c_rb"} key_name = random.choice(list(d.keys())) rb_name = d.get(key_name) # 根據隨機選擇d中key,設置其pyqt checkbox為True(選取) eval("self." + rb_name + ".setChecked(True)") |