Zárások pythonban

Időről időre, különböző forrásokban, itt vannak olyan kódok:

Mi ez? Jellemzően a belső_func függvénynek ezt a definícióját zártnak nevezzük - egy funkciót definiáltunk egy másik (külső) függvényen belül, és a külső függvényt körülvéve.

És miért van rá szükség? Melyek a lezárások?

  • Keménykódolt állandók eltávolítása
  • A globális változók kiküszöbölése a kódban
  • A TOE végrehajtása

Minden hűvösnek tűnik, de ismét nem egyértelmű: "sho tse takie" oo. Úgy néz ki, mint egy díszítő definíció, visszaküldi a funkciót. A nem-ee érthető. Úgy tűnik számomra, hogy az összetévesztés azért jön létre, mert a bezártságok általánosan elfogadott észlelése az eredetüktől elszigetelve van. Ha a "Számítógépes programok felépítése és értelmezése" című könyvhez fordulunk, akkor ott találjuk a bezárás nagyon egyszerű fogalmát:

Általánosságban elmondható, hogy az adat objektumok egyesítésének működése rendelkezik zárási tulajdonsággal abban az esetben, ha az összekapcsoló objektumok eredményeit ezzel a művelettel maguk is ugyanazon művelet

Most a fenti kód nem okozhat panaszt. Világosan illeszkedik a meghatározáshoz. Ugyanakkor e meghatározásból világossá válik, hogy a "bezárás" fogalma sokkal szélesebb. Például a lista. A listán szereplő elemek listák is lehetnek, ami a SICP értelemben vett lezárás. Csak a kúpos környezetben nem fogadják el ezt a figyelmet, és nincs különösebb értelme. Az objektummódszerek szintén záródnak. Az önálló objektumhoz képest zárva vannak, amelyet mindig az első érv ad át.

A lezárások alkalmazása

A Python-i bezárás alkalmazásával minden nap találkozol. Ezek a funkciók és osztályok, listák, elvek stb. Módszerei és díszítői. Vegyünk egy példát a dekoráció formájában levő zárásra, amely megvizsgálja, hogy a HTTP-módszer hogyan érkezett a nézetbe a Django keretrendszerben. A következőképpen működik: ellenőrizzük a módszert, ha a módszer engedélyezett, akkor végrehajtjuk a nézetet, ha nem szabad kivételt adni:

És végül

Van egy árnyalat. Python-ban a zárt változók csak olvashatóak. Ennek a korlátozásnak a megkerüléséhez le kell zárnia a konténertípus változóit: listákat, sorokat stb. A zárt változókat nem lehet felülírni, de a tartály tartalmát - kérem.

Erősen felmelegíti a fejét a bezárásokról. A nyelvi fejlesztők már mindent elgondoltak. Különösen átláthatóvá tették alkalmazását a programozók számára. De a szent funkciók ismerete segíteni fog abban, hogy jobban érzi magát, és jobban megértse a python kód viselkedését.

Kövesse publikációinkat, és többet megtudhat a Python szent jellegzetességeiről, ami kiemelkedő Python programozóvá teheti Önt! ^ __

Kapcsolódó cikkek