Kod pertama:
# -*- coding:gb2312 -*-
def test(a,b,funC):
result = funC(a,b)
return result
funC = eval(input("请输入函数"))
num = test(11,22,funC)
print(num)
Anda boleh memasukkan fungsi tanpa nama seperti lambda x,y:x+y dalam input.
Sekarang saya rasa terlalu menyusahkan untuk memasukkan lambda x,y:x+y: secara langsung Apabila memasukkan, masukkan bahagian x+y, jadi saya meletakkan Tukar kod kepada yang berikut:
Kod kedua:
# -*- coding:gb2312 -*-
def test(a,b,funC):
result = funC(a,b)
return result
funA = eval(input("请输入函数"))
funB = "lambda x,y:"
funC = eval(funB)+funC
num = test(11,22,funC)
print(num)
Selepas menukar kepada:
Hasilnya ialah ralat berikut.
Saya tidak faham semuanya sekaligus, saya tidak tahu apa maksudnya.
Saya ingin bertanya, kenapa saya tidak boleh mengubahnya seperti ini?
Dalam sekeping kod pertama:
funC = eval(input("请输入函数")) #运行时输入:lambda x,y:x+y
dan dalam kod kedua:
funA = eval(input("请输入函数")) #运行时输入:x+y
funB = "lambda x,y:"
funC = eval(funB)+funC
Bukankah kedua-dua keping kod ini sepatutnya bersamaan?
Mengapa yang pertama boleh dilaksanakan dengan lancar tetapi yang terakhir akan melaporkan ralat?
Kod kedua hendaklah:
Apa yang anda masukkan bukan fungsi, bukan fungsi, bukan fungsi. Fungsi eval adalah untuk melaksanakan rentetan yang anda masukkan sebagai kod python
Dua mata: