Објашњене изјаве о увозу Питхона

Док сте учили програмирање и читали неке ресурсе, наишли бисте на ову реч „апстракција“, што једноставно значи смањити и поново користити код што је више могуће.

Функције и модули олакшавају апстракцију. Функције креирате када желите више пута да урадите нешто у датотеци.

Модули се појављују када желите поново да користите групу функција у различитим изворним датотекама. Модули су такође корисни у доброј структури програма.

  • Коришћење стандардних библиотека и других независних модула
  • Структурирање програма

Коришћење стандардних библиотека

Пример: Можете детаљно прочитати о методама / функцијама свих стандардних библиотека у службеним Питхон документима.

import time for i in range(100): time.sleep(1) # Waits for 1 second and then executes the next command print(str(i) + ' seconds have passed') # prints the number of seconds passed after the program was started
:ракета:

Покрени код

# To calculate the execution time of a part of program import time start = time.time() # code here end = time.time() print('Execution time:' , end-start)
:ракета:

Покрени код

# Using math Module import math print(math.sqrt(100)) # prints 10
:ракета:

Покрени код

Коришћење независних модула

Модули независних произвођача не долазе у пакету са питхоном, али морамо га инсталирати екстерно користећи менаџере пакета попут pipиeasy install

# To make http requests import requests rq = requests.get(target_url) print(rq.status_code)

Овде сазнајте више о модулу питхон-рекуестс

За структурирање програма

Желимо да направимо програм који има различите функције у погледу простих бројева. Па кренимо. Дефинисаћемо све функције уprime_functions.py

# prime_functions.py from math import ceil, sqrt def isPrime(a): if a == 2: return True elif a % 2 == 0: return False else: for i in range(3,ceil(sqrt(a)) + 1,2): if a % i == 0: return False return True def print_n_primes(a): i = 0 m = 2 while True: if isPrime(m) ==True: print(m) i += 1 m += 1 if i == a: break

Сада желимо да користимо функције које смо управо креирали, prime_functions.pyпа креирамо нову датотеку playground.pyда бисмо користили те функције.

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

# playground.py import prime_functions print(prime_functions.isPrime(29)) # returns True

Сортирање увоза

Добра пракса је разврставање importмодула у три групе - стандардни увоз библиотека, сродни увоз независних произвођача и локални увоз. Унутар сваке групе је разумно сортирати абецедно по називу модула. Више информација можете пронаћи у ПЕП8.

Једна од најважнијих ствари за језик Питхон је читљивост, а модули за абецедно сортирање бржи су за читање и претраживање. Такође је лакше проверити да ли се нешто увози и избећи дуплицирани увоз.

Из Кс увоза И: пример

Ево примера проблема:

>>> from math import ceil, sqrt >>> # here it would be >>> sqrt(36) <<< 6
:ракета:

Покрени код

Или бисмо уместо њега могли да користимо овај:

>>> import math >>> # here it would be >>> math.sqrt(36) <<< 6
:ракета:

Покрени код

Тада би наш код изгледао math.sqrt(x)уместо sqrt(x). То се дешава јер када користимо import x, сам простор имена xсе креира како би се избегли сукоби имена. Морате приступити сваком појединачном објекту модула као x..

Али када користимо from x import y, слажемо се да додамо yглавном глобалном простору имена. Дакле, док користимо ово, морамо бити сигурни да у нашем програму немамо објекат са истим именом.

Никада не користите from x import yако објект са именом yвећ постоји

На пример, у osмодулу постоји метода open. Али чак имамо и уграђену функцију тзв open. Дакле, овде би требало да избегавамо употребу from os import open.

Можемо чак и користити form x import *, ово би увело све методе и класе тог модула у глобални простор имена програма. Ово је лоша пракса програмирања. Молим те избегавај то.

Генерално, требало би да избегавате from x import yједноставно због проблема које они могу да изазову у великим програмима. На пример, никад не знате да ли ће колега програмер можда желети да направи нову функцију која је назив једне од постојећих функција. Такође не знате да ли ће Питхон променити библиотеку из које увозите функције. Иако ови проблеми неће постојати тако често за самосталне пројекте, као што је претходно речено, то је лоша програмска пракса и треба је избегавати.