Կարող եք ձեր կոդը փորձարկել այստեղ
Python-ում սցենար կատարելիս ամբողջ կատարումը սովորաբար բաժանվում է երկու փուլի.
1. Կոդի ֆայլը ( .py ընդլայնումով ֆայլ ) կազմվում է միջանկյալ բայթկոդի մեջ։
2. Հաջորդը, կազմված բայթկոդը մեկնաբանվում է, այսինքն, տեղի է ունենում ծրագրի իրական կատարումը
Այս դեպքում մենք պետք չէ հստակորեն ստեղծել որևէ բայթ, այն ստեղծվում է անուղղակիորեն Python սկրիպտը կատարելիս: Եթե ծրագիրը ներմուծում է արտաքին մոդուլներ/գրադարաններ, և դրանք ներմուծվում են առաջին անգամ, ապա դրանց կազմված բայթկոդը պահվում է .pyc ընդլայնմամբ ֆայլում և պահվում է __pycache__ գրացուցակում ՝ այն թղթապանակում, որտեղ գտնվում է python կոդը ֆայլը: Եթե մենք փոփոխություններ կատարենք գրադարանի սկզբնաղբյուր ֆայլում, Python-ը կվերակազմավորի բայթկոդի ֆայլը։ Եթե կոդի մեջ փոփոխություններ չկան, ապա *.pyc ֆայլից նախկինում կազմված բայթկոդը բեռնվում է : Սա թույլ է տալիս օպտիմիզացնել հավելվածը, ավելի արագ կազմել և կատարել այն:
Այնուամենայնիվ, հիմնական սցենարի բայթկոդը, որը ներկայացնում է հիմնական ծրագրի ֆայլը և որը փոխանցվում է python թարգմանչին, չի պահվում *.pyc ֆայլում և վերակոմպիլացվում է ամեն անգամ, երբ դիմումը գործարկվում է:
Ենթադրենք, որ նախագծի թղթապանակում մենք ունենք user.py ֆայլ ՝ պարզ ֆունկցիայով, որը վերցնում է երկու պարամետր և ցուցադրում դրանց արժեքները.
def printUser(username, userage):
print(f"Name: {username} Age:{userage}")
Եկեք այս ֆայլը ներառենք ծրագրի հիմնական մոդուլում, որը կոչվում է app.py :
import user
username = "Tom"
userage = 39
user.printUser(username, userage)
Երբ այս սկրիպտը կատարվի, __pycache__ գրացուցակը կստեղծվի նախագծի թղթապանակում (որտեղ գտնվում է «user.py» մոդուլը) : Եվ այն կստեղծի բայթկոդի ֆայլ, որը կլինի հետևյալի նման user.cpython-версия.pyc, որտեղ օգտագործված թարգմանչի տարբերակը կօգտագործվի որպես տարբերակ, օրինակ, 311(Python 3.11 տարբերակի համար): Ստեղծված pyc ֆայլը երկուական է, ուստի իմաստ չունի բացել այն տեքստային խմբագրիչում:
Բայթկոդի ձեռքով հավաքում
Չնայած բայթկոդի ֆայլը ստեղծվում է ավտոմատ կերպով, մենք կարող ենք ձեռքով ստեղծել այն: Դա անելու մի քանի եղանակ կա՝ կոմպիլյացիա՝ օգտագործելով py_compile սցենարը և կոմպիլյացիա՝ օգտագործելով compileall մոդուլը :
py_compile սկրիպտը օգտագործվում է առանձին ֆայլեր կազմելու համար: Կամայական user.py սկրիպտը բայթկոդի ֆայլի մեջ կազմելու համար մենք կարող ենք օգտագործել հետևյալ ծրագիրը.
import py_compile
py_compile.compile("user.py")
Կազմելու համար compile()մենք սկրիպտի ուղին փոխանցում ենք ֆունկցիայի մեջ։ Ծրագիրը գործարկելուց հետո ընթացիկ թղթապանակում կստեղծվի նաև __pycache__ գրացուցակը և դրա մեջ user.cpython-311.pyc ֆայլը:
Compileall մոդուլն օգտագործվում է բոլոր Python ֆայլերը հատուկ ուղիներով հավաքելու համար: Օրինակ, եկեք կազմենք C:/python/files գրացուցակի բոլոր ֆայլերը
python -m compileall c:\python\files
Լռելյայնորեն, նույնիսկ ենթագրքերում պարունակվող ֆայլերը կազմվում են: Եթե Ձեզ անհրաժեշտ է կազմել միայն այն ֆայլերը, որոնք գտնվում են անմիջապես նշված թղթապանակում, ապա օգտագործեք -l տարբերակը
python -m compileall c:\python\files -l
Մեկնաբանություն գրելու համար խնդրում ենք մուտք լինել