Обяснени изявления за импортиране на Python

Докато изучавате програмиране и четете някои ресурси, бихте срещнали тази дума „абстракция“, което просто означава да намалите и повторно използвате кода колкото е възможно повече.

Функциите и модулите улесняват абстракцията. Създавате функции, когато искате да направите нещо многократно във файл.

Модулите се появяват, когато искате да използвате повторно група функции в различни изходни файлове. Модулите също са полезни при доброто структуриране на програмата.

  • Използване на стандартни библиотеки и други модули на трети страни
  • Структуриране на програмата

Използване на стандартни библиотеки

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

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
: ракета:

Изпълнете код

Използване на модули на трети страни

Модулите на трети страни не се доставят в пакет с python, но трябва да го инсталираме външно, като използваме мениджъри на пакети като pipиeasy install

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

Научете повече за модула python-заявки тук

Да структурира програми

Искаме да направим програма, която има различни функции по отношение на прости числа. Така че нека започнем. Ще дефинираме всички функции в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модулите в три групи - стандартен внос на библиотеки, свързан внос от трети страни и местен внос. Във всяка група е разумно сортирането по азбучен ред по име на модула. Можете да намерите повече информация в PEP8.

Едно от най-важните неща за езика на Python е четливостта и модулите за сортиране по азбучен ред са по-бързи за четене и търсене. Също така е по-лесно да проверите дали нещо е импортирано и да избегнете дублиращия се внос.

От X импортиране Y: пример

Ето пример за проблем:

>>> 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просто поради проблемите, които може да причини в мащабните програми. Например, никога не знаете дали някой колега програмист може да иска да направи нова функция, която случайно е името на една от съществуващите функции. Също така не знаете дали Python ще промени библиотеката, от която импортирате функции. Въпреки че тези проблеми няма да съществуват толкова често за самостоятелни проекти, както беше посочено по-рано, това е лоша практика в програмирането и трябва да се избягва.