A module არის ერთი .py ფაილი; a package არის მოდულების დირექტორია. Imports საშუალებას გაძლევთ გამოიყენოთ კოდი სხვა მოდულებიდან, რომელიც ორგანიზებს პროგრამას ხელახლა გამოსაყენებელი ნაწილებად.
მოდულები და შემოტანა
(): a + b
PI =
# main.py — different ways to import
import math_utils # import the whole module
math_utils.add(2, 3) # access via the module name
from math_utils import add, PI # import specific names
add(2, 3) # use directly
from math_utils import add as plus # import with an alias
import numpy as np # common aliasing convention
mypackage/
__init__.py ← marks it as a package (can be empty)
module_a.py
subpackage/
__init__.py
module_b.py
from mypackage.module_a import something
from mypackage.subpackage.module_b import other
__init__.py ფაილი აღნიშნავს დირექტორიას როგორც პაკეტი (და შეიძლება გაშვიდეს პაკეტის ინიციალიზაციის კოდი ან განსაზღვროს რა ხსნის from package import *).
if __name__ == "__main__" იდიომაdef main():
print("running as a script")
if __name__ == "__main__": # True only when run directly, not when imported
main()
ეს საშუალებას აძლევს ფაილს იმოქმედოს როგორც შემოტანადი მოდული და გასაშვები სკრიპტი — მის ქვეშ არსებული კოდი მოქმედებს მხოლოდ მაშინ, როდესაც ფაილი შესრულდება პირდაპირ (python file.py), არა რომ იყოს შემოტანილი. Python-ის თითქმის უნივერსალური იდიომა.
import sys
sys.path # the list of directories Python searches for imports
# includes: the current directory, installed packages (site-packages), stdlib
import os, json, datetime # standard library — "batteries included"
import requests # third-party — installed via pip from PyPI
მოდულები და პაკეტები არის როგორ აწყობთ Python კოდს ხელახლა გამოსაყენებელ, შენარჩუნებად ერთეულებად ვიდრე ერთი ჰიგანტური ფაილი — ფუნდამენტური ნებისმიერ არატრივიალური პროექტისთვის.
შემოტანის სტილების, პაკეტის სტრუქტურის (__init__.py), if __name__ == "__main__" იდიომის (დუალური სკრიპტი/მოდულის ქცევა) და Python-ის მოდულების ძებნის გაგება (sys.path) არის აუცილებელი პროექტების სტრუქტურირების, კოდის ხელახლა გამოყენების და ვაშტის სტანდარტული ბიბლიოთეკის და PyPI ეკოსისტემის გამოყენებისთვის.
შემოტანის შეცდომები და სტრუქტურის დაბნევა არის საერთო ადრეული დაბრკოლებები, რომელსაც ეს ცოდნა აჩერებს.
IT გასაუბრების კითხვების ბიბლიოთეკა დეტალური პასუხებით — Junior-დან Senior-მდე.
შემოწირულობა