Zdravím, velmi pěkný článek (přečetl jsem zatím půlku), jen bych se chtěl autora zeptat, zda je nutné `from x import *`, člověk se pak neorientuje (pokud takto naimportujete 2-3 člověku neznámé knihovny), která funkce patří k jaké knihovně. Jednoduché `import pylab as pl` a `import import gsim as gs`, pokud by chtěl autor zkrátit co nejvíce text, by byly příhodnější. Alespoň to je můj názor. Obecně `from x import *` dělá věci nepřehledné a i nebezpečné.
Souhlasím s @m. Jak už jsem psal, Pokud bych chtěl veškerý kód napravit, musím napřed zjistit, jaké všechny funkce jsou vlastností jaké knihovny, nebo byly objekty vytvořeny v průběhu, nebo jsou to defaultní funkce Pythonu. Pro uživatele je to o dost práce navíc.
Jsem rád za tyto články, jsou super! Jen prosím příště nedělat tyto importy. Začátečníci neví, že se to "nemá" dělat, pokročilí to nevidí rádi.
Hodně štěstí, těším se na další :-)
Nebezpečný, to je trochu přitažené za vlasy. Spíš je to nepřehledný. Jinak scipy dělá podobně: `from numpy import *`, proč asi? https://github.com/scipy/scipy/blob/master/scipy/__init__.py
Pokud to dělá scipy, což je "knihovna sama o sobě", tak v tom nevidím problém. Když spustíte kód ve scipy, tak si může importovat co chce, protože hledíte jen na ty funkce. Tady se bavíme o trochu jiné věci, a to o kódu v "hlavním kódu". Pokud si udělám funkci s názvem `angle` nebo `show` a přitom použiji tento kód, tak budu mít s těmito funkcemi konflikt. Chápu, že ne každý dělá své funkce `setPAR` nebo `gSim`, ale ten `angle` už není tak nepravděpodobný. Třeba má člověk vlastní knihovnu, kterou importuje * a jedna z funkcí je tam toto.
Prostě a jednoduše - člověk by se měl hned od začátku učit, jak kontrolovat toto prostředí a mít v tom přehled. Neexistuje prakticky jediný důvod, proč to tak nedělat.
Napadá mě snad jen to, když si vytvořím vlastní knihovnu (kterou později importuji jako třeba `mylib`), která může interně využívat Scipy/Numpy/PyPlot a znám veškeré jejich funkce, tak to třeba importnu jako *. Ale i tak bych spíše udělal `from PyPlot import plot` a tak...