Питхон модули: научите како да креирате и увезете прилагођене и уграђене модуле

У овом чланку ћете научити да креирате и увезете прилагођене модуле у Питхону. Такође ћете пронаћи различите технике за увоз и употребу прилагођених и уграђених модула у Питхону.

Видео: Питхон модули

Шта су модули у Питхону?

Модули се односе на датотеку која садржи Питхон изразе и дефиниције.

Датотека која садржи Питхон код, на пример:, example.pyназива се модул и њено име модула би било example.

Користимо модуле за разградњу великих програма на мале управљачке и организоване датотеке. Даље, модули омогућавају поновну употребу кода.

У модулу можемо дефинисати најчешће коришћене функције и увести га, уместо да копирамо њихове дефиниције у различите програме.

Створимо модул. Откуцајте следеће и сачувајте је као example.py.

 # Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result

Овде смо дефинисали функцију add()унутар модула са именом example. Функција узима два броја и враћа њихов збир.

Како увести модуле у Питхон-у?

Дефиниције унутар модула можемо увести у други модул или интерактивни тумач у Питхону.

За то користимо importкључну реч. Да бисмо увезли наш претходно дефинисани модул example, у Питхон упит укуцамо следеће.

 >>> import example

Ово не увози имена функција дефинисаних у exampleдиректно у тренутну табелу симбола. Тамо увози само име модула example.

Коришћењем имена модула можемо приступити функцији користећи тачкасти .оператор. На пример:

 >>> example.add(4,5.5) 9.5

Питхон има мноштво стандардних модула. Можете погледати комплетну листу Питхон стандардних модула и њихове примене употребе. Те датотеке се налазе у директоријуму Либ унутар локације на којој сте инсталирали Питхон.

Стандардни модули се могу увести на исти начин на који увозимо наше кориснички дефинисане модуле.

Постоје различити начини за увоз модула. Они су наведени испод …

Питхон изјава о увозу

Можемо увозити модул помоћу importизраза и приступити дефиницијама унутар њега помоћу оператора тачака као што је горе описано. Ево примера.

 # import statement example # to import standard module math import math print("The value of pi is", math.pi)

Када покренете програм, излаз ће бити:

 Вредност пи је 3,141592653589793

Увоз са преименовањем

Можемо увозити модул тако што ћемо га преименовати на следећи начин:

 # import module by renaming it import math as m print("The value of pi is", m.pi)

mathМодул смо преименовали у m. То нам у неким случајевима може уштедети време за куцање.

Имајте на уму да име mathније препознато у нашем опсегу. Стога math.piје неважећа и m.piисправна је примена.

Питхон из … изјаве о увозу

Можемо увозити одређена имена из модула без увоза модула у целини. Ево примера.

 # import only pi from math module from math import pi print("The value of pi is", pi)

Овде смо piиз mathмодула увезли само атрибут .

У таквим случајевима не користимо тачкасти оператор. Такође можемо увести више атрибута на следећи начин:

 >>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045

Увези сва имена

Сва имена (дефиниције) из модула можемо увести помоћу следеће конструкције:

 # import all names from the standard module math from math import * print("The value of pi is", pi)

Овде смо увели све дефиниције из математичког модула. То укључује сва имена која су видљива у нашем опсегу, осим оних која почињу са подвлаком (приватне дефиниције).

Увоз свега са звездицом (*) није добра пракса програмирања. То може довести до дуплираних дефиниција идентификатора. Такође омета читљивост нашег кода.

Пут претраживања модула Питхон

Током увоза модула, Питхон прегледава неколико места. Тумач прво тражи уграђени модул. Затим (ако уграђени модул није пронађен), Питхон прегледава листу директоријума дефинисаних у sys.path. Потрага је у овом редоследу.

  • Тренутни директоријум.
  • PYTHONPATH (променљива окружења са листом директорија).
  • Задани директоријум који зависи од инсталације.
 >>> увоз сис >>> сис.патх ('', 'Ц: \ Питхон33 \ Либ \ идлелиб', 'Ц: \ Виндовс \ систем32 \ питхон33.зип', 'Ц: \ Питхон33 \ ДЛЛ-ови ',' Ц: \ Питхон33 \ либ ',' Ц: \ Питхон33 ',' Ц: \ Питхон33 \ либ \ сите-пакети ')

We can add and modify this list to add our own path.

Reloading a module

The Python interpreter imports a module only once during a session. This makes things more efficient. Here is an example to show how this works.

Suppose we have the following code in a module named my_module.

 # This module shows the effect of # multiple imports and reload print("This code got executed")

Now we see the effect of multiple imports.

 >>> import my_module This code got executed >>> import my_module >>> import my_module

We can see that our code got executed only once. This goes to say that our module was imported only once.

Now if our module changed during the course of the program, we would have to reload it.One way to do this is to restart the interpreter. But this does not help much.

Python provides a more efficient way of doing this. We can use the reload() function inside the imp module to reload a module. We can do it in the following ways:

 >>> import imp >>> import my_module This code got executed >>> import my_module >>> imp.reload(my_module) This code got executed 

The dir() built-in function

Помоћу dir()функције можемо да пронађемо имена која су дефинисана унутар модула.

На пример, дефинисали смо функцију add()у модулу exampleкоју смо имали на почетку.

Можемо користити dirу exampleмодулу на следећи начин:

 >>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')

Овде можемо видети сортирану листу имена (заједно са add). Сва друга имена која почињу доњом цртом су подразумевани Питхон атрибути повезани са модулом (нису дефинисани од корисника).

На пример, __name__атрибут садржи име модула.

 >>> import example >>> example.__name__ 'example'

Сва имена дефинисана у нашем тренутном простору имена могу се пронаћи помоћу dir()функције без икаквих аргумената.

 >>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')

Занимљиви Чланци...