Pythonba ha van egy def egy másik defen belül, akkor az hogyan tud meghívni adatok a felsőbb def-ből?
Itt a programomból a bajos rész:
def Hozzaadas():
def Mappa():
Clear()
tk.Label(frame1,text="Mappa neve ").grid()
nev = tk.Entry(frame1)
nev.grid(row=0,column=1)
def ok():
global nev
global actual
actual.append({'nev': nev.get(), 'tipus': 'mappa', 'tartalom': []})
tk.Button(frame1,text="Mappa mentese",width='45',command=lambda: ok()).grid(row=2,columnspan=2)
Clear()
tk.Button(frame1, text="Mappa hozzaadasa", command=lambda: Mappa(), width='45').grid()
tk.Button(frame1,text='Jegyzet Hozzaadasa',command=lambda:Jegyzet(),width='45').grid()
A gond az, hogy nem tudom használni a ' global nev ' reszt, mert a nev is egy külsőbb functionon belül van. Bocsi ha nagyon rosszul fogalmaztam, válaszaitokat előre is köszönöm! :D
Nem tudom feltűnt-e, hogy:
1. A Python programok működése függ az indentálástól.
2. Amikor ide kiposztoltad a kódodat mindenféle indentálás eltűnt.
Ezeknek függvényében érdemes lenne újragondolni a kérdést.
Simán eléri a belső függvény a külső függvényben lévő változókat, amik előtte vannak:
def kulso_fuggveny():
___x = 1
___def belso_fuggveny():
______print(x)
___belso_fuggveny()
kulso_fuggveny()
>>> 1
A kódodat nem lehet indentálás nélkül értelmezni. (Továbbá az egymásba ágyazott függvénydefiníciók valószínűleg feleslegesek. Továbbá... fú...)
Bocs, félreértettem a kérdést. Egyik defből a másikba nem lehet változókat elérni. A függvény hívásánál (nem a definiálásnál!) lehet változókat globálissá tenni, amit aztán egy másik függvény egy későbbi hívás során láthat.
Pl.
def fuggveny1():
___global x
___x = 2
fuggveny2():
___print(x)
fuggveny1() -> ettől és ekkortól globális az x változó.
fuggveny2()
>> 2
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!