Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 12 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.01.16
Prihlásený: 15.08.18
Príspevky: 6
Témy: 2
Bydlisko: Myjava
Príspevok NapísalOffline : 02.01.2016 17:53

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ď.


Offline

Užívateľ
Užívateľ
Python a import

Registrovaný: 21.09.13
Prihlásený: 22.04.24
Príspevky: 2111
Témy: 77
Bydlisko: Považská By...
Príspevok NapísalOffline : 02.01.2016 19:40

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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.01.16
Prihlásený: 15.08.18
Príspevky: 6
Témy: 2
Bydlisko: Myjava
Príspevok Napísal autor témyOffline : 02.01.2016 19:57

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()


Offline

Užívateľ
Užívateľ
Python a import

Registrovaný: 21.09.13
Prihlásený: 22.04.24
Príspevky: 2111
Témy: 77
Bydlisko: Považská By...
Príspevok NapísalOffline : 02.01.2016 20:00

Jaj, maš tam from skuska, takže najskôr načita cely subor skuska.py.

// Spojený príspevok Sob 02.01.16 20:06

Niesom 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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.01.16
Prihlásený: 15.08.18
Príspevky: 6
Témy: 2
Bydlisko: Myjava
Príspevok Napísal autor témyOffline : 02.01.2016 20:12

Mohol by si mi trochu viac popýsať čo sa deje keď sa načíta najskôr celý súbor skúška?


Offline

Užívateľ
Užívateľ
Python a import

Registrovaný: 21.09.13
Prihlásený: 22.04.24
Príspevky: 2111
Témy: 77
Bydlisko: Považská By...
Príspevok NapísalOffline : 02.01.2016 20:50

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.
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 02.01.2016 23:12

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é.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.01.16
Prihlásený: 15.08.18
Príspevky: 6
Témy: 2
Bydlisko: Myjava
Príspevok Napísal autor témyOffline : 03.01.2016 11:09

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"?


Offline

Skúsený užívateľ
Skúsený užívateľ
Python a import

Registrovaný: 19.03.07
Prihlásený: 14.04.24
Príspevky: 7076
Témy: 85
Bydlisko: BA
Príspevok NapísalOffline : 03.01.2016 13:01

[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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 03.01.2016 15:05

Aj v Pascal to funguje presne tak isto (a teda, funkcia vidí premenné a funkcie, ktoré boli definované v rovnakom module).


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.01.16
Prihlásený: 15.08.18
Príspevky: 6
Témy: 2
Bydlisko: Myjava
Príspevok Napísal autor témyOffline : 03.01.2016 16:20

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í).


Offline

Užívateľ
Užívateľ
Python a import

Registrovaný: 21.09.13
Prihlásený: 22.04.24
Príspevky: 2111
Témy: 77
Bydlisko: Považská By...
Príspevok NapísalOffline : 03.01.2016 16:35

Ano. Import preberie vsetky premenne dane vo funkcii.







_________________
Nesnívaj svoj život, ale ži svoj sen.
Odpovedať na tému [ Príspevkov: 12 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. @import

v HTML, XHTML, XML, CSS

13

1046

16.09.2008 23:27

exot Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Import obrázkov

v Smartfóny a tablety

6

494

26.09.2011 19:17

haffen Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Import kontaktov

v PHP, ASP

5

796

27.04.2011 22:33

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Import databázy

v Databázy

2

856

10.05.2008 14:08

johny694 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. RSS import

v PHP, ASP

1

1456

10.05.2007 20:26

zero0x Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Automatický import

v Ostatné

1

1058

06.06.2011 12:54

Blackshadow Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. outlook-import konatktov

v Sieťové a internetové programy

0

514

27.08.2009 7:48

scd Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Import Bootstrap template

v Ostatné

0

375

13.04.2016 15:44

martinius96 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. import dat do mysql

v Ponuka práce

2

965

15.03.2009 18:24

Spirit Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. BlueJ import javax.faces...

v Assembler, C, C++, Pascal, Java

1

302

10.03.2016 16:06

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. outlook import export .... problemi

v Sieťové a internetové programy

5

616

14.08.2007 11:44

spipo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Import zvuku do filmu

v Audio programy

3

438

07.06.2013 12:33

Lukoto Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Import CSV do MySQL

v PHP, ASP

24

1200

25.07.2012 20:01

DeiForm Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Wordpress import produktov problém

v Redakčné systémy

0

590

09.09.2016 16:47

Hamaid Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Import databazy na Hosting

v Databázy

2

350

17.03.2013 17:00

flip Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Python

v Perl, Python, Ruby, CGI

12

890

02.07.2021 8:41

void Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra