Rumah  >  Soal Jawab  >  teks badan

Pemula Python bertanya tentang fungsi tanpa nama

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?

扔个三星炸死你扔个三星炸死你2685 hari yang lalu917

membalas semua(3)saya akan balas

  • 怪我咯

    怪我咯2017-06-13 09:26:43

    Kod kedua hendaklah:

    strA = input("请输入函数")
    strB = "lambda x,y:"
    funC = eval(strB+strA)

    Apa yang anda masukkan bukan fungsi, bukan fungsi, bukan fungsi. Fungsi eval adalah untuk melaksanakan rentetan yang anda masukkan sebagai kod python

    balas
    0
  • 滿天的星座

    滿天的星座2017-06-13 09:26:43

    Dua mata:

    # -*- coding:gb2312 -*-
    def test(a,b,funC):
        result = funC(a,b)
        return result
    
    funA = input("请输入函数") #这儿改成 input("请输入函数")
    funB = "lambda x,y:"
    funC = eval(funB)+funC   #这儿改成 eval(funB+funA)
    num = test(11,22,funC)
    print(num)

    balas
    0
  • phpcn_u1582

    phpcn_u15822017-06-13 09:26:43

    funC = eval("lambda x,y:" + input("请输入函数"))
    num = test(11,22,funC)
    print(num)

    balas
    0
  • Batalbalas