[ 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ý: 21.12.24
Príspevky: 2111
Témy: 77 | 77
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ý: 21.12.24
Príspevky: 2111
Témy: 77 | 77
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ý: 21.12.24
Príspevky: 2111
Témy: 77 | 77
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: 1702
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ý: 25.12.24
Príspevky: 7076
Témy: 85 | 85
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 @ 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 | 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ý: 21.12.24
Príspevky: 2111
Témy: 77 | 77
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

1106

16.09.2008 23:27

exot

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

Import kontaktov

v PHP, ASP

5

882

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

896

10.05.2008 14:08

johny694

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

RSS import

v PHP, ASP

1

1529

10.05.2007 20:26

zero0x

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

Automatický import

v Ostatné

1

1108

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

538

26.09.2011 19:17

haffen

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

Import Bootstrap template

v Ostatné

0

422

13.04.2016 15:44

martinius96

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

outlook-import konatktov

v Sieťové a internetové programy

0

561

27.08.2009 7:48

scd

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

Wordpress import produktov problém

v Redakčné systémy

0

674

09.09.2016 16:47

Hamaid

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

Import CSV do MySQL

v PHP, ASP

24

1271

25.07.2012 20:01

DeiForm

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

Import databazy na Hosting

v Databázy

2

384

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

997

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

342

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

766

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

486

07.06.2013 12:33

Lukoto

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

Python

v Perl, Python, Ruby, CGI

12

957

02.07.2021 8:41

void



© 2005 - 2025 PCforum, edited by JanoF