var1 = "plzHalp"
cmd = input("> ")
subcmd = cmd.split(" ")
if subcmd[0] == "set" and subcmd[1] in setL:
    secondOp = subcmd[1]
    cmdVar = subcmd[2]
    eval(subcmd[1]) = subcmd[2]
    print("[Set",secondOp,"==>",cmdVar)

Apa yang saya ingin ini lakukan, adalah menetapkan bagian kedua dari sub-perintah (subcmd[1]) dan mengubah variabel yang sudah dibuat sebelumnya ke bagian ketiga (subcmd[2]). Misalnya. jika perintahnya adalah "set var1 fixedYay" maka var1 akan sama dengan "fixedYay".

0
Marcus Weinberger 20 November 2017, 21:50

1 menjawab

Jawaban Terbaik

Jika saya memahami pertanyaan Anda dengan benar, Anda perlu mengganti eval(subcmd[1]) dengan globals()[subcmd[1]]. Lihat contoh di bawah ini dan bacalah fungsi globals() dan locals() .

C:\Users\nagul>python                                                                                 
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:16:59) [MSC v.1900 32 bit (Intel)] on win32        
Type "help", "copyright", "credits" or "license" for more information.                                
>>> var1='plzHalp'                                                                                    
>>> var1_str='var1'                                                                                   
>>> print(globals()[var1_str])                                                                        
plzHalp                                                                                               
>>> globals()[var1_str]='fixedYay'                                                                    
>>> print(var1)                                                                                       
fixedYay                                                                                              
>>>  
0
nagul 20 November 2017, 21:30