Portál AbcLinuxu, 8. května 2025 20:00

Dotaz: Python a nazvy systemovych promennych

24.8.2015 20:19 Lenka
Python a nazvy systemovych promennych
Přečteno: 433×
Odpovědět | Admin
Dobry vecer. Chtela bych se zde zeptat, zda v Pythonu existuje nejaka systemova promenna jejiz nazev obsahuje pouze velka pismena. Nemuzu to nikde najit, Dekuji Lenka

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.8.2015 22:14 NN
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Odpovědět | | Sbalit | Link | Blokovat | Admin
Environment variables
25.8.2015 12:11 pb
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co je systémová proměnná? V proměnných prostředí (os.environ) samozřejmně může být cokoliv, a pár jich využívá python interpreter, jak píše NN.

Jestli myslíte symboly, které máte definované, když se spustí python, tak to asi spíš ne, ale i to se dá ovlivnit nějakým nastavením prostředí (site.py).

Pokud to není kvízová otázka, tak spíš napište co řešíte, a třeba k něčemu dojdeme.
25.8.2015 13:51 Lenka
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Kvízová otázka to není, ale nevím jak pojmenovávat bezpečně názvy proměnných, abych nepřepsala nějakou vyhrazenou systémem. Napadla mě možnost, psát názvy proměnných pouze velkými znaky ale to je patrně taky špatně :-( L.
25.8.2015 14:47 NN
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Tak pokud by jsi chtela vedet vsechna rezervovana slova..
25.8.2015 15:06 pb
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Aha. Názvy proměnných rozhodně nemají být velkými písmeny.

Přečtěte si nějaký style-guide, např. http://www.pocoo.org/internal/styleguide/ a snažte se jej dodržovat. Pokud máte rozumný textový editor, bude mít nějaký plugin na kontrolu PEP 8. To pomůže. (dodržovat style-guide se může zdát ze začátku podružné, ale jakmile si jednou na něco zvyknete, tak se to těžko mění, kromě toho, lidé budou mnohem ochotněji odpovídat na dotazy, když budou rozumět tomu, co čtou)

"Systémové" symboly většinou začínají __ (2x podtržítko). Je dobré podívat se na built-ins (https://docs.python.org/2/library/functions.html), a vyhnout se jim, ikdyž třeba pro id z databáze běžně používám proměnnou id. Kromě toho si dejte pozor na moduly obsažené ve std. knihovně (sys, os, socket, math, pickle, ...) Pokud nazvete proměnnou např. sys, tak Vám způsobí import sys problémy, ale zase to snadno a brzo poznáte. Kdybyste dělala modul/knihovnu, tak je taky dobře dát pozor na systémové, nebo rozšířené knihovny. Mě se jednou povedlo nazvat projekt turtle.

Vpodstatě bych řekl: nebojte se toho. Nezbude než počkat, až získáte nějakou praxi.
xxxxxx avatar 25.8.2015 17:59 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Dopuručuji vyzkoušet pylint:
$ python3-pylint nejaky_skript.py
a v hláškách se objeví např.:

Redefining built-in 'list' (redefined-builtin)

protože jsem si pojmenoval proměnnou:
list = 'ahoj'
25.8.2015 18:51 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
  • Názvy proměnných (resp. objektů) se píší pouze malými písmeny, viz camelCase.
  • Názvy tříd se píší s počátečním velkým písmenem, viz PascalCase.
  • Názvy konstant se píší pouze velkými písmeny, viz UPPER_CASE.
  • Názvy databází, jejich tabulek a sloupců se píší pouze malými písmeny, viz snake_case.
  • Za vyhrazeným (klíčovým) slovem se vždy píše mezera.
Je potřeba se pouze vyhýbat rezervovaným slovům, viz výše. Není jich mnoho a i když některé z nich omylem použiješ, interpretr tě patřičně seřve, abys ho změnila.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Řešení 1× (divbyzero)
27.8.2015 18:36 divbyzero | skóre: 6
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Proč nezkusit, zda požadovaný řetězec není již systémová proměnná a podle toho se zařídit?
import os


def isSystemVariable(variable):
    if os.environ.get(variable): return True
    else: return False


print(str(isSystemVariable("foo")) #false

print(str(isSystemVariable("computername")) #true
27.8.2015 21:01 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Proč mě vůbec nenapadlo, že by se Lenka mohla ptát zrovna na tohle? Odpověď je to sice správná, ale nejsem si jist, jestli i otázka byla položena správně. To ví snad jen Lenka, která by mohla otázku doplnit o problémy, které ji vedly k položení otázky.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
27.8.2015 22:48 divbyzero | skóre: 6
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Proč mě vůbec nenapadlo, že by se Lenka mohla ptát zrovna na tohle? Odpověď je to sice správná, ale nejsem si jist, jestli i otázka byla položena správně. To ví snad jen Lenka, která by mohla otázku doplnit o problémy, které ji vedly k položení otázky.
"... ale nevím jak pojmenovávat bezpečně názvy proměnných, abych nepřepsala nějakou vyhrazenou systémem"

;)
27.8.2015 23:41 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Ak je skutočne reč o systémových premenných, tak si s nejakými konfliktami hlavu robiť nemusí. Zmenená premenná prostredia má vplyv len na proces, ktorý ju zmenil a jeho deti. Zvyšku systému je to fuk.
27.8.2015 23:42 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Python a nazvy systemovych promennych
Ano, to je ukázka chybně napsané otázky, na kterou jsi napsal správnou, ale pro ni nepoužitelnou odpověď. Evidentně chtěla něco úplně jiného, jen to nedokázala popsat.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.