In [1]:
from os import path
path.exists("data.csv")
Out[1]:
lze naimportovat jednotlive funkce
In [2]:
from os.path import exists
ale v jiném modulu má jiný význam
In [3]:
from sys import path
path[-5:]
Out[3]:
lze přidat adresář k těm, ve kterých Python hledá importované moduly
In [4]:
path.append("/home/jovyan/work/")
path[-5:]
Out[4]:
ještě jeden příklad stejného jména, tady i se stejným významem - ale je to totéž?
In [5]:
from math import pi
import numpy as np
pi is np.pi, pi==np.pi
Out[5]:
poslední, ale nedoporučovaná specialita syntaxe
from xy import *
pozor na "jmenné znečistění" (nevíme, co všechno importujeme)
se značkou "*" nelze importovat uvnitř funkcí/tříd
In [6]:
## !! nedoporucovano
#from matplotlib.pyplot import *
In [7]:
## lepe takto
import numpy as np
import matplotlib.pyplot as pl
co nás ještě může zajímat (vše - jako třeba help a.k.a. docstring - je dostupné pro programové zpracování)
In [8]:
print(np.__version__, np.__file__)
print(np.__doc__[:1000]+"...")
In [9]:
np?
In [10]:
print("modul np obsahuje %i pojmenovanych funkci/proměnných/podmodulů"%len(np.__all__))
np.__all__[10:20]
Out[10]:
... a teď vlastní modul? Jak prosté...
vše, co chcete (třídy pro řešení Fisherovy úlohy z pojednání o objektech), nakopírujete do souboru jako novy.py
import novy
novy.Fisher("data.csv")
In [11]:
from imp import reload
reload(np)
Out[11]:
ještě pár pojmů
__init__.py jak použít program jako modul? před části kódu, která se nemá spustit při importu, přidáme řádek
.. if __name__=="__main__":
kde se hledají: PYTHONPATH nebo sys.path (lze přidávat za běhu)
#!/usr/bin/python nebo#! /usr/bin/env python# -*- coding: utf-8 -*-
In [12]:
#nejak takto
%matplotlib inline
import fisher
fg=fisher.FisherGraph("data.csv")
fg.fit()
#fg.graph([0,30],"X","Y","Importovano")