Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Autor | Správa |
---|
Registrovaný: 02.01.16 Prihlásený: 15.08.18 Príspevky: 6 Témy: 2 | 2 Bydlisko: Myjava |
Zdravím, učím sa posledné týždne python a narazil som na problém.Myslel som si, že viem čo slovo import robí v pythone no očividne nie.Tu je môj chybný predpoklad čo slovo import vykoná v takomto prípade. Ak napr do jedného súboru(skuska2.py) dám naimportovať funkciu z modulu skuska.py Kód: from skuska import napise_slovo
napise_slovo()
v module skuska.py je takyto kod: Kód: slovo = "dom"
def napise_slovo(): print(slovo)
tak je to take iste ako keby som napisal v subore skuska2.py toto: Kód: def napise_slovo(): print(slovo)
napise_slovo()
Teda ak by som chcel tento súbor spustiť a funkcia napise_slovo by sa skúsila vykonať malo nastať chybové hlásenie o tom, že premenná slovo nie je definovaná.Ale keď ho spustím tak vypíše hodnotu na ktorú premenná slovo odkazuje teda vypíše "dom" ale táto premenná odkazuje na hodnotu "dom" v inom súbore, teda nie v tom kde spušťam funkciu napise_slovo.Takže nechápem ako premenná slovo "vie", že má hodnotu "dom" v tom súbore odkial som importoval len tú funkciu. Ďakujem za prípadnú odpoveď.
|
|
Registrovaný: 21.09.13 Prihlásený: 21.12.24 Príspevky: 2111 Témy: 77 | 77 Bydlisko: Považská By... |
Python moc nerobim ale import ti naimportuje len obsah funkcie napise_slovo() teda len Kód: print(slovo) preto chyba že premenna slovo nie je definovaná, skus: Kód: def napise_slovo(): slovo = "dom" print(slovo)
_________________ Nesnívaj svoj život, ale ži svoj sen. |
|
Registrovaný: 02.01.16 Prihlásený: 15.08.18 Príspevky: 6 Témy: 2 | 2 Bydlisko: Myjava |
Tá chyba,že premenná slovo nieje definovaná tú som len očakával, že nastane.Teda myslel som si, že nastane to čo si napísal.Ale keď som spustil ten kód(nižšie) tak som nedostal chybové hlásenie, ale kód sa vykonal a vypísal dom.Tomu práve nerozumiem odkial tá funkcia "vie", že slovo = "dom". Kód: from skuska import napise_slovo
napise_slovo()
|
|
Registrovaný: 21.09.13 Prihlásený: 21.12.24 Príspevky: 2111 Témy: 77 | 77 Bydlisko: Považská By... |
Jaj, maš tam from skuska, takže najskôr načita cely subor skuska.py. // Spojený príspevok Sob 02.01.16 20:06Niesom moc v pythone zbehlý, ale ak chceš aby importovalo len napise_slovo() tak použi na miesto Kód: from skuska import napise_slovo toto Kód: import skuska.napise_slovo
_________________ Nesnívaj svoj život, ale ži svoj sen. |
|
Registrovaný: 02.01.16 Prihlásený: 15.08.18 Príspevky: 6 Témy: 2 | 2 Bydlisko: Myjava |
Mohol by si mi trochu viac popýsať čo sa deje keď sa načíta najskôr celý súbor skúška?
|
|
Registrovaný: 21.09.13 Prihlásený: 21.12.24 Príspevky: 2111 Témy: 77 | 77 Bydlisko: Považská By... |
pop íProste to "prečíta" celý súbor skuska.py, takže je vpodstate jedno či napíšeš from skuska import napise_slovo alebo Kód: slovo = "dom"
def napise_slovo(): print(slovo) to import "povie" programu že ak niečo z toho suboru bude potrebovať tak to je funkcia napise_slovo a funkciu bude držať v pamäti, zvyšok "zahodí".
_________________ Nesnívaj svoj život, ale ži svoj sen. |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Ak by to from import fungovalo tak, ako píšeš, tak by importované funkcie, premenné, ... nemohli využívať nič z tej knižnice.
Čo ti bráni pridať tej funkcii napise_slovo parameter, ktorý bude obsahovať to, čo sa má napísať?
PS: Napr. aj v C/C++ to funguje tak, že funkcia vidí aj lokálne premenné, funkcie, ... takže to správanie Python nie je neobvyklé.
|
|
Registrovaný: 02.01.16 Prihlásený: 15.08.18 Príspevky: 6 Témy: 2 | 2 Bydlisko: Myjava |
Nebráni mi nič napísať celý ten kód do jedného súboru, alebo dať parameter do tej funkcie. Ide mi o to, že jednoducho chcem vedieť prečo nastane to čo nastane. Jediný programovací jazyk s akým som mal doteraz skúsenosti bol pascal(veľmi malé skúsenosti) a tak mi to prirovnanie k C/C++ moc nehovorí. Citácia: Králiček To import povie" programu že ak niečo z toho suboru bude potrebovať tak to je funkcia napise_slovo a funkciu bude držať v pamäti, zvyšok "zahodí".
Nechcem dávať hlúpe otázky, len sa tomu snažím porozumieť.Z tohoto čo si napísal som pochopil, že zoberie teda len tú funkciu a zvyšok "zahodí", ale keď zvyšok "zahodí" ako teda "vie", že slovo = "dom"?
|
|
Registrovaný: 19.03.07 Prihlásený: 25.12.24 Príspevky: 7076 Témy: 85 | 85 Bydlisko: BA |
[DOMYSLAM SI] Ja tomu proste rozumiem tak, ze importovana funkcia vidi svoje lokalne premene. Tj. funkcia z daneho py suboru dokaze vyuzivat lokalne premene a funkcie z daneho suboru nariek tomu ze ty, ako uzivatel, by si inu funkciu z toho suboru nemal vediet zavolat. Ale nemam to oskusane. Vyznam by to mohlo mat taky, ze mozes nastavit "defaultne hodnoty" pre svoju funkciu, pokial nema rozumne naplnenen parametre. [/DOMYSLAM SI]
_________________ Desktop: CPU AMD R7 1700x @ 3.85GHz | Cooling be quiet! Dark Rock Pro 4 | MB ASRock X470 Taichi Ult. | RAM 4x8GB DDR4 G-SKILL TridentZ RGB 3000 CL16-16-16-36 | VGA Powercolor VEGA56 + Raijintek Morpheus II | SSD Crucial MX300 525GB | HDD Seagate Ironwolf 3TB 5900rpm | PSU CORSAIR RM750X | MONITOR AOC Q3279VWFD8 | MOUSE HyperX Pulsefire FPS + Razer eXactMat | HyperX Alloy FPS Brown | HyperX Cloud | ARCH x64 & Notebook: DELL inspiron 7537 i7 4500U, 16GB RAM, nv750, FHD IPS,Crucial M4 128GB | ARCH x64 & Surface Go 8/128 & Mobil: LG v40 ThinQ (2018) & SBC: Raspberry pi 0 | 3B+ & Headphones: Senheiser HD58X | AKG K551 + detachable cable mod | Linsoul TIN T2 | KZ SZN |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Aj v Pascal to funguje presne tak isto (a teda, funkcia vidí premenné a funkcie, ktoré boli definované v rovnakom module).
|
|
Registrovaný: 02.01.16 Prihlásený: 15.08.18 Príspevky: 6 Témy: 2 | 2 Bydlisko: Myjava |
Takže v jednoduchosti povedané, ak tú funkciu naimportujem do iného súboru tak je schopná využívať tie premenné ktoré boli definové tam odkiaľ som tú funkciu importoval (teda ako keby si ich zobrala zo sebou, alebo bola na ne schopná odkazovať)? (Ten Pascal som asi nemal spomínať, keďže moje skúsenosti v Pascale nedosahujú ani na používanie funkcií).
|
|
Registrovaný: 21.09.13 Prihlásený: 21.12.24 Príspevky: 2111 Témy: 77 | 77 Bydlisko: Považská By... |
Ano. Import preberie vsetky premenne dane vo funkcii.
_________________ Nesnívaj svoj život, ale ži svoj sen. |
|
Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v HTML, XHTML, XML, CSS | 13 | 1106 | 16.09.2008 23:27 exot | | v PHP, ASP | 5 | 882 | 27.04.2011 22:33 shaggy | | v Databázy | 2 | 896 | 10.05.2008 14:08 johny694 | | v PHP, ASP | 1 | 1529 | 10.05.2007 20:26 zero0x | | v Ostatné | 1 | 1108 | 06.06.2011 12:54 Blackshadow | | v Smartfóny a tablety | 6 | 538 | 26.09.2011 19:17 haffen | | v Ostatné | 0 | 422 | 13.04.2016 15:44 martinius96 | | v Sieťové a internetové programy | 0 | 561 | 27.08.2009 7:48 scd | | v Redakčné systémy | 0 | 674 | 09.09.2016 16:47 Hamaid | | v PHP, ASP | 24 | 1271 | 25.07.2012 20:01 DeiForm | | v Databázy | 2 | 384 | 17.03.2013 17:00 flip | | v Ponuka práce | 2 | 997 | 15.03.2009 18:24 Spirit | | v Assembler, C, C++, Pascal, Java | 1 | 342 | 10.03.2016 16:06 XOLOO | | v Sieťové a internetové programy | 5 | 766 | 14.08.2007 11:44 spipo | | v Audio programy | 3 | 486 | 07.06.2013 12:33 Lukoto | | v Perl, Python, Ruby, CGI | 12 | 957 | 02.07.2021 8:41 void |
|