Portál AbcLinuxu, 13. května 2025 16:51
$$$ __builtins__.a=5 $$$ a # vypíše __builtins__.a 5 $$$ a=4 # přiřadí ale do globals()['a'], v tomto případě navíc locals()==globals() $$$ a # vypíše globals()['a'] 4Výsledek tedy je takový, že proměnné je "jen pro čtení" v tom smyslu, že když se pokusím přiřadit hodnotu a neuvedu explicitně __builtins__, pak proměnnou zastíním globální proměnnou: v současném interpreteru tedy budu vidět tu novou hodnotu z globals() a v ostatních tu z __builtins__. Guláš. Když budu chtít vytvořit proměnnou, pak před ni musím napsat __builtins__.něco, taky nic moc. Bohužel nevím, jak (pokud to vůbec jde) globals a __builtins__ sjednotit. Zkoušel jsem triky jako
globals=lambda: __builtins__.__dict__, ale bez úspěchu (globals() se zjevně interně pro nalezení proměnné nepoužívají. (Pochopitelně některé proměnné musejí být pro interpreter lokální, aby se mezi sebou vůbec rozlišily, ale těch bude nejspíš jen pár) Máte nějako nějaký nápad? Díky za něj.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.