[ 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 | 2
Bydlisko: Myjava
NapísalOffline : 02.01.2016 17:53 | Python a import

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ý: 13.12.18
Príspevky: 2060
Témy: 71 | 71
Bydlisko: Považská By...
NapísalOffline : 02.01.2016 19:40 | Python a import

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 | 2
Bydlisko: Myjava
Napísal autor témyOffline : 02.01.2016 19:57 | Python a import

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ý: 13.12.18
Príspevky: 2060
Témy: 71 | 71
Bydlisko: Považská By...
NapísalOffline : 02.01.2016 20:00 | Python a import

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 | 2
Bydlisko: Myjava
Napísal autor témyOffline : 02.01.2016 20:12 | Python a import

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ý: 13.12.18
Príspevky: 2060
Témy: 71 | 71
Bydlisko: Považská By...
NapísalOffline : 02.01.2016 20:50 | Python a import

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: 1713
Témy: 0 | 0
NapísalOffline : 02.01.2016 23:12 | Python a import

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 | 2
Bydlisko: Myjava
Napísal autor témyOffline : 03.01.2016 11:09 | Python a import

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.12.18
Príspevky: 5521
Témy: 75 | 75
Bydlisko: BA
NapísalOffline : 03.01.2016 13:01 | Python a import

[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 | 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 | 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 &
Ntb1: DELL inspiron 7537 i7 4500U, 8GB RAM, nv750, FHD IPS,Crucial M4 128GB | ARCH x64 & Ntb2: MS Surface 2017 i5/8GB/128GB &
Mobil: Xiaomi REdmi Note 5 PRO | FW LineageOS 15.1 Nightly & SBC: Raspberry pi 0 | 3B+
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: 1713
Témy: 0 | 0
NapísalOffline : 03.01.2016 15:05 | Python a import

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 | 2
Bydlisko: Myjava
Napísal autor témyOffline : 03.01.2016 16:20 | Python a import

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ý: 13.12.18
Príspevky: 2060
Témy: 71 | 71
Bydlisko: Považská By...
NapísalOffline : 03.01.2016 16:35 | Python a import

Ano. Import preberie vsetky premenne dane vo funkcii.


_________________
Nesnívaj svoj život, ale ži svoj sen.
 [ Príspevkov: 12 ] 


Python a import



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

732

16.09.2008 23:27

exot

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

Automatický import

v Ostatné

1

770

06.06.2011 12:54

Blackshadow

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

Import obrázkov

v Smartfóny a tablety

6

271

26.09.2011 19:17

haffen

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

Import kontaktov

v PHP, ASP

5

497

27.04.2011 22:33

shaggy

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

Import databázy

v Databázy

2

631

10.05.2008 14:08

johny694

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

RSS import

v PHP, ASP

1

423

10.05.2007 20:26

zero0x

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

outlook-import konatktov

v Sieťové a internetové programy

0

304

27.08.2009 7:48

scd

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

Import Bootstrap template

v Ostatné

0

151

13.04.2016 15:44

martinius96

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

Python

v Perl, Python, Ruby, CGI

10

350

12.11.2014 1:32

Misosvk

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

python

v Perl, Python, Ruby, CGI

1

450

19.12.2011 23:09

Ďuri

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

Import databazy na Hosting

v Databázy

2

141

17.03.2013 17:00

flip

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

import dat do mysql

v Ponuka práce

2

780

15.03.2009 18:24

Spirit

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

BlueJ import javax.faces...

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

1

129

10.03.2016 16:06

XOLOO

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

outlook import export .... problemi

v Sieťové a internetové programy

5

381

14.08.2007 11:44

spipo

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

Import zvuku do filmu

v Audio programy

3

197

07.06.2013 12:33

Lukoto

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

Wordpress import produktov problém

v Redakčné systémy

0

199

09.09.2016 16:47

Hamaid



© 2005 - 2018 PCforum, edited by JanoF