Python-ի դասեր սկսնակների համար զրոյից – ամբողջական դասընթաց Python-ում ծրագրավորում սովորելու համար: Python-ը հայտնի ծրագրավորման լեզու է։ Python-ը կարող է օգտագործվել սերվերի վրա՝ վեբ հավելվածներ ստեղծելու համար: Սովորեք python ծրագրավորման լեզուն անվճար, հիմունքներ զրոյից, ամբողջական python ուսուցման դասախոսությունների դասընթաց: Դասընթացի տեսանյութը ներառում է բոլոր հիմնական թեմաները օրինակներով և պրակտիկայով, որոնք անհրաժեշտ են կրտսեր python մշակողի համար: Դասընթացի վերջում դուք կիմանաք python-ի բոլոր հիմնական շարահյուսությունը և ազատ կլինեք գրել ձեր սեփական կոդը:
if
Հայտարարություններfor
Հայտարարություններrange()
ֆունկցիաbreak
և continue
Հայտարարություններ, և else
Դրույթներ Loops-ի վրաpass
Հայտարարություններmatch
Հայտարարություններdel
հայտարարությունdir()
ֆունկցիաjson
Ժամանակ Python լեզվի տեղեկանք նկարագրում է Python լեզվի ճշգրիտ շարահյուսությունը և իմաստաբանությունը, գրադարանի այս տեղեկատու ձեռնարկը նկարագրում է ստանդարտ գրադարանը, որը բաշխվում է Python-ով: Այն նաև նկարագրում է որոշ կամընտիր բաղադրիչներ, որոնք սովորաբար ներառված են Python բաշխումների մեջ:
Python-ի ստանդարտ գրադարանը շատ ընդարձակ է, որն առաջարկում է հարմարությունների լայն շրջանակ, ինչպես նշված է ստորև թվարկված երկար բովանդակության աղյուսակում: Գրադարանը պարունակում է ներկառուցված մոդուլներ (գրված C-ով), որոնք ապահովում են մուտք դեպի համակարգի ֆունկցիոնալությունը, ինչպիսին է I/O ֆայլը, որն այլապես անհասանելի կլիներ Python ծրագրավորողների համար, ինչպես նաև Python-ով գրված մոդուլներ, որոնք ապահովում են ստանդարտացված լուծումներ բազմաթիվ խնդիրների համար, որոնք առաջանում են ամենօրյա ծրագրավորում. Այս մոդուլներից մի քանիսը բացահայտորեն նախագծված են Python ծրագրերի դյուրատարությունը խրախուսելու և բարձրացնելու համար՝ հարթակին հատուկ առանձնահատկությունները վերացելով հարթակ-չեզոք API-ների մեջ:
Windows պլատֆորմի համար Python տեղադրողները սովորաբար ներառում են ամբողջ ստանդարտ գրադարանը և հաճախ ներառում են նաև բազմաթիվ լրացուցիչ բաղադրիչներ: Unix-ի նման օպերացիոն համակարգերի համար Python-ը սովորաբար տրամադրվում է որպես փաթեթների հավաքածու, ուստի կարող է անհրաժեշտ լինել օգտագործել օպերացիոն համակարգի հետ տրամադրվող փաթեթավորման գործիքները՝ որոշ կամ բոլոր կամընտիր բաղադրիչներ ստանալու համար:
Բացի ստանդարտ գրադարանից, կա մի քանի հազար բաղադրիչների աճող հավաքածու (առանձին ծրագրերից և մոդուլներից մինչև փաթեթներ և հավելվածների մշակման ամբողջ շրջանակներ), որոնք հասանելի են Python փաթեթի ինդեքս.
and
, or
, not
int
, float
, complex
list
, tuple
, range
str
bytes
, bytearray
, memoryview
set
, frozenset
dict
string
- Ընդհանուր լարային գործողություններre
- Սովորական արտահայտչական գործողություններdifflib
— Դելտաների հաշվարկման օգնականներtextwrap
- Տեքստի փաթեթավորում և լրացումunicodedata
— Unicode տվյալների բազաstringprep
— Ինտերնետային լարերի պատրաստումreadline
— GNU readline ինտերֆեյսrlcompleter
— GNU readline-ի ավարտի ֆունկցիաdatetime
- Հիմնական ամսաթվի և ժամի տեսակներըzoneinfo
— IANA ժամային գոտու աջակցությունcalendar
— Օրացույցի հետ կապված ընդհանուր գործառույթներcollections
- Կոնտեյների տվյալների տեսակներըcollections.abc
— Կոնտեյներների վերացական բազային դասերheapq
— Կույտային հերթի ալգորիթմbisect
— Զանգվածի կիսման ալգորիթմarray
— Թվային արժեքների արդյունավետ զանգվածներweakref
— Թույլ հղումներtypes
— Դինամիկ տիպի ստեղծում և ներկառուցված տեսակների անուններcopy
— մակերեսային և խորը պատճենահանման գործողություններpprint
- Տվյալների գեղեցիկ տպիչreprlib
- Այլընտրանքային repr()
իրականացումenum
— Աջակցություն թվարկումներինgraphlib
— Գրաֆիկական կառուցվածքներով աշխատելու ֆունկցիոնալությունnumbers
— Թվային վերացական բազային դասերmath
— Մաթեմատիկական ֆունկցիաներcmath
— Մաթեմատիկական ֆունկցիաներ կոմպլեքս թվերի համարdecimal
— Տասնորդական ֆիքսված կետ և լողացող կետի թվաբանությունfractions
- Ռացիոնալ թվերrandom
- Ստեղծեք կեղծ պատահական թվերstatistics
— Մաթեմատիկական վիճակագրության գործառույթներpathlib
— Օբյեկտ-կողմնորոշված ֆայլային համակարգի ուղիներos.path
— Ընդհանուր ուղիների մանիպուլյացիաներfileinput
— Կրկնել մի քանի մուտքային հոսքերի տողերի վրաstat
- Մեկնաբանում stat()
արդյունքներըfilecmp
— Ֆայլերի և գրացուցակի համեմատություններtempfile
— Ստեղծեք ժամանակավոր ֆայլեր և գրացուցակներglob
— Unix ոճի երթուղու օրինաչափության ընդլայնումfnmatch
- Unix ֆայլի անվան օրինակի համընկնումlinecache
- Պատահական մուտք դեպի տեքստային տողերshutil
— Բարձր մակարդակի ֆայլերի գործողություններos
— Տարբեր օպերացիոն համակարգերի միջերեսներio
— Հիմնական գործիքներ հոսքերի հետ աշխատելու համարtime
— Ժամանակի հասանելիություն և փոխարկումներargparse
— Հրամանի տողի ընտրանքների, արգումենտների և ենթահրամանների վերլուծիչgetopt
— C ոճի վերլուծիչ հրամանի տողի ընտրանքների համարlogging
— Python-ի գրանցման հարմարությունlogging.config
— Մատյանների կազմաձևումlogging.handlers
- անտառահատումների մշակիչներgetpass
— Դյուրակիր գաղտնաբառի մուտքագրումcurses
— Տերմինալների մշակում նիշերի բջիջների ցուցադրման համարcurses.textpad
— Տեքստի մուտքագրման վիդջեթ անեծքների ծրագրերի համարcurses.ascii
— Կոմունալ ծառայություններ ASCII նիշերի համարcurses.panel
— Անեծքների համար վահանակի կույտի ընդլայնումplatform
— Մատչելիություն հիմքում ընկած հարթակի նույնականացման տվյալներինerrno
— Ստանդարտ սխալ համակարգի նշաններctypes
— Օտարերկրյա ֆունկցիաների գրադարան Python-ի համարthreading
— Թելերի վրա հիմնված զուգահեռականությունmultiprocessing
— Գործընթացների վրա հիմնված զուգահեռականությունmultiprocessing.shared_memory
— Ապահովում է ընդհանուր հիշողություն գործընթացների միջև ուղղակի մուտքի համարconcurrent
փաթեթconcurrent.futures
— Զուգահեռ առաջադրանքների գործարկումsubprocess
- Ենթագործընթացների կառավարումsched
- Իրադարձությունների ժամանակացույցqueue
— Համաժամեցված հերթերի դասcontextvars
- Համատեքստի փոփոխականներ_thread
— Ցածր մակարդակի threading APIasyncio
— Ասինխրոն I/Osocket
— Ցածր մակարդակի ցանցային ինտերֆեյսssl
— TLS/SSL փաթաթան վարդակից օբյեկտների համարselect
— Սպասում է I/O ավարտինselectors
— Բարձր մակարդակի I/O մուլտիպլեքսավորումsignal
— Սահմանել կարգավորիչներ ասինխրոն իրադարձությունների համարmmap
— Հիշողության քարտեզագրված ֆայլի աջակցությունemail
— Էլփոստի և MIME-ի մշակման փաթեթjson
- JSON կոդավորիչ և ապակոդավորիչmailbox
— Շահարկել փոստարկղերը տարբեր ձևաչափերովmimetypes
— Ֆայլերի անունները քարտեզագրեք MIME-ի տեսակներինbase64
— Base16, Base32, Base64, Base85 տվյալների կոդավորումներbinhex
— Կոդավորել և վերծանել binhex4 ֆայլերըbinascii
— Փոխարկել երկուականի և ASCII-ի միջևquopri
— Կոդավորել և վերծանել MIME-ի մեջբերված-տպվող տվյալներըhtml
— HyperText Markup Language աջակցությունhtml.parser
- Պարզ HTML և XHTML վերլուծիչhtml.entities
— HTML ընդհանուր սուբյեկտների սահմանումներxml.etree.ElementTree
— ElementTree XML APIxml.dom
— Փաստաթղթի օբյեկտի մոդելի APIxml.dom.minidom
— DOM-ի նվազագույն իրականացումxml.dom.pulldom
— Աջակցություն մասնակի DOM ծառերի կառուցմանըxml.sax
— Աջակցություն SAX2 վերլուծիչների համարxml.sax.handler
— Հիմնական դասեր SAX մշակողների համարxml.sax.saxutils
— SAX Utilitiesxml.sax.xmlreader
— Ինտերֆեյս XML վերլուծիչների համարxml.parsers.expat
— Արագ XML վերլուծություն՝ օգտագործելով Expat-ըwebbrowser
— Հարմարավետ վեբ զննարկչի վերահսկիչwsgiref
— WSGI Utilities և Reference Implementationurllib
— URL-ների մշակման մոդուլներurllib.request
— Ընդարձակ գրադարան՝ URL-ներ բացելու համարurllib.response
— Արձագանքման դասեր, որոնք օգտագործվում են urllib-ի կողմիցurllib.parse
— Վերլուծեք URL-ները բաղադրիչներիurllib.error
— urllib.request-ի կողմից բարձրացված բացառիկ դասերurllib.robotparser
— վերլուծիչ robots.txt-ի համարhttp
- HTTP մոդուլներhttp.client
— HTTP արձանագրության հաճախորդftplib
— FTP արձանագրության հաճախորդpoplib
— POP3 արձանագրության հաճախորդimaplib
— IMAP4 արձանագրության հաճախորդsmtplib
— SMTP արձանագրության հաճախորդuuid
— UUID օբյեկտները ըստ RFC 4122socketserver
— Շրջանակ ցանցային սերվերների համարhttp.server
- HTTP սերվերներhttp.cookies
— HTTP պետական կառավարումhttp.cookiejar
— Թխուկների մշակում HTTP հաճախորդների համարxmlrpc
— XMLRPC սերվերի և հաճախորդի մոդուլներxmlrpc.client
— XML-RPC հաճախորդի մուտքxmlrpc.server
— Հիմնական XML-RPC սերվերներipaddress
— IPv4/IPv6 մանիպուլյացիայի գրադարանtkinter
- Python ինտերֆեյս Tcl/Tk-ի համարtkinter.colorchooser
- Գույնի ընտրության երկխոսությունtkinter.font
— Tkinter տառատեսակի փաթաթանtkinter.messagebox
— Tkinter հաղորդագրությունը հուշում էtkinter.scrolledtext
— Ոլորված տեքստի վիդջեթtkinter.dnd
— Քաշեք և թողեք աջակցությունըtkinter.ttk
— Tk թեմայով վիդջեթներtkinter.tix
- Ընդլայնման վիդջեթներ Tk-ի համարtyping
- Աջակցություն տիպի ակնարկներինpydoc
— Փաստաթղթերի գեներատոր և առցանց օգնության համակարգdoctest
— Փորձարկել Python-ի ինտերակտիվ օրինակներunittest
— Միավորի փորձարկման շրջանակunittdocketest.mock
- ծաղրական օբյեկտների գրադարանunittest.mock
- սկսելtest
— Python-ի ռեգրեսիայի թեստերի փաթեթtest.support
— Կոմունալ ծառայություններ Python թեստային փաթեթի համարtest.support.socket_helper
— Կոմունալ վարդակների թեստերի համարtest.support.script_helper
- Կոմունալ ծրագրեր Python-ի կատարման թեստերի համարtest.support.bytecode_helper
— Աջակցող գործիքներ՝ բայթկոդի ճիշտ ստեղծման փորձարկման համարtest.support.threading_helper
— Կոմունալ ծառայություններ թելերի թեստերի համարtest.support.os_helper
— ՕՀ-ի թեստերի կոմունալ ծառայություններtest.support.import_helper
— Կոմունալ ծառայություններ ներմուծման փորձարկումների համարtest.support.warnings_helper
- Կոմունալ ծառայություններ նախազգուշացման թեստերի համարsys
— Համակարգի հատուկ պարամետրեր և գործառույթներsysconfig
— Տրամադրել մուտք Python-ի կազմաձևման տեղեկատվությանըbuiltins
- Ներկառուցված օբյեկտներ__main__
— Վերին մակարդակի կոդի միջավայրwarnings
- Զգուշացման հսկողությունdataclasses
- Տվյալների դասերcontextlib
- Կոմունալ ծառայություններ with
- հայտարարության համատեքստերըabc
— Աբստրակտ բազային դասերatexit
- Ելքի կարգավորիչներtraceback
— Տպեք կամ առբերեք կույտի հետագծում__future__
- Ապագա հայտարարությունների սահմանումներgc
— Աղբահանող ինտերֆեյսinspect
- Ստուգեք կենդանի օբյեկտներըsite
— Կայքին հատուկ կազմաձևման կեռիկast
— Աբստրակտ շարահյուսական ծառերsymtable
— Կազմողի խորհրդանիշների աղյուսակների հասանելիությունtoken
— Python վերլուծական ծառերի հետ օգտագործվող հաստատուններըkeyword
- Փորձարկում Python հիմնաբառերի համարtokenize
- Tokenizer Python աղբյուրի համարtabnanny
— Երկիմաստ ներքևի հայտնաբերումpyclbr
— Python մոդուլի բրաուզերի աջակցությունpy_compile
— Կազմել Python աղբյուրի ֆայլերըcompileall
— Բայթ-կոմպիլյացիա Python գրադարաններdis
— Ապամոնտաժող Python բայթկոդի համարpickletools
— Գործիքներ թթու մշակողների համարposix
— POSIX համակարգի ամենատարածված զանգերըpwd
— Գաղտնաբառերի տվյալների բազաgrp
- Խմբային տվյալների բազաtermios
— POSIX ոճի tty կառավարումtty
- Տերմինալի կառավարման գործառույթներpty
— Կեղծ-տերմինալ կոմունալ ծառայություններfcntl
- The fcntl
և ioctl
համակարգային զանգերresource
- Ռեսուրսների օգտագործման մասին տեղեկատվությունsyslog
— Unix syslog գրադարանի առօրյանaifc
— Կարդացեք և գրեք AIFF և AIFC ֆայլերըasynchat
— Ասինխրոն վարդակից հրամանի/պատասխանի կարգավորիչasyncore
— Ասինխրոն վարդակների կարգավորիչaudioop
— Շահարկել հում ձայնային տվյալներըcgi
— Common Gateway Interface-ի աջակցությունcgitb
— Հետագծման կառավարիչ CGI սկրիպտների համարchunk
— Կարդացեք IFF-ի մասնատված տվյալներըcrypt
— Unix գաղտնաբառերը ստուգելու գործառույթimghdr
- Որոշեք պատկերի տեսակըimp
- Մուտք գործեք ներմուծում ինստալացիանmailcap
— Mailcap ֆայլերի մշակումmsilib
— Կարդացեք և գրեք Microsoft Installer ֆայլերըnis
— Ինտերֆեյս Sun's NIS-ին (դեղին էջեր)nntplib
— NNTP արձանագրության հաճախորդoptparse
— Հրամանի տողի ընտրանքների վերլուծիչossaudiodev
— ՕՍՍ-ի հետ համատեղելի աուդիո սարքերի հասանելիությունpipes
- Ինտերֆեյս դեպի կեղևային խողովակաշարերsmtpd
- SMTP սերվերsndhdr
- Որոշեք ձայնային ֆայլի տեսակըspwd
— Ստվերային գաղտնաբառերի տվյալների բազաsunau
— Կարդացեք և գրեք Sun AU ֆայլերըtelnetlib
- Telnet հաճախորդuu
— Կոդավորել և վերծանել uuecode ֆայլերըxdrlib
— Կոդավորել և վերծանել XDR տվյալներըԱյս տեղեկատու ձեռնարկը նկարագրում է լեզվի շարահյուսությունը և «հիմնական իմաստաբանությունը»: Այն կարճ է, բայց փորձում է լինել ճշգրիտ և ամբողջական: Ներկառուցված օբյեկտների ոչ էական տեսակների և ներկառուցված գործառույթների և մոդուլների իմաստաբանությունը նկարագրված է. Python ստանդարտ գրադարան. Լեզվի ոչ պաշտոնական ներածության համար տե՛ս Python ձեռնարկը. C կամ C++ ծրագրավորողների համար կան երկու լրացուցիչ ձեռնարկ. Python թարգմանչի ընդլայնում և ներկառուցում նկարագրում է բարձր մակարդակի պատկերը, թե ինչպես գրել Python ընդլայնման մոդուլը, և Python/C API Reference ձեռնարկ մանրամասն նկարագրում է C/C++ ծրագրավորողների համար հասանելի միջերեսները:
assert
հայտարարությունpass
հայտարարությունdel
հայտարարությունreturn
հայտարարությունyield
հայտարարությունraise
հայտարարությունbreak
հայտարարությունcontinue
հայտարարությունimport
հայտարարությունglobal
հայտարարությունnonlocal
հայտարարությունՓաստաթղթերի այս հատվածը նվիրված է տարբեր հարթակներում Python միջավայրի տեղադրման, թարգմանչի կանչի և Python-ի հետ աշխատանքը հեշտացնող ընդհանուր տեղեկատվությանը:
Python HOWTO-ները փաստաթղթեր են, որոնք ընդգրկում են մեկ, կոնկրետ թեմա և փորձում են ամբողջությամբ լուսաբանել այն: Linux Documentation Project-ի HOWTO հավաքածուի մոդելավորմամբ այս հավաքածուն փորձ է՝ խթանելու փաստաթղթեր, որոնք ավելի մանրամասն են, քան Python գրադարանի հղումը:
Ներկայումս HOWTO-ներն են.
Որպես բաց կոդով մշակման հանրահայտ նախագիծ՝ Python-ն ունի ներդրողների և օգտատերերի ակտիվ աջակցող համայնք, որը նաև հասանելի է դարձնում իրենց ծրագրակազմը Python-ի այլ մշակողների համար՝ օգտագործելու բաց կոդով լիցենզիայի պայմաններով:
Սա Python-ի օգտատերերին թույլ է տալիս արդյունավետորեն կիսվել և համագործակցել՝ օգուտ քաղելով այն լուծումներից, որոնք արդեն իսկ ստեղծել են ուրիշները ընդհանուր (և երբեմն նույնիսկ հազվագյուտ!) խնդիրների համար, ինչպես նաև ներդնելով իրենց սեփական լուծումները ընդհանուր ֆոնդում:
Այս ուղեցույցը ներառում է գործընթացի տեղադրման մասը: Ձեր սեփական Python նախագծերը ստեղծելու և համօգտագործելու ուղեցույցի համար տես բաշխման ուղեցույց.
Նշում
Կորպորատիվ և այլ ինստիտուցիոնալ օգտվողների համար տեղյակ եղեք, որ շատ կազմակերպություններ ունեն իրենց քաղաքականությունը բաց կոդով ծրագրային ապահովման օգտագործման և դրանց ներդրման վերաբերյալ: Խնդրում ենք հաշվի առնել նման քաղաքականությունը Python-ով տրամադրված բաշխման և տեղադրման գործիքներից օգտվելիս:
pip
նախընտրելի տեղադրող ծրագիրն է: Սկսած Python 3.4-ից, այն լռելյայն ներառված է Python երկուական տեղադրողների հետ:
A վիրտուալ միջավայր Python-ի կիսամեկուսացված միջավայր է, որը թույլ է տալիս փաթեթներ տեղադրել որոշակի հավելվածի կողմից օգտագործելու համար, այլ ոչ թե տեղադրվել համակարգում:
venv
վիրտուալ միջավայրեր ստեղծելու ստանդարտ գործիք է և Python-ի մաս է կազմում Python 3.3-ից: Սկսած Python 3.4-ից, այն լռելյայն է տեղադրել pip
բոլոր ստեղծված վիրտուալ միջավայրերում:
virtualenv
երրորդ կողմի այլընտրանքն է (և նախորդը): venv
. Այն թույլ է տալիս վիրտուալ միջավայրեր օգտագործել Python-ի 3.4-ից առաջ տարբերակների վրա, որոնք կամ չեն ապահովում venv
ընդհանրապես, կամ չեն կարողանում ինքնաբերաբար տեղադրել pip
ստեղծված միջավայրերում:
The Python փաթեթի ինդեքս բաց կոդով լիցենզավորված փաթեթների հանրային պահոց է, որը հասանելի է Python-ի այլ օգտվողների կողմից օգտագործելու համար:
որ Python փաթեթավորման մարմին ծրագրավորողների և փաստաթղթերի հեղինակների խումբ է, որը պատասխանատու է ստանդարտ փաթեթավորման գործիքների և հարակից մետատվյալների և ֆայլի ձևաչափերի ստանդարտների պահպանման և զարգացման համար: Նրանք պահպանում են մի շարք գործիքներ, փաստաթղթեր և թողարկում հետագծեր երկուսի վրա GitHub և Bitbucket.
distutils
սկզբնական կառուցման և բաշխման համակարգն է, որն առաջին անգամ ավելացվել է Python ստանդարտ գրադարանին 1998 թվականին: distutils
աստիճանաբար հեռացվում է, այն դեռ հիմք է դրել ընթացիկ փաթեթավորման և բաշխման ենթակառուցվածքի համար, և այն ոչ միայն մնում է ստանդարտ գրադարանի մի մասը, այլև նրա անունը պահպանվում է այլ ձևերով (օրինակ՝ Python-ը համակարգելու համար օգտագործվող փոստային ցուցակի անվանումը): փաթեթավորման ստանդարտների մշակում):
Փոփոխվել է 3.5 տարբերակում. Օգտագործումը venv
այժմ առաջարկվում է վիրտուալ միջավայրեր ստեղծելու համար:
Ստանդարտ փաթեթավորման գործիքները բոլորը նախատեսված են հրամանի տողից օգտագործելու համար:
Հետևյալ հրամանը կտեղադրի մոդուլի վերջին տարբերակը և դրա կախվածությունները Python Package Index-ից.
python -m pip install SomePackage
Նշում
POSIX օգտվողների համար (ներառյալ macOS և Linux օգտվողները), այս ուղեցույցի օրինակները ենթադրում են. վիրտուալ միջավայր.
Windows-ի օգտագործողների համար այս ուղեցույցի օրինակները ենթադրում են, որ Python-ը տեղադրելիս ընտրվել է համակարգի PATH միջավայրի փոփոխականը կարգավորելու տարբերակը:
Հնարավոր է նաև ճշգրիտ կամ նվազագույն տարբերակ նշել անմիջապես հրամանի տողում: Համեմատիչ օպերատորներ օգտագործելիս, ինչպիսիք են >
, <
կամ որևէ այլ հատուկ նիշ, որը մեկնաբանվում է shell-ով, փաթեթի անվանումը և տարբերակը պետք է կցվեն կրկնակի չակերտների մեջ.
python -m pip install SomePackage==1.0.4 # specific version
python -m pip install "SomePackage>=1.0.4" # minimum version
Սովորաբար, եթե համապատասխան մոդուլն արդեն տեղադրված է, այն նորից տեղադրելու փորձը ոչ մի ազդեցություն չի ունենա: Գոյություն ունեցող մոդուլների արդիականացումը պետք է հստակորեն պահանջվի.
python -m pip install --upgrade SomePackage
Լրացուցիչ տեղեկություններ և ռեսուրսներ վերաբերյալ pip
և դրա հնարավորությունները կարելի է գտնել Python Packaging Օգտագործողի ուղեցույց.
Վիրտուալ միջավայրերի ստեղծումը կատարվում է միջոցով venv
մոդուլ. Փաթեթները ակտիվ վիրտուալ միջավայրում տեղադրելու համար օգտագործվում են վերը նշված հրամանները:
Սրանք արագ պատասխաններ կամ հղումներ են որոշ ընդհանուր առաջադրանքների համար:
pip
Python-ի տարբերակներում Python 3.4-ից առաջ:Python-ը միայն սկսեց փաթեթավորվել pip
Python 3.4-ի հետ: Ավելի վաղ տարբերակների համար՝ pip
պետք է «bootstrapped» լինի, ինչպես նկարագրված է Python Packaging Օգտագործողի ուղեցույցում:
Անցնելով --user
տարբերակը python -m pip install
կտեղադրի փաթեթ միայն ընթացիկ օգտագործողի համար, այլ ոչ թե համակարգի բոլոր օգտագործողների համար:
Մի շարք գիտական Python փաթեթներ ունեն բարդ երկուական կախվածություն և ներկայումս հեշտ չէ տեղադրել՝ օգտագործելով pip
ուղղակիորեն։ Ժամանակի այս պահին օգտվողների համար հաճախ ավելի հեշտ կլինի տեղադրել այս փաթեթները այլ միջոցներ այլ ոչ թե փորձել դրանք տեղադրել pip
.
Linux-ի, macOS-ի և այլ POSIX համակարգերում օգտագործեք Python-ի տարբերակված հրամանները՝ համակցված -m
միացրեք համապատասխան պատճենը գործարկելու համար pip
:
python2 -m pip install SomePackage # default Python 2
python2.7 -m pip install SomePackage # specifically Python 2.7
python3 -m pip install SomePackage # default Python 3
python3.4 -m pip install SomePackage # specifically Python 3.4
Համապատասխան տարբերակով pip
հրամանները կարող են նաև հասանելի լինել:
Windows-ում օգտագործեք py
Python-ի գործարկիչը՝ ի հետ համատեղ -m
միացրեք:
py -2 -m pip install SomePackage # default Python 2
py -2.7 -m pip install SomePackage # specifically Python 2.7
py -3 -m pip install SomePackage # default Python 3
py -3.4 -m pip install SomePackage # specifically Python 3.4
Linux համակարգերում Python-ի տեղադրումը սովորաբար կներառվի որպես բաշխման մաս: Python-ի այս տեղադրման մեջ տեղադրումը պահանջում է արմատային մուտք դեպի համակարգ և կարող է խանգարել համակարգի փաթեթների կառավարչի և համակարգի այլ բաղադրիչների աշխատանքին, եթե որևէ բաղադրիչ անսպասելիորեն թարմացվի՝ օգտագործելով pip
.
Նման համակարգերում փաթեթներ տեղադրելիս հաճախ ավելի լավ է օգտագործել վիրտուալ միջավայր կամ մեկ օգտատիրոջ տեղադրում pip
.
Հնարավոր է, որ pip
լռելյայն չի տեղադրվում: Հնարավոր ուղղումներից մեկը հետևյալն է.
python -m ensurepip --default-pip
Կան նաև լրացուցիչ ռեսուրսներ խողովակի տեղադրում:
Python-ը սովորաբար մեծապես ապավինում է աղբյուրի վրա հիմնված բաշխմանը, ընդ որում, ակնկալվում է, որ վերջնական օգտագործողները կկազմեն ընդլայնման մոդուլներ աղբյուրից՝ որպես տեղադրման գործընթացի մաս:
Երկուականի աջակցության ներդրմամբ wheel
Ձևաչափը և Python Package Index-ի միջոցով առնվազն Windows-ի և macOS-ի համար անիվներ հրապարակելու հնարավորությունը, ակնկալվում է, որ այս խնդիրը ժամանակի ընթացքում կթուլանա, քանի որ օգտվողներն ավելի կանոնավոր կերպով կարող են տեղադրել նախապես կառուցված ընդլայնումներ, այլ ոչ թե պետք է ինքնուրույն կառուցեն դրանք:
Տեղադրման որոշ լուծումներ գիտական ծրագրային ապահովում որոնք դեռ հասանելի չեն որպես նախապես կառուցված wheel
ֆայլերը կարող են նաև օգնել ձեռք բերել այլ երկուական ընդարձակումներ՝ առանց դրանք տեղում կառուցելու անհրաժեշտության:
Որպես բաց կոդով մշակման հանրահայտ նախագիծ՝ Python-ն ունի ներդրողների և օգտատերերի ակտիվ աջակցող համայնք, որը նաև հասանելի է դարձնում իրենց ծրագրակազմը Python-ի այլ մշակողների համար՝ օգտագործելու բաց կոդով լիցենզիայի պայմաններով:
Սա Python-ի օգտատերերին թույլ է տալիս արդյունավետորեն կիսվել և համագործակցել՝ օգուտ քաղելով այն լուծումներից, որոնք արդեն իսկ ստեղծել են ուրիշները ընդհանուր (և երբեմն նույնիսկ հազվագյուտ!) խնդիրների համար, ինչպես նաև ներդնելով իրենց սեփական լուծումները ընդհանուր ֆոնդում:
Այս ուղեցույցը ներառում է գործընթացի բաշխման մասը: Python-ի այլ նախագծերի տեղադրման ուղեցույցի համար տես տեղադրման ուղեցույց.
Նշում
Կորպորատիվ և այլ ինստիտուցիոնալ օգտվողների համար տեղյակ եղեք, որ շատ կազմակերպություններ ունեն իրենց քաղաքականությունը բաց կոդով ծրագրային ապահովման օգտագործման և դրանց ներդրման վերաբերյալ: Խնդրում ենք հաշվի առնել նման քաղաքականությունը Python-ով տրամադրված բաշխման և տեղադրման գործիքներից օգտվելիս:
որ Python փաթեթի ինդեքս բաց կոդով լիցենզավորված փաթեթների հանրային պահոց է, որը հասանելի է Python-ի այլ օգտվողների կողմից օգտագործելու համար
որ Python փաթեթավորման մարմին մշակողների և փաստաթղթերի հեղինակների խումբն է, որը պատասխանատու է ստանդարտ փաթեթավորման գործիքների և հարակից մետատվյալների և ֆայլի ձևաչափերի ստանդարտների պահպանման և զարգացման համար: Նրանք պահպանում են մի շարք գործիքներ, փաստաթղթեր և թողարկում հետագծեր երկուսի վրա GitHub և Bitbucket.
distutils
սկզբնական կառուցման և բաշխման համակարգն է, որն առաջին անգամ ավելացվել է Python ստանդարտ գրադարանին 1998 թվականին: distutils
աստիճանաբար հեռացվում է, այն դեռ հիմք է դրել ընթացիկ փաթեթավորման և բաշխման ենթակառուցվածքի համար, և այն ոչ միայն մնում է ստանդարտ գրադարանի մի մասը, այլև նրա անունը պահպանվում է այլ ձևերով (օրինակ՝ Python-ը համակարգելու համար օգտագործվող փոստային ցուցակի անվանումը): փաթեթավորման ստանդարտների մշակում):
տեղադրման սարքեր (մեծ մասամբ) իջնող փոխարինող է distutils
Առաջին անգամ հրապարակվել է 2004 թվականին distutils
գործիքները այլ փաթեթներից կախվածություն հայտարարելու հնարավորությունն էր: Ներկայումս այն առաջարկվում է որպես ավելի պարբերաբար թարմացվող այլընտրանք distutils
որն առաջարկում է հետևողական աջակցություն ավելի վերջին փաթեթավորման ստանդարտներին Python-ի տարբերակների լայն շրջանակում:
անիվ (այս համատեքստում) նախագիծ է, որն ավելացնում է bdist_wheel
հրամանը distutils
/տեղադրման սարքեր. Սա արտադրում է խաչաձև հարթակի երկուական փաթեթավորման ձևաչափ (կոչվում է «անիվներ» կամ «անիվային ֆայլեր» և սահմանված է. PEP 427), որը թույլ է տալիս Python գրադարանները, նույնիսկ նրանք, ներառյալ երկուական ընդլայնումները, տեղադրվել համակարգում, առանց տեղական կառուցման կարիքի:
Աշխարհի մեծ մասում ծրագրաշարը ավտոմատ կերպով ծածկված է հեղինակային իրավունքով: Սա նշանակում է, որ այլ մշակողները պահանջում են բացահայտ թույլտվություն՝ ծրագրաշարը պատճենելու, օգտագործելու, փոփոխելու և վերաբաշխելու համար:
Բաց կոդով լիցենզավորումը նման թույլտվություն բացահայտորեն տրամադրելու միջոց է համեմատաբար հետևողական ձևով, որը թույլ է տալիս ծրագրավորողներին կիսվել և արդյունավետ համագործակցել՝ ազատորեն հասանելի դարձնելով տարբեր խնդիրների ընդհանուր լուծումները: Սա շատ ծրագրավորողների ազատ է թողնում ավելի շատ ժամանակ հատկացնել՝ կենտրոնանալով այն խնդիրների վրա, որոնք համեմատաբար յուրահատուկ են իրենց կոնկրետ իրավիճակի համար:
Python-ով տրամադրված բաշխման գործիքները նախագծված են այնպես, որ ծրագրավորողներին ողջամտորեն պարզ դարձնեն իրենց ներդրումները ծրագրային ապահովման ընդհանուր ֆոնդում, եթե նրանք որոշեն դա անել:
Նույն բաշխման գործիքները կարող են օգտագործվել նաև կազմակերպության ներսում ծրագրակազմ տարածելու համար՝ անկախ նրանից՝ այդ ծրագրաշարը հրապարակված է որպես բաց կոդով ծրագրակազմ, թե ոչ:
Ստանդարտ գրադարանը չի ներառում կառուցել գործիքներ, որոնք աջակցում են Python փաթեթավորման ժամանակակից ստանդարտներին, քանի որ հիմնական մշակող թիմը պարզել է, որ կարևոր է ունենալ ստանդարտ գործիքներ, որոնք աշխատում են հետևողականորեն, նույնիսկ Python-ի հին տարբերակների վրա:
Ներկայիս առաջարկվող կառուցման և բաշխման գործիքները կարող են տեղադրվել՝ կանչելով pip
մոդուլ հրամանի տողում.
python -m pip install setuptools wheel twine
Նշում
POSIX օգտատերերի համար (ներառյալ macOS և Linux օգտվողները) այս հրահանգները ենթադրում են a վիրտուալ միջավայր.
Windows-ի օգտագործողների համար այս հրահանգները ենթադրում են, որ Python-ը տեղադրելիս ընտրվել է համակարգի PATH միջավայրի փոփոխականը կարգավորելու տարբերակը:
Python Packaging-ի օգտագործման ուղեցույցը ներառում է ավելի շատ մանրամասներ ներկայումս առաջարկվող գործիքներ.
Python Packaging Օգտագործողի ուղեցույցը ներառում է տարբեր հիմնական քայլերն ու տարրերը, որոնք ներգրավված են նախագծի ստեղծման և հրապարակման մեջ.
Սրանք արագ պատասխաններ կամ հղումներ են որոշ ընդհանուր առաջադրանքների համար:
Սա հեշտ թեմա չէ, բայց ահա մի քանի խորհուրդ.
ստուգեք Python Package Index-ը, որպեսզի տեսնեք՝ արդյոք անունը արդեն օգտագործվում է
ստուգեք հանրահայտ հոսթինգ կայքերը, ինչպիսիք են GitHub-ը, Bitbucket-ը և այլն, որպեսզի տեսնեք, արդյոք արդեն կա այդ անունով նախագիծ:
ստուգեք, թե ինչ է ստացվում վեբ որոնման արդյունքում ձեր դիտարկած անվան համար
խուսափեք առանձնահատուկ տարածված բառերից, հատկապես մի քանի նշանակություն ունեցող բառերից, քանի որ դրանք կարող են դժվարացնել օգտվողների համար գտնել ձեր ծրագրակազմը այն որոնելիս:
Սա իրականում բավականին բարդ թեմա է, որտեղ առկա են տարբեր այլընտրանքներ՝ կախված այն բանից, թե կոնկրետ ինչի եք ձգտում հասնել: Լրացուցիչ տեղեկությունների և առաջարկությունների համար տե՛ս Python Packaging-ի օգտագործման ուղեցույցը:
Այս փաստաթուղթը նկարագրում է, թե ինչպես գրել մոդուլներ C կամ C++-ով, որպեսզի Python թարգմանիչը նոր մոդուլներով ընդլայնվի: Այդ մոդուլները կարող են ոչ միայն սահմանել նոր գործառույթներ, այլև նոր օբյեկտների տեսակներ և դրանց մեթոդներ: Փաստաթուղթը նաև նկարագրում է, թե ինչպես կարելի է տեղադրել Python թարգմանիչը մեկ այլ հավելվածում՝ որպես ընդլայնման լեզու օգտագործելու համար: Ի վերջո, այն ցույց է տալիս, թե ինչպես կարելի է կազմել և կապել ընդլայնման մոդուլները, որպեսզի դրանք կարողանան դինամիկ կերպով (գործարկման ժամանակ) բեռնվել թարգմանչի մեջ, եթե հիմքում ընկած օպերացիոն համակարգը աջակցում է այս հատկությանը:
Այս փաստաթուղթը ենթադրում է հիմնական գիտելիքներ Python-ի մասին: Լեզվի ոչ պաշտոնական ներածության համար տե՛ս Python ձեռնարկը. Python լեզվի տեղեկանք տալիս է լեզվի ավելի պաշտոնական սահմանում. Python ստանդարտ գրադարան փաստաթղթերում առկա օբյեկտների տեսակները, գործառույթները և մոդուլները (ինչպես ներկառուցված, այնպես էլ գրված Python-ով), որոնք լեզվին տալիս են կիրառման լայն շրջանակ:
Ամբողջ Python/C API-ի մանրամասն նկարագրության համար տե՛ս առանձին Python/C API Reference ձեռնարկ.
Այս ուղեցույցն ընդգրկում է միայն CPython-ի այս տարբերակի մաս տրամադրվող ընդարձակման ստեղծման հիմնական գործիքները: Երրորդ կողմի գործիքներ, ինչպիսիք են Սիթոն, cffi, SWIG և Նումբա առաջարկում են ինչպես ավելի պարզ, այնպես էլ ավելի բարդ մոտեցումներ Python-ի համար C և C++ ընդարձակումներ ստեղծելու համար:
Տես նաեւ,
Python Packaging-ի օգտագործման ուղեցույցը ոչ միայն ընդգրկում է մի քանի հասանելի գործիքներ, որոնք պարզեցնում են երկուական ընդլայնումների ստեղծումը, այլև քննարկում են տարբեր պատճառներ, թե ինչու ընդլայնման մոդուլ ստեղծելը կարող է առաջին հերթին ցանկալի լինել:
Ուղեցույցի այս բաժինը ներառում է C և C++ ընդլայնումներ ստեղծելն առանց երրորդ կողմի գործիքների օգնության: Այն նախատեսված է հիմնականում այդ գործիքների ստեղծողների համար, այլ ոչ թե ձեր սեփական C ընդլայնումները ստեղծելու առաջարկվող միջոցը:
Երբեմն, քան ստեղծել ընդլայնում, որն աշխատում է Python թարգմանչի ներսում՝ որպես հիմնական հավելված, ցանկալի է փոխարենը տեղադրել CPython գործարկման ժամանակը ավելի մեծ հավելվածի մեջ: Այս բաժինը ներառում է որոշ մանրամասներ, որոնք ներգրավված են հաջողությամբ իրականացնելու համար:
Այս ձեռնարկը ներկայացնում է API-ն, որն օգտագործվում է C և C++ ծրագրավորողների կողմից, ովքեր ցանկանում են գրել ընդլայնման մոդուլներ կամ տեղադրել Python-ը: Դա ուղեկից է Python թարգմանչի ընդլայնում և ներկառուցում, որը նկարագրում է ընդարձակման գրելու ընդհանուր սկզբունքները, բայց մանրամասնորեն չի փաստաթղթավորում API-ի գործառույթները։
_ | ||
__future__ | Ապագա հայտարարությունների սահմանումներ | |
__main__ | Այն միջավայրը, որտեղ գործարկվում է վերին մակարդակի կոդը: Ընդգրկում է հրամանի տողի միջերեսները, ներմուծման ժամանակի վարքագիծը և «__name__ == '__main__'»: | |
_thread | Ցածր մակարդակի threading API: | |
a | ||
abc | Աբստրակտ բազային դասեր ըստ :pep:`3119`. | |
aifc | Հնացած է ՝ Կարդացեք և գրեք աուդիո ֆայլեր AIFF կամ AIFC ձևաչափով: | |
argparse | Հրամանի տողի տարբերակ և փաստարկների վերլուծման գրադարան: | |
array | Միատեսակ տպագրված թվային արժեքների տարածության արդյունավետ զանգվածներ: | |
ast | Աբստրակտ շարահյուսության ծառի դասեր և մանիպուլյացիա: | |
asynchat | Հնացած է ՝ Աջակցություն ասինխրոն հրամանի/պատասխան արձանագրություններին: | |
asyncio | Asynchronous I/O. | |
asyncore | Հնացած է ՝ Բազային դաս՝ ասինխրոն վարդակների բեռնաթափման ծառայությունների մշակման համար: | |
atexit | Գրանցեք և կատարեք մաքրման գործառույթները: | |
audioop | Հնացած է ՝ Շահարկել հում ձայնային տվյալները: | |
b | ||
base64 | RFC 4648. Base16, Base32, Base64 տվյալների կոդավորում; Base85 և Ascii85 | |
bdb | Վրիպազերծող շրջանակ: | |
binascii | Երկուական և տարբեր ASCII կոդավորված երկուական ներկայացումների միջև փոխակերպման գործիքներ: | |
binhex | Կոդավորեք և վերծանեք ֆայլերը binhex4 ձևաչափով: | |
bisect | Զանգվածի բաժանման ալգորիթմներ երկուական որոնման համար: | |
builtins | Մոդուլը, որն ապահովում է ներկառուցված անվանատարածք: | |
bz2 | Ինտերֆեյսներ bzip2 սեղմման և ապակոմպրեսիայի համար: | |
c | ||
calendar | Օրացույցների հետ աշխատելու գործառույթներ, ներառյալ Unix cal ծրագրի որոշ էմուլյացիա: | |
cgi | Հնացած է ՝ Օգնողներ Python-ի սկրիպտները Common Gateway ինտերֆեյսի միջոցով գործարկելու համար: | |
cgitb | Հնացած է ՝ CGI սկրիպտների համար կարգավորելի հետագծային կառավարիչ: | |
chunk | Հնացած է ՝ IFF կտորները կարդալու մոդուլ: | |
cmath | Մաթեմատիկական ֆունկցիաներ կոմպլեքս թվերի համար: | |
cmd | Կառուցեք գծի վրա հիմնված հրամանների թարգմանիչներ: | |
code | Կարդալու-գնահատման-տպման օղակներ իրականացնելու հարմարություններ: | |
codecs | Կոդավորեք և վերծանեք տվյալները և հոսքերը: | |
codeop | Կազմել (հնարավոր է թերի) Python կոդը: | |
![]() | collections | Կոնտեյների տվյալների տեսակները |
colorsys | Փոխակերպման գործառույթներ RGB-ի և այլ գունային համակարգերի միջև: | |
compileall | Գործիքներ՝ բոլոր Python սկզբնաղբյուր ֆայլերը գրացուցակի ծառում բայթ-կազմելու համար: | |
![]() | concurrent | |
configparser | Կազմաձևման ֆայլերի վերլուծիչ: | |
contextlib | Կոմունալ ծառայություններ with-statement համատեքստերի համար: | |
contextvars | Համատեքստի փոփոխականներ | |
copy | Մակերեսային և խորը պատճենահանման գործողություններ: | |
copyreg | Գրանցեք թթու վարունգի աջակցության գործառույթները: | |
cProfile | ||
crypt (Յունիքս) | Հնացած է ՝ crypt() ֆունկցիան օգտագործվում է Unix-ի գաղտնաբառերը ստուգելու համար: | |
csv | Գրել և կարդալ աղյուսակային տվյալները սահմանազատված ֆայլերից և դրանցից: | |
ctypes | Օտարերկրյա գործառույթների գրադարան Python-ի համար: | |
![]() | curses (Յունիքս) | Անեծքների գրադարանի ինտերֆեյս, որն ապահովում է շարժական տերմինալների սպասարկում: |
d | ||
dataclasses | Ստեղծեք հատուկ մեթոդներ օգտագործողի կողմից սահմանված դասերի վրա: | |
datetime | Հիմնական ամսաթվի և ժամի տեսակները. | |
![]() | dbm | Ինտերֆեյս տարբեր Unix «տվյալների բազայի» ձևաչափերի համար: |
decimal | Ընդհանուր տասնորդական թվաբանական մասնագրերի իրականացում: | |
difflib | Օգնականներ՝ օբյեկտների միջև տարբերությունները հաշվարկելու համար: | |
dis | Ապամոնտաժող Python բայթկոդի համար: | |
![]() | distutils | Աջակցություն Python մոդուլների կառուցմանը և տեղադրմանը գոյություն ունեցող Python տեղադրման մեջ: |
doctest | Կոդերի փորձարկումներ docstrings-ում: | |
e | ||
![]() | email | Փաթեթ, որն աջակցում է էլ. |
![]() | encodings | |
ensurepip | «pip» տեղադրողի բեռնումը գոյություն ունեցող Python տեղադրման կամ վիրտուալ միջավայրում: | |
enum | Համարման դասի իրականացում. | |
errno | Ստանդարտ errno համակարգի նշաններ: | |
f | ||
faulthandler | Թափել Python-ի հետքը: | |
fcntl (Յունիքս) | Զանգում է fcntl() և ioctl() համակարգը: | |
filecmp | Արդյունավետ համեմատեք ֆայլերը: | |
fileinput | Անցեք ստանդարտ մուտքագրման կամ ֆայլերի ցանկի վրա: | |
fnmatch | Unix կեղևի ոճի ֆայլի անվան օրինակի համընկնում: | |
fractions | Ռացիոնալ թվեր. | |
ftplib | FTP արձանագրության հաճախորդ (պահանջում է վարդակներ): | |
functools | Ավելի բարձր կարգի գործառույթներ և գործողություններ կանչվող օբյեկտների վրա: | |
g | ||
gc | Ինտերֆեյս ցիկլը հայտնաբերող աղբի հավաքիչին: | |
getopt | Դյուրակիր վերլուծիչ հրամանի տողի ընտրանքների համար; աջակցել ինչպես կարճ, այնպես էլ երկար տարբերակների անուններին: | |
getpass | Գաղտնաբառերի դյուրակիր ընթերցում և օգտագործողի հայտնաբերում: | |
gettext | Բազմալեզու միջազգայնացման ծառայություններ. | |
glob | Unix shell ոճի ուղու օրինաչափության ընդլայնում: | |
graphlib | Գրաֆիկական կառուցվածքներով աշխատելու ֆունկցիոնալություն | |
grp (Յունիքս) | Խմբային տվյալների բազա (getgrnam() և ընկերներ): | |
gzip | Միջերեսներ gzip-ի սեղմման և ապակոմպրեսիայի համար՝ օգտագործելով ֆայլի օբյեկտներ: | |
h | ||
hashlib | Ապահովեք հեշի և հաղորդագրությունների մարսողության ալգորիթմները: | |
heapq | Կույտային հերթի ալգորիթմ (նույնպես առաջնահերթ հերթ): | |
hmac | Keyed-Hashing հաղորդագրությունների նույնականացման (HMAC) իրականացման համար | |
![]() | html | Օգնողներ HTML-ի մանիպուլյացիայի համար: |
![]() | http | HTTP կարգավիճակի կոդեր և հաղորդագրություններ |
i | ||
imaplib | IMAP4 արձանագրության հաճախորդ (պահանջվում է վարդակներ): | |
imghdr | Հնացած է ՝ Որոշեք ֆայլի կամ բայթ հոսքի մեջ պարունակվող պատկերի տեսակը: | |
imp | Հնացած է ՝ Մուտք գործեք ներմուծման հայտարարագրի իրականացումը: | |
![]() | importlib | Ներմուծման մեքենաների ներդրում. |
inspect | Քաղեք տեղեկատվություն և աղբյուրի կոդը կենդանի օբյեկտներից: | |
io | Հիմնական գործիքներ հոսքերի հետ աշխատելու համար: | |
ipaddress | IPv4/IPv6 մանիպուլյացիայի գրադարան: | |
itertools | Գործառույթներ, որոնք ստեղծում են կրկնողիչներ արդյունավետ օղակի համար: | |
j | ||
![]() | json | Կոդավորեք և վերծանեք JSON ձևաչափը: |
k | ||
keyword | Ստուգեք՝ արդյոք տողը հիմնաբառ է Python-ում: | |
l | ||
lib2to3 | 2to3 գրադարան | |
linecache | Տրամադրում է պատահական մուտք դեպի առանձին տողեր տեքստային ֆայլերից: | |
locale | Միջազգայնացման ծառայություններ. | |
![]() | logging | Միջոցառումների գրանցման ճկուն համակարգ հավելվածների համար: |
lzma | Python փաթաթան liblzma սեղմման գրադարանի համար: | |
m | ||
mailbox | Շահարկել փոստարկղերը տարբեր ձևաչափերով | |
mailcap | Հնացած է ՝ Mailcap ֆայլերի մշակում: | |
marshal | Փոխակերպեք Python օբյեկտները բայթերի հոսքերի և հակառակը (տարբեր սահմանափակումներով): | |
math | Մաթեմատիկական ֆունկցիաներ (sin() և այլն): | |
mimetypes | Ֆայլի անվան ընդարձակման քարտեզագրում MIME տեսակներին: | |
mmap | Ինտերֆեյս հիշողության քարտեզագրված ֆայլերի համար Unix-ի և Windows-ի համար: | |
modulefinder | Գտեք մոդուլներ, որոնք օգտագործվում են սցենարով: | |
msilib (Windows) | Հնացած է ՝ Microsoft Installer ֆայլերի և CAB ֆայլերի ստեղծում: | |
msvcrt (Windows) | Տարբեր օգտակար առօրյաներ MS VC++ գործարկման ժամանակից: | |
![]() | multiprocessing | Գործընթացների վրա հիմնված զուգահեռություն. |
n | ||
netrc | .netrc ֆայլերի բեռնում: | |
nis (Յունիքս) | Հնացած է ՝ Ինտերֆեյս Sun's NIS (Դեղին էջեր) գրադարանին: | |
nntplib | Հնացած է ՝ NNTP արձանագրության հաճախորդ (պահանջվում է վարդակներ): | |
numbers | Թվային վերացական բազային դասեր (Բարդ, Իրական, Ինտեգրալ և այլն): | |
o | ||
operator | Ստանդարտ օպերատորներին համապատասխան գործառույթներ: | |
optparse | Հնացած է ՝ Հրամանի տողի ընտրանքների վերլուծական գրադարան: | |
![]() | os | Տարբեր օպերացիոն համակարգերի միջերեսներ: |
ossaudiodev (Linux, FreeBSD) | Հնացած է ՝ Մուտք OSS-ի հետ համատեղելի աուդիո սարքերի: | |
p | ||
pathlib | Օբյեկտ-կողմնորոշված ֆայլային համակարգի ուղիներ | |
pdb | Python վրիպազերծիչը ինտերակտիվ թարգմանիչների համար: | |
pickle | Փոխակերպեք Python օբյեկտները բայթերի հոսքերի և հակառակը: | |
pickletools | Պարունակում է լայնածավալ մեկնաբանություններ թթու վարունգների արձանագրությունների և թթու վարունգների արտադրության օպերացիոն կոդերի, ինչպես նաև որոշ օգտակար գործառույթների վերաբերյալ: | |
pipes (Յունիքս) | Հնացած է ՝ Python ինտերֆեյս Unix shell խողովակաշարերի համար: | |
pkgutil | Ներմուծման համակարգի կոմունալ ծառայություններ. | |
platform | Առբերում է որքան հնարավոր է շատ հարթակի նույնականացման տվյալներ: | |
plistlib | Ստեղծեք և վերլուծեք Apple plist ֆայլերը: | |
poplib | POP3 արձանագրության հաճախորդ (պահանջվում է վարդակներ): | |
posix (Յունիքս) | Ամենատարածված POSIX համակարգի զանգերը (սովորաբար օգտագործվում են մոդուլի OS-ի միջոցով): | |
pprint | Տվյալների գեղեցիկ տպիչ: | |
profile | Python աղբյուրի պրոֆիլավորող. | |
pstats | Վիճակագրության օբյեկտ՝ պրոֆիլավորողի հետ օգտագործելու համար: | |
pty (Յունիքս) | Կեղծ-տերմինալային մշակում Unix-ի համար: | |
pwd (Յունիքս) | Գաղտնաբառերի տվյալների բազա (getpwnam() և ընկերներ): | |
py_compile | Ստեղծեք բայթ-կոդային ֆայլեր Python-ի սկզբնաղբյուր ֆայլերից: | |
pyclbr | Աջակցում է տեղեկատվության արդյունահանմանը Python մոդուլի բրաուզերի համար: | |
pydoc | Փաստաթղթերի գեներատոր և առցանց օգնության համակարգ: | |
q | ||
queue | Համաժամեցված հերթերի դաս: | |
quopri | Կոդավորեք և վերծանեք ֆայլերը՝ օգտագործելով MIME մեջբերումով տպագրվող կոդավորումը: | |
r | ||
random | Ստեղծեք կեղծ պատահական թվեր տարբեր ընդհանուր բաշխումներով: | |
re | Կանոնավոր արտահայտչական գործողություններ: | |
readline (Յունիքս) | GNU Readline աջակցություն Python-ին: | |
reprlib | Այլընտրանքային repr() իրականացում չափի սահմանափակումներով: | |
resource (Յունիքս) | Ինտերֆեյս՝ ընթացիկ գործընթացի վերաբերյալ ռեսուրսների օգտագործման վերաբերյալ տեղեկատվություն տրամադրելու համար: | |
rlcompleter | Python նույնացուցիչի լրացում, որը հարմար է GNU readline գրադարանի համար: | |
runpy | Տեղադրեք և գործարկեք Python մոդուլները՝ առանց դրանք նախապես ներմուծելու: | |
s | ||
sched | Ընդհանուր նշանակության միջոցառումների ժամանակացույց: | |
secrets | Գաղտնիքները կառավարելու համար անվտանգ պատահական թվեր ստեղծեք: | |
select | Սպասեք I/O ավարտին մի քանի հոսքերի վրա: | |
selectors | Բարձր մակարդակի I/O մուլտիպլեքսավորում: | |
shelve | Python օբյեկտի համառություն. | |
shlex | Պարզ բառագիտական վերլուծություն Unix-ի կեղևանման լեզուների համար: | |
shutil | Բարձր մակարդակի ֆայլերի գործողություններ, ներառյալ պատճենումը: | |
signal | Սահմանել կարգավորիչներ ասինխրոն իրադարձությունների համար: | |
site | Կայքի հատուկ կազմաձևման համար պատասխանատու մոդուլ: | |
smtpd | Հնացած է ՝ SMTP սերվերի իրականացում Python-ում: | |
smtplib | SMTP արձանագրության հաճախորդ (պահանջում է վարդակներ): | |
sndhdr | Հնացած է ՝ Որոշեք ձայնային ֆայլի տեսակը: | |
socket | Ցածր մակարդակի ցանցային ինտերֆեյս: | |
socketserver | Շրջանակ ցանցային սերվերների համար: | |
spwd (Յունիքս) | Հնացած է ՝ Ստվերային գաղտնաբառերի տվյալների բազա (getspnam() և ընկերներ): | |
sqlite3 | DB-API 2.0 իրականացում՝ օգտագործելով SQLite 3.x: | |
ssl | TLS/SSL փաթաթան վարդակից օբյեկտների համար | |
stat | Օգտակար ծրագրեր os.stat(), os.lstat() և os.fstat() արդյունքները մեկնաբանելու համար: | |
statistics | Մաթեմատիկական վիճակագրության գործառույթներ | |
string | Ընդհանուր լարային գործողություններ. | |
stringprep | Լարի պատրաստում, ըստ RFC 3453-ի | |
struct | Բայթերը մեկնաբանել որպես փաթեթավորված երկուական տվյալներ: | |
subprocess | Ենթագործընթացների կառավարում. | |
sunau | Հնացած է ՝ Տրամադրեք ինտերֆեյս Sun AU ձայնային ձևաչափին: | |
symtable | Ինտերֆեյս կոմպիլյատորի ներքին նշանների աղյուսակների համար: | |
sys | Մուտք գործեք համակարգի հատուկ պարամետրեր և գործառույթներ: | |
sysconfig | Python-ի կազմաձևման տեղեկատվությունը | |
syslog (Յունիքս) | Ինտերֆեյս Unix syslog գրադարանի առօրյայի համար: | |
t | ||
tabnanny | Գործիք հայտնաբերելու սպիտակ տարածության հետ կապված խնդիրները Python աղբյուրի ֆայլերում գրացուցակի ծառի մեջ: | |
tarfile | Կարդացեք և գրեք tar-format արխիվային ֆայլեր: | |
telnetlib | Հնացած է ՝ Telnet հաճախորդի դաս. | |
tempfile | Ստեղծեք ժամանակավոր ֆայլեր և գրացուցակներ: | |
termios (Յունիքս) | POSIX ոճի tty կառավարում: | |
![]() | test | Ռեգրեսիայի թեստերի փաթեթ, որը պարունակում է Python-ի փորձարկման փաթեթ: |
textwrap | Տեքստի փաթեթավորում և լրացում | |
threading | Թելերի վրա հիմնված զուգահեռականություն. | |
time | Ժամանակի հասանելիություն և փոխարկումներ: | |
timeit | Չափել փոքր կոդի հատվածների կատարման ժամանակը: | |
![]() | tkinter | Ինտերֆեյս դեպի Tcl/Tk՝ օգտատիրոջ գրաֆիկական միջերեսների համար |
token | Մշտականներ, որոնք ներկայացնում են վերլուծական ծառի տերմինալ հանգույցները: | |
tokenize | Լեքսիկական սկաներ Python-ի սկզբնական կոդի համար: | |
trace | Հետևեք կամ հետևեք Python հայտարարության կատարմանը: | |
traceback | Տպեք կամ առբերեք կույտի հետագծում: | |
tracemalloc | Հետևեք հիշողության հատկացումներին: | |
tty (Յունիքս) | Կոմունալ գործառույթներ, որոնք կատարում են ընդհանուր տերմինալի կառավարման գործողություններ: | |
turtle | Կրթական շրջանակ պարզ գրաֆիկական հավելվածների համար | |
turtledemo | Դիտող, օրինակ, կրիայի սցենարներ | |
types | Ներկառուցված տեսակների անունները. | |
typing | Տիպի ակնարկների աջակցություն (տես՝ :pep:`484`): | |
u | ||
unicodedata | Մուտք գործեք Unicode տվյալների բազա: | |
![]() | unittest | Միավորի փորձարկման շրջանակ Python-ի համար: |
![]() | urllib | |
uu | Հնացած է ՝ Կոդավորեք և վերծանեք ֆայլերը uuecode ձևաչափով: | |
uuid | UUID օբյեկտներ (համընդհանուր եզակի նույնացուցիչներ)՝ ըստ RFC 4122-ի | |
v | ||
venv | Վիրտուալ միջավայրերի ստեղծում: | |
w | ||
warnings | Թողարկեք նախազգուշական հաղորդագրություններ և վերահսկեք դրանց տրամադրվածությունը: | |
wave | Տրամադրեք ինտերֆեյս WAV ձայնային ձևաչափի համար: | |
weakref | Աջակցություն թույլ հղումների և թույլ բառարանների համար: | |
webbrowser | Վեբ բրաուզերների համար հեշտ օգտագործման վերահսկիչ: | |
winreg (Windows) | Windows ռեեստրի մանիպուլյացիայի ռեժիմներ և օբյեկտներ: | |
winsound (Windows) | Windows-ի համար ձայնային նվագարկիչի հասանելիություն: | |
![]() | wsgiref | WSGI կոմունալ ծառայություններ և հղումների իրականացում: |
x | ||
xdrlib | Հնացած է ՝ Կոդավորիչներ և ապակոդավորիչներ արտաքին տվյալների ներկայացման համար (XDR): | |
![]() | xml | XML մշակման մոդուլներ պարունակող փաթեթ |
![]() | xmlrpc | |
z | ||
zipapp | Կառավարեք գործարկվող Python zip արխիվները | |
zipfile | Կարդացեք և գրեք ZIP ֆորմատի արխիվային ֆայլեր: | |
zipimport | Աջակցություն Python մոդուլների ներմուծմանը ZIP արխիվներից: | |
zlib | Ցածր մակարդակի ինտերֆեյս սեղմման և ապակոմպրեսիոն ռեժիմների համար, որոնք համատեղելի են gzip-ի հետ: | |
zoneinfo | IANA ժամային գոտու աջակցություն |
>>>
Ինտերակտիվ կեղևի լռելյայն Python հուշումը: Հաճախ նկատվում է կոդերի օրինակներ, որոնք կարող են ինտերակտիվ կերպով իրականացվել թարգմանիչում:
...
Կարող է վերաբերել՝
Ինտերակտիվ կեղևի լռելյայն Python-ի հուշումը, երբ մուտքագրվում է ծածկագիր մատնանշված կոդի բլոկի համար, երբ գտնվում է զույգ համապատասխանող ձախ և աջ սահմանազատիչներ (փակագծեր, քառակուսի փակագծեր, գանգուր փակագծեր կամ եռակի չակերտներ) կամ դեկորատոր նշելուց հետո:
The Ellipsis
ներկառուցված մշտական.
Գործիք, որը փորձում է Python 2.x կոդը փոխարկել Python 3.x կոդի՝ կարգավորելով անհամատեղելիությունների մեծ մասը, որոնք կարելի է հայտնաբերել՝ վերլուծելով աղբյուրը և անցնելով վերլուծական ծառը:
2to3-ը հասանելի է ստանդարտ գրադարանում որպես lib2to3
; որպես ինքնուրույն մուտքի կետ տրամադրվում է Tools/scripts/2to3
: Տեսնել 2to3 – Python 2-ից 3 կոդերի ավտոմատ թարգմանություն.
Վերացական բազային դասերը լրացնում են բադ-մեքենագրում տրամադրելով միջերեսներ սահմանելու միջոց, երբ այլ տեխնիկան նման է hasattr()
կլիներ անշնորհք կամ նրբանկատորեն սխալ (օրինակ՝ հետ կախարդական մեթոդներ): ABC-ները ներկայացնում են վիրտուալ ենթադասեր, որոնք դասեր են, որոնք չեն ժառանգում դասից, բայց դեռ ճանաչվում են isinstance()
և issubclass()
; տե՛ս abc
մոդուլի փաստաթղթեր: Python-ը գալիս է բազմաթիվ ներկառուցված ABC-ներով տվյալների կառուցվածքների համար (in collections.abc
մոդուլ), թվեր (ի numbers
մոդուլ), հոսքեր (ի io
մոդուլ), ներմուծման որոնիչներ և բեռնիչներ (ի importlib.abc
մոդուլ): Դուք կարող եք ստեղծել ձեր սեփական ABC-ները abc
մոդուլը:
Փոփոխականի, դասի հատկանիշի կամ ֆունկցիայի պարամետրի կամ վերադարձի արժեքի հետ կապված պիտակ, որն օգտագործվում է պայմանականորեն որպես մուտքագրել հուշում.
Տեղական փոփոխականների ծանոթագրությունները հնարավոր չէ մուտք գործել գործարկման ժամանակ, սակայն գլոբալ փոփոխականների, դասի ատրիբուտների և գործառույթների ծանոթագրությունները պահվում են __annotations__
համապատասխանաբար մոդուլների, դասերի և գործառույթների հատուկ հատկանիշ:
Տեսնել փոփոխական անոտացիա, ֆունկցիայի անոտացիա, PEP 484 և PEP 526, որոնք նկարագրում են այս գործառույթը: Տես նաև Անոտացիաների լավագույն փորձը ծանոթագրությունների հետ աշխատելու լավագույն փորձի համար:
Արժեքը փոխանցվել է a ֆունկցիա (Կամ մեթոդ) ֆունկցիան կանչելիս: Երկու տեսակի փաստարկ կա.
հիմնաբառի փաստարկարգումենտ, որին նախորդում է նույնացուցիչը (օրինակ name=
) ֆունկցիայի կանչում կամ փոխանցվում է որպես արժեք բառարանում նախորդող **
, Օրինակ, 3
և 5
երկուսն էլ հիմնաբառի արգումենտներ են հետևյալ կոչերում complex()
:
complex(real=3, imag=5)
complex(**{'real': 3, 'imag': 5})
դիրքային փաստարկարգումենտ, որը հիմնաբառի փաստարկ չէ: Դիրքային արգումենտները կարող են հայտնվել փաստարկների ցանկի սկզբում և/կամ փոխանցվել որպես an-ի տարրեր կրկնող նախորդում է *
, Օրինակ, 3
և 5
երկուսն էլ դիրքային փաստարկներ են հետևյալ կոչերում.
complex(3, 5)
complex(*(3, 5))
Փաստարկները վերագրվում են ֆունկցիայի մարմնի անվանված տեղական փոփոխականներին: Տեսեք Զանգեր բաժինը այս հանձնարարությունը կարգավորող կանոնների համար: Սինտակտիկորեն ցանկացած արտահայտություն կարող է օգտագործվել փաստարկ ներկայացնելու համար. գնահատված արժեքը վերագրվում է տեղական փոփոխականին:
Տես նաեւ պարամետր բառարանի մուտքը, ՀՏՀ հարցը արգումենտների և պարամետրերի տարբերությունը, եւ PEP 362.
Օբյեկտ, որը վերահսկում է շրջակա միջավայրը, որը երևում է ա async with
հայտարարությունը սահմանելով __aenter__()
և __aexit__()
մեթոդները։ Ներկայացրեց PEP 492.
Գործառույթ, որը վերադարձնում է an ասինխրոն գեներատոր կրկնող. Կարծես թե կորուտինային ֆունկցիա է, որը սահմանված է async def
բացառությամբ, որ այն պարունակում է yield
արտահայտություններ՝ մի շարք արժեքներ ստեղծելու համար, որոնք օգտագործելի են ան async for
հանգույց:
Սովորաբար վերաբերում է ասինխրոն գեներատորի ֆունկցիային, բայց կարող է վերաբերել an ասինխրոն գեներատոր կրկնող որոշ համատեքստերում. Այն դեպքերում, երբ նախատեսված իմաստը պարզ չէ, ամբողջական տերմինների օգտագործումը խուսափում է երկիմաստությունից:
Ասինխրոն գեներատորի ֆունկցիան կարող է պարունակել await
արտահայտությունները, ինչպես նաև async for
, եւ async with
հայտարարություններ:
Ա-ի կողմից ստեղծված օբյեկտ ասինխրոն գեներատոր գործառույթը:
Սա ասինխրոն կրկնող որը, երբ կոչվում է օգտագործելով __anext__()
մեթոդը վերադարձնում է սպասելի օբյեկտ, որը կկատարի ասինխրոն գեներատորի ֆունկցիան մինչև հաջորդ yield
արտահայտությունը:
յուրաքանչյուր yield
ժամանակավորապես դադարեցնում է մշակումը, հիշելով գտնվելու վայրի կատարման վիճակը (ներառյալ տեղական փոփոխականները և առկախ փորձի հայտարարությունները): Երբ որ ասինխրոն գեներատոր կրկնող արդյունավետորեն վերսկսվում է վերադարձված մեկ այլ սպասվածի հետ __anext__()
, այն շարունակում է այնտեղ, որտեղ կանգ է առել: Տեսնել PEP 492 և PEP 525.
Օբյեկտ, որը կարող է օգտագործվել մի async for
հայտարարություն. Պետք է վերադարձնել ան ասինխրոն կրկնող իր կողմից __aiter__()
մեթոդ. Ներկայացրեց PEP 492.
Օբյեկտ, որն իրականացնում է __aiter__()
և __anext__()
մեթոդները: __anext__
պետք է վերադարձնել ան սպասելի առարկա: async for
լուծում է ասինխրոն կրկնվողի կողմից վերադարձված սպասելիները __anext__()
մեթոդ, քանի դեռ այն չի բարձրացնում ա StopAsyncIteration
բացառություն. Ներկայացրեց PEP 492.
Արժեքը, որը կապված է օբյեկտի հետ, որը նշված է անունով՝ օգտագործելով կետավոր արտահայտություններ: Օրինակ, եթե օբյեկտ o հատկանիշ ունի a այն կնշվի որպես օա.
Օբյեկտ, որը կարող է օգտագործվել մի await
արտահայտություն. Կարող է լինել ա կոռուտին կամ առարկայի հետ __await__()
մեթոդ. Տես նաեւ PEP 492.
Բարեգործական դիկտատոր Կյանքի համար, նույնանուն Գուիդո վան Ռոսսում, Python-ի ստեղծողը։
A ֆայլի օբյեկտ կարողանալ կարդալ և գրել բայթ նման առարկաներ. Երկուական ֆայլերի օրինակներ են երկուական ռեժիմով բացված ֆայլերը ('rb'
, 'wb'
or 'rb+'
), sys.stdin.buffer
, sys.stdout.buffer
, և դեպքեր io.BytesIO
և gzip.GzipFile
.
Տես նաեւ, տեքստային ֆայլ ֆայլի օբյեկտի համար, որը կարող է կարդալ և գրել str
առարկաներ:
Python-ի C API-ում փոխառված հղումը հղում է օբյեկտին: Այն չի փոփոխում օբյեկտի հղման թիվը: Այն դառնում է կախված ցուցիչ, եթե օբյեկտը ոչնչացվում է: Օրինակ, աղբահանությունը կարող է հեռացնել վերջինը ուժեղ հղում օբյեկտին և այսպես ոչնչացնել այն:
Զանգահարելը Py_INCREF()
մասին փոխառված տեղեկանք խորհուրդ է տրվում այն փոխարկել a ուժեղ հղում տեղում, բացառությամբ այն դեպքերի, երբ օբյեկտը չի կարող ոչնչացվել մինչև փոխառված տեղեկանքի վերջին օգտագործումը: Այն Py_NewRef()
ֆունկցիան կարող է օգտագործվել նորը ստեղծելու համար ուժեղ հղում.
Օբյեկտ, որն աջակցում է Բուֆերային արձանագրություն և կարող է արտահանել C-հարազատ բուֆեր. Սա ներառում է բոլորը bytes
, bytearray
, եւ array.array
առարկաներ, ինչպես նաև շատ ընդհանուր memoryview
առարկաներ. Բայթի նման օբյեկտները կարող են օգտագործվել տարբեր գործողություններ իրականացնելու համար, որոնք աշխատում են երկուական տվյալների հետ; դրանք ներառում են սեղմում, պահպանում երկուական ֆայլում և ուղարկում վարդակից:
Որոշ գործողությունների համար անհրաժեշտ է, որ երկուական տվյալները փոփոխական լինեն: Փաստաթղթերը հաճախ դրանք անվանում են «կարդալ-գրել բայթերի նման օբյեկտներ»: Օրինակ՝ փոփոխվող բուֆերային օբյեկտները ներառում են bytearray
եւ memoryview
մի bytearray
. Այլ գործողությունները պահանջում են երկուական տվյալների պահպանում անփոփոխ օբյեկտներում («միայն կարդալու համար նախատեսված բայթերի նման օբյեկտներ»); դրանց օրինակները ներառում են bytes
եւ memoryview
մի bytes
առարկա:
Python աղբյուրի կոդը կազմվում է բայթկոդի՝ Python ծրագրի ներքին ներկայացումը CPython թարգմանիչում։ Բայթկոդը նույնպես պահվում է քեշում .pyc
ֆայլեր, որպեսզի նույն ֆայլը երկրորդ անգամ ավելի արագ գործարկվի (կարելի է խուսափել աղբյուրից բայթկոդ վերակոմպիլյացիայից): Այս «միջանկյալ լեզուն» ասվում է, որ աշխատում է ա վիրտուալ մեքենա որը կատարում է յուրաքանչյուր բայթկոդի համապատասխան մեքենայի կոդը: Նկատի ունեցեք, որ բայթկոդերը չեն աշխատի Python-ի տարբեր վիրտուալ մեքենաների միջև, ոչ էլ կայուն կլինեն Python-ի թողարկումների միջև:
Բայթկոդերի հրահանգների ցանկը կարելի է գտնել փաստաթղթերում dis մոդուլը.
Ենթածրագրային ֆունկցիա, որը փոխանցվում է որպես փաստարկ, որը պետք է կատարվի ապագայում ինչ-որ պահի:
Օգտատիրոջ կողմից սահմանված օբյեկտներ ստեղծելու ձևանմուշ: Դասերի սահմանումները սովորաբար պարունակում են մեթոդի սահմանումներ, որոնք գործում են դասի օրինակների վրա:
Փոփոխական, որը սահմանված է դասում և նախատեսվում է փոփոխել միայն դասի մակարդակում (այսինքն՝ ոչ դասի օրինակում):
Մեկ տիպի օրինակի անուղղակի փոխակերպումը գործողության ընթացքում, որը ներառում է նույն տեսակի երկու արգումենտ: Օրինակ, int(3.15)
լողացող կետի թիվը վերածում է ամբողջ թվի 3
, բայց 3+4.5
, յուրաքանչյուր արգումենտ տարբեր տեսակի է (մեկ int, մեկ float), և երկուսն էլ պետք է փոխարկվեն նույն տեսակի, նախքան դրանք հնարավոր լինի ավելացնել, այլապես այն կբարձրացնի a TypeError
. Առանց հարկադրանքի, նույնիսկ համատեղելի տեսակների բոլոր արգումենտները պետք է նորմալացվեն նույն արժեքով ծրագրավորողի կողմից, օրինակ. float(3)+4.5
քան պարզապես 3+4.5
.
Ծանոթ իրական թվերի համակարգի ընդլայնում, որտեղ բոլոր թվերն արտահայտվում են որպես իրական մասի և երևակայական մասի գումար: Երևակայական թվերը երևակայական միավորի իրական բազմապատիկներն են (քառակուսի արմատը -1
), հաճախ գրված i
մաթեմատիկայի մեջ կամ j
ճարտարագիտության մեջ։ Python-ն ունի ներկառուցված աջակցություն բարդ թվերի համար, որոնք գրված են այս վերջին նշումով. երևակայական մասը գրվում է ա j
վերջածանց, օրինակ, 3+1j
. -ի բարդ համարժեքներին հասանելիություն ստանալու համար math
մոդուլ, օգտագործում cmath
. Կոմպլեքս թվերի օգտագործումը բավականին զարգացած մաթեմատիկական հատկանիշ է: Եթե դուք տեղյակ չեք դրանց անհրաժեշտության մասին, ապա գրեթե վստահ է, որ կարող եք ապահով անտեսել դրանք:
Օբյեկտ, որը վերահսկում է շրջակա միջավայրը, որը երևում է a with
հայտարարությունը սահմանելով __enter__()
և __exit__()
մեթոդները։ Տեսնել PEP 343.
Փոփոխական, որը կարող է ունենալ տարբեր արժեքներ՝ կախված իր համատեքստից: Սա նման է Thread-Local Storage-ին, որտեղ յուրաքանչյուր կատարման շարանը կարող է տարբեր արժեք ունենալ փոփոխականի համար: Այնուամենայնիվ, համատեքստի փոփոխականների դեպքում կարող են լինել մի քանի համատեքստեր մեկ կատարման թեմայում, և համատեքստի փոփոխականների հիմնական օգտագործումը միաժամանակյա ասինխրոն առաջադրանքներում փոփոխականներին հետևելն է: Տեսնել contextvars
.
Բուֆերը համարվում է հարակից հենց այն դեպքում, երբ այն կա կամ մեկը Գ-հարակից or Fortran հարակից. Զրոյական բուֆերները C և Fortran-ի հարակից են: Միաչափ զանգվածներում տարրերը պետք է դրվեն հիշողության մեջ միմյանց կողքի՝ զրոյից սկսած ինդեքսների մեծացման կարգով: Բազմաչափ C-հարակից զանգվածներում վերջին ինդեքսը ամենաարագ տատանվում է տարրերը հիշողության հասցեի հերթականությամբ այցելելիս: Այնուամենայնիվ, Fortran-ի հարակից զանգվածներում առաջին ինդեքսը տատանվում է ամենաարագ:
Կորուտինները ենթածրագրերի ավելի ընդհանրացված ձև են: Ենթածրագրերը մուտքագրվում են մի կետում և դուրս են գալիս մեկ այլ կետում: Կորուտինները կարող են մուտքագրվել, դուրս գալ և վերսկսվել շատ տարբեր կետերում: Դրանք կարող են իրականացվել հետ async def
հայտարարություն. Տես նաեւ PEP 492.
Գործառույթ, որը վերադարձնում է a կոռուտին օբյեկտ. Կորուտինային ֆունկցիան կարող է սահմանվել հետ async def
հայտարարություն, և կարող է պարունակել await
, async for
, եւ async with
հիմնաբառեր. Սրանք ներկայացրել են PEP 492.
Python ծրագրավորման լեզվի կանոնական իրականացումը, ինչպես տարածված է python.org. «CPython» տերմինը օգտագործվում է այն դեպքում, երբ անհրաժեշտ է տարբերակել այս իրականացումը մյուսներից, ինչպիսիք են Jython-ը կամ IronPython-ը:
Մեկ այլ ֆունկցիա վերադարձնող ֆունկցիա, որը սովորաբար կիրառվում է որպես ֆունկցիայի փոխակերպում՝ օգտագործելով @wrapper
շարահյուսություն. Դեկորատորների համար սովորական օրինակներ են classmethod()
և staticmethod()
.
Դեկորատորի շարահյուսությունը զուտ շարահյուսական շաքար է, ֆունկցիայի հետևյալ երկու սահմանումները իմաստային առումով համարժեք են.
def f(arg):
...
f = staticmethod(f)
@staticmethod
def f(arg):
...
Նույն հայեցակարգը գոյություն ունի դասերի համար, բայց այնտեղ ավելի քիչ է օգտագործվում: Տես փաստաթղթերը ֆունկցիայի սահմանումներ և դասի սահմանումներ դեկորատորների մասին ավելին իմանալու համար:
Ցանկացած օբյեկտ, որը սահմանում է մեթոդները __get__()
, __set__()
Կամ __delete__()
. Երբ դասի հատկանիշը նկարագրիչ է, նրա հատուկ պարտադիր վարքագիծը գործարկվում է հատկանիշի որոնումից հետո: Սովորաբար, օգտագործելով աբ հատկանիշ ստանալու, սահմանելու կամ ջնջելու համար փնտրում է անվանված օբյեկտը b դասարանի բառարանում համար a, բայց եթե b նկարագրիչ է, կոչվում է համապատասխան նկարագրիչ մեթոդը: Նկարագրիչները հասկանալը բանալին է Python-ի խորը ըմբռնման համար, քանի որ դրանք հիմք են հանդիսանում բազմաթիվ առանձնահատկությունների համար, ներառյալ գործառույթները, մեթոդները, հատկությունները, դասի մեթոդները, ստատիկ մեթոդները և հղումը սուպեր դասերին:
Նկարագրիչների մեթոդների մասին լրացուցիչ տեղեկությունների համար տե՛ս Իրականացնող նկարագրիչներ կամ Նկարագրիչ Ինչպես առաջնորդել.
Ասոցիատիվ զանգված, որտեղ կամայական ստեղները քարտեզագրվում են արժեքներին: Ստեղները կարող են լինել ցանկացած առարկա __hash__()
և __eq__()
մեթոդները։ Պերլում կոչվում է հաշ:
Կոմպակտ միջոց՝ բոլոր տարրերը կամ դրանց մի մասը կրկնվող տարբերակում մշակելու և արդյունքներով բառարան վերադարձնելու համար: results = {n: n ** 2 for n in range(10)}
ստեղծում է բանալի պարունակող բառարան n
քարտեզագրված արժեքին n ** 2
: Տեսնել Ցուցադրվում է ցուցակների, հավաքածուների և բառարանների համար.
Օբյեկտները վերադարձել են dict.keys()
, dict.values()
, եւ dict.items()
կոչվում են բառարանային դիտումներ։ Նրանք դինամիկ տեսք են տալիս բառարանի գրառումների վրա, ինչը նշանակում է, որ երբ բառարանը փոխվում է, տեսքը արտացոլում է այդ փոփոխությունները: Որպեսզի բառարանի տեսքը դառնա ամբողջական ցուցակի օգտագործում list(dictview)
: Տեսնել Բառարանի դիտում առարկաներ.
Տողային բառացի, որը հայտնվում է որպես դասի, ֆունկցիայի կամ մոդուլի առաջին արտահայտություն: Մինչդեռ փաթեթը գործարկվելիս անտեսվում է, այն ճանաչվում է կոմպիլյատորի կողմից և դրվում է __doc__
պարփակող դասի, ֆունկցիայի կամ մոդուլի հատկանիշ: Քանի որ այն հասանելի է ինքզննման միջոցով, այն օբյեկտի փաստաթղթավորման կանոնական վայրն է:
Ծրագրավորման ոճ, որը չի նայում օբյեկտի տեսակին՝ որոշելու, թե արդյոք այն ունի ճիշտ ինտերֆեյս; Փոխարենը, մեթոդը կամ հատկանիշը պարզապես կոչվում կամ օգտագործվում է («Եթե այն նման է բադին և բադին նման է, այն պետք է լինի բադ»:) Ընդգծելով միջերեսները, այլ ոչ թե կոնկրետ տեսակները, լավ մշակված կոդը բարելավում է իր ճկունությունը՝ թույլ տալով. պոլիմորֆ փոխարինում. Duck-typing-ը խուսափում է փորձարկումներից type()
or isinstance()
. (Այնուամենայնիվ, նշեք, որ բադային մուտքագրումը կարող է լրացվել վերացական բազային դասեր.) Փոխարենը, այն սովորաբար աշխատում է hasattr()
թեստեր կամ EAFP ծրագրավորում:
Ավելի հեշտ է ներողություն խնդրել, քան թույլտվություն: Python-ի կոդավորման այս սովորական ոճը ենթադրում է վավեր բանալիների կամ ատրիբուտների առկայություն և բռնում է բացառություններ, եթե ենթադրությունը կեղծ է: Այս մաքուր և արագ ոճը բնութագրվում է շատերի առկայությամբ try
և except
հայտարարություններ. Տեխնիկան հակադրվում է LBYL ոճը տարածված է շատ այլ լեզուների համար, ինչպիսիք են C.
Շարահյուսության մի հատված, որը կարելի է գնահատել որոշակի արժեքով: Այլ կերպ ասած, արտահայտությունը արտահայտությունների տարրերի կուտակումն է, ինչպիսիք են բառացիները, անունները, հատկանիշի հասանելիությունը, օպերատորները կամ ֆունկցիայի կանչերը, որոնք բոլորը արժեք են վերադարձնում: Ի տարբերություն շատ այլ լեզուների, ոչ բոլոր լեզվական կառուցվածքներն են արտահայտություններ։ Այնտեղ կան նաեւ հայտարարությունs, որոնք չեն կարող օգտագործվել որպես արտահայտություններ, ինչպիսիք են while
. Հանձնարարությունները նույնպես հայտարարություններ են, ոչ թե արտահայտություններ:
C կամ C++-ով գրված մոդուլ՝ օգտագործելով Python-ի C API՝ միջուկի և օգտագործողի կոդի հետ փոխազդելու համար:
Լարային տառերի նախածանցով 'f'
or 'F'
սովորաբար կոչվում են «f-strings», որը կարճ է ֆորմատավորված լարային բառացիներ, Տես նաեւ PEP 498.
Օբյեկտ, որը բացահայտում է ֆայլի վրա հիմնված API (մեթոդներով, ինչպիսիք են read()
or write()
) հիմքում ընկած ռեսուրսին: Կախված դրա ստեղծման ձևից՝ ֆայլի օբյեկտը կարող է միջնորդել մուտք գործել սկավառակի վրա իրական ֆայլ կամ այլ տեսակի պահեստավորման կամ հաղորդակցման սարք (օրինակ՝ ստանդարտ մուտք/ելք, հիշողության բուֆերներ, վարդակներ, խողովակներ և այլն): . Ֆայլի օբյեկտները նույնպես կոչվում են ֆայլի նման օբյեկտներ or հոսքերի.
Իրականում գոյություն ունի ֆայլի օբյեկտների երեք կատեգորիա՝ հումք երկուական ֆայլեր, բուֆերացված երկուական ֆայլեր և տեքստային ֆայլեր. Նրանց ինտերֆեյսները սահմանվում են io
մոդուլ. Ֆայլի օբյեկտ ստեղծելու կանոնական եղանակը օգտագործելն է open()
գործառույթը:
Հոմանիշը ֆայլի օբյեկտ.
Կոդավորում և սխալների մշակիչ, որն օգտագործվում է Python-ի կողմից օպերացիոն համակարգից բայթերը վերծանելու և Յունիկոդը օպերացիոն համակարգին կոդավորելու համար:
Ֆայլային համակարգի կոդավորումը պետք է երաշխավորի հաջողությամբ վերծանել բոլոր բայթերը 128-ից ցածր: Եթե ֆայլային համակարգի կոդավորումը չի ապահովում այս երաշխիքը, API գործառույթները կարող են բարձրանալ: UnicodeError
.
The sys.getfilesystemencoding()
և sys.getfilesystemencodeerrors()
գործառույթները կարող են օգտագործվել ֆայլային համակարգի կոդավորումը և սխալների մշակիչը ստանալու համար:
The ֆայլային համակարգի կոդավորում և սխալների մշակիչ կազմաձևված են Python-ի գործարկման ժամանակ PyConfig_Read()
գործառույթը: Տես filesystem_encoding
և filesystem_errors
անդամները PyConfig
.
Տես նաեւ տեղային կոդավորում.
Օբյեկտ, որը փորձում է գտնել լիցքավորող ներմուծվող մոդուլի համար:
Քանի որ Python 3.3-ը, որոնիչի երկու տեսակ կա. մետա ուղի որոնիչներ օգտագործման համար sys.meta_path
, եւ ուղու մուտքի որոնիչներ օգտագործման համար sys.path_hooks
.
Մաթեմատիկական բաժանում, որը կլորացվում է մինչև մոտակա ամբողջ թիվը: Հատակի բաժանման օպերատորն է //
. Օրինակ՝ արտահայտությունը 11 // 4
գնահատում է 2
ի տարբերություն 2.75
վերադարձված բոց ճշմարիտ բաժանմամբ: Նշենք, որ (-11) // 4
is -3
քանի որ դա է -2.75
կլորացված ներքեւ: Տեսնել PEP 238.
Մի շարք հայտարարություններ, որոնք որոշակի արժեք են վերադարձնում զանգահարողին: Այն կարող է նաև զրոյական կամ ավելի անցնել փաստարկները որը կարող է օգտագործվել մարմնի կատարման համար: Տես նաեւ պարամետր, մեթոդԵւ Ֆունկցիայի սահմանումներ բաժնում:
An անոտացիա ֆունկցիայի պարամետրի կամ վերադարձի արժեքի մասին:
Գործառույթների անոտացիաները սովորաբար օգտագործվում են տեսակի հուշումներՕրինակ, այս ֆունկցիան ակնկալվում է, որ կտևի երկու int
փաստարկներ և ակնկալվում է նաև ունենալ մի int
վերադարձի արժեքը:
def sum_two_numbers(a: int, b: int) -> int:
return a + b
Գործառույթների անոտացիայի շարահյուսությունը բացատրվում է բաժնում Ֆունկցիայի սահմանումներ.
Տեսնել փոփոխական անոտացիա և PEP 484, որոնք նկարագրում են այս գործառույթը: Տես նաև Անոտացիաների լավագույն փորձը ծանոթագրությունների հետ աշխատելու լավագույն փորձի համար:
A ապագա հայտարարություն, from __future__ import <feature>
, ուղղորդում է կոմպիլյատորին կազմել ընթացիկ մոդուլը՝ օգտագործելով շարահյուսություն կամ իմաստաբանություն, որը կդառնա ստանդարտ Python-ի ապագա թողարկումում: Այն __future__
մոդուլը փաստում է հնարավոր արժեքները առանձնահատկություն. Ներմուծելով այս մոդուլը և գնահատելով դրա փոփոխականները՝ դուք կարող եք տեսնել, թե երբ է նոր հատկանիշն առաջին անգամ ավելացվել լեզվին և երբ այն կդառնա (կամ դարձավ) լռելյայն.
>>> import __future__
>>> __future__.division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
Հիշողության ազատման գործընթացը, երբ այն այլևս չի օգտագործվում: Python-ն իրականացնում է աղբի հավաքում տեղեկանքների հաշվման և ցիկլային աղբահավաքչի միջոցով, որն ի վիճակի է հայտնաբերել և ընդհատել հղման ցիկլերը: Աղբահանը կարելի է կառավարել՝ օգտագործելով gc
մոդուլը:
Գործառույթ, որը վերադարձնում է a գեներատոր կրկնող. Այն կարծես նորմալ ֆունկցիա է, բացառությամբ, որ այն պարունակում է yield
արտահայտություններ մի շարք արժեքներ ստեղծելու համար, որոնք կարող են օգտագործվել for-loop-ում կամ որոնք կարող են առբերվել մեկ առ մեկ next()
գործառույթը:
Սովորաբար վերաբերում է գեներատորի ֆունկցիային, բայց կարող է վերաբերել a գեներատոր կրկնող որոշ համատեքստերում. Այն դեպքերում, երբ նախատեսված իմաստը պարզ չէ, ամբողջական տերմինների օգտագործումը խուսափում է երկիմաստությունից:
Ա-ի կողմից ստեղծված օբյեկտ գեներատոր գործառույթը:
յուրաքանչյուր yield
ժամանակավորապես դադարեցնում է մշակումը, հիշելով գտնվելու վայրի կատարման վիճակը (ներառյալ տեղական փոփոխականները և առկախ փորձի հայտարարությունները): Երբ որ գեներատոր կրկնող վերսկսվում է, այն շարունակում է այնտեղ, որտեղ դադարեցվել է (ի տարբերություն գործառույթների, որոնք նոր են սկսվում ամեն կանչի ժամանակ):
Արտահայտություն, որը վերադարձնում է կրկնող: Կարծես սովորական արտահայտություն է, որին հաջորդում է a for
կետ, որը սահմանում է հանգույց փոփոխական, միջակայք և կամընտիր if
կետ. Համակցված արտահայտությունը արժեքներ է ստեղծում ընդգրկող ֆունկցիայի համար.
>>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81
285
Գործառույթ, որը բաղկացած է բազմաթիվ գործառույթներից, որոնք իրականացնում են նույն գործողությունը տարբեր տեսակների համար: Թե ինչ իրականացում պետք է օգտագործվի զանգի ժամանակ, որոշվում է դիսպետչերական ալգորիթմով:
Տես նաեւ մեկ առաքում բառարանի մուտքը, ի functools.singledispatch()
դեկորատոր, և PEP 443.
A տիպ որը կարող է պարամետրացվել; սովորաբար ա կոնտեյների դաս ինչպես, օրինակ, list
or dict
. Օգտագործվում է տեսակի հուշումներ և ծանոթագրություններ.
Լրացուցիչ մանրամասների համար տե՛ս ընդհանուր կեղծանունների տեսակները, PEP 483, PEP 484, PEP 585Եւ typing
մոդուլը:
Տեսնել գլոբալ թարգմանչի կողպեք.
Այն մեխանիզմը, որն օգտագործվում է CPython թարգմանիչ՝ հավաստիացնելու, որ միայն մեկ շարանը կատարում է Python-ը բայթկոդ միեւնույն ժամանակ. Սա հեշտացնում է CPython-ի իրականացումը` դարձնելով օբյեկտի մոդելը (ներառյալ կարևոր ներկառուցված տեսակները, ինչպիսիք են. dict
) անուղղակիորեն անվտանգ միաժամանակյա մուտքից: Ամբողջ թարգմանչի կողպումը հեշտացնում է թարգմանչի բազմաթելային լինելը՝ ի հաշիվ բազմապրոցեսոր մեքենաների կողմից տրվող զուգահեռության մեծ մասի:
Այնուամենայնիվ, որոշ ընդլայնման մոդուլներ, ստանդարտ կամ երրորդ կողմի, նախագծված են այնպես, որ ազատեն GIL-ը, երբ կատարում են հաշվողական ինտենսիվ առաջադրանքներ, ինչպիսիք են սեղմումը կամ հաշիվը: Բացի այդ, GIL-ը միշտ ազատ է արձակվում I/O կատարելիս:
Անցյալի ջանքերը՝ ստեղծելու «ազատ թելերով» թարգմանիչ (որը կողպում է համօգտագործվող տվյալները շատ ավելի մանրահատիկությամբ) հաջողությամբ չեն պսակվել, քանի որ աշխատանքը տուժել է ընդհանուր մեկ պրոցեսորի դեպքում: Ենթադրվում է, որ կատարողականի այս խնդրի հաղթահարումը կդարձնի իրականացումը շատ ավելի բարդ և, հետևաբար, պահպանումը ավելի ծախսատար:
Բայթկոդի քեշի ֆայլ, որն օգտագործում է ոչ թե համապատասխան աղբյուրի ֆայլի վերջին փոփոխված ժամանակը, այլ ոչ թե դրա վավերականությունը որոշելու հեշը: Տեսնել Քեշավորված բայթ կոդի անվավերացում.
Օբյեկտ է hashable եթե այն ունի հեշ արժեք, որը երբեք չի փոխվում իր կյանքի ընթացքում (դա պետք է ա __hash__()
մեթոդ), և կարելի է համեմատել այլ օբյեկտների հետ (դա անհրաժեշտ է __eq__()
մեթոդ): Hashable օբյեկտները, որոնք համեմատում են հավասար, պետք է ունենան նույն հեշ արժեքը:
Hashability-ը օբյեկտը դարձնում է օգտագործելի որպես բառարանի բանալի և հավաքածուի անդամ, քանի որ այս տվյալների կառուցվածքները օգտագործում են հեշ արժեքը ներսից:
Python-ի անփոփոխելի ներկառուցված օբյեկտների մեծ մասը հեշելի են. փոփոխվող բեռնարկղերը (օրինակ՝ ցուցակները կամ բառարանները) չեն. անփոփոխ բեռնարկղերը (օրինակ՝ բազմոցները և սառեցված կոմպլեկտները) հաշման ենթակա են միայն այն դեպքում, եթե դրանց տարրերը հաշման ենթակա են: Օբյեկտները, որոնք օգտատիրոջ կողմից սահմանված դասերի օրինակներ են, լռելյայնորեն կարելի է հեշել: Նրանք բոլորը համեմատում են անհավասար (բացառությամբ իրենց հետ), և նրանց հեշ արժեքը բխում է դրանցից id()
.
Ինտեգրված զարգացման միջավայր Python-ի համար: IDLE-ն հիմնական խմբագրիչ և թարգմանիչ միջավայր է, որն առաքվում է Python-ի ստանդարտ բաշխմամբ:
Ֆիքսված արժեք ունեցող օբյեկտ: Անփոփոխ առարկաները ներառում են թվեր, տողեր և բազմակներ: Նման օբյեկտը չի կարող փոփոխվել: Նոր օբյեկտ պետք է ստեղծվի, եթե այլ արժեք պետք է պահվի: Նրանք կարևոր դեր են խաղում այն վայրերում, որտեղ անհրաժեշտ է մշտական հեշ արժեք, օրինակ՝ որպես բառարանի բանալի:
Վայրերի ցանկ (կամ ուղիների մուտքերը) որոնք որոնվում են ուղու վրա հիմնված որոնիչ մոդուլների ներմուծման համար: Ներմուծման ժամանակ տեղանքների այս ցանկը սովորաբար գալիս է sys.path
, բայց ենթափաթեթների համար այն կարող է առաջանալ նաև մայր փաթեթից __path__
հատկանիշը:
Գործընթացը, որով Python կոդը մի մոդուլում հասանելի է դառնում Python կոդը մեկ այլ մոդուլում:
Օբյեկտ, որը և՛ գտնում է, և՛ բեռնում մոդուլը. երկուսն էլ ա որոնիչ և լիցքավորող առարկա:
Python-ն ունի ինտերակտիվ թարգմանիչ, ինչը նշանակում է, որ դուք կարող եք մուտքագրել հայտարարություններ և արտահայտություններ թարգմանչի հուշումով, անմիջապես կատարել դրանք և տեսնել դրանց արդյունքները: Պարզապես գործարկեք python
առանց փաստարկների (հնարավոր է՝ այն ընտրելով ձեր համակարգչի հիմնական ցանկից): Դա նոր գաղափարներ փորձարկելու կամ մոդուլներն ու փաթեթները ստուգելու շատ հզոր միջոց է (հիշեք help(x)
).
Python-ը մեկնաբանվող լեզու է, ի տարբերություն կազմվածի, թեև տարբերությունը կարող է մշուշոտ լինել բայթկոդ կազմողի առկայության պատճառով: Սա նշանակում է, որ աղբյուրի ֆայլերը կարող են ուղղակիորեն գործարկվել՝ առանց հստակ գործարկվող ստեղծելու, որն այնուհետև գործարկվում է: Մեկնաբանված լեզուները սովորաբար ունենում են ավելի կարճ մշակման/վրիպազերծման ցիկլ, քան կազմվածները, թեև դրանց ծրագրերը սովորաբար ավելի դանդաղ են աշխատում: Տես նաեւ ինտերակտիվ.
Երբ խնդրում են անջատել, Python թարգմանիչը մտնում է հատուկ փուլ, որտեղ աստիճանաբար ազատում է բոլոր հատկացված ռեսուրսները, ինչպիսիք են մոդուլները և տարբեր կարևոր ներքին կառուցվածքները: Այն նաև մի քանի զանգեր է կատարում դեպի աղբահավաք. Սա կարող է գործարկել կոդի գործարկումը օգտագործողի կողմից սահմանված դեստրուկտորներում կամ թույլ ռեֆերանսի հետադարձ զանգերում: Անջատման փուլում գործարկված կոդը կարող է հանդիպել տարբեր բացառությունների, քանի որ այն ռեսուրսները, որոնց վրա նա հենվում է, կարող է այլևս չգործել (ընդհանուր օրինակներ են գրադարանի մոդուլները կամ նախազգուշացնող մեքենաները):
Թարգմանչի անջատման հիմնական պատճառն այն է, որ __main__
մոդուլը կամ գործարկվող սցենարն ավարտվել է:
Օբյեկտ, որն ընդունակ է վերադարձնել իր անդամներին մեկ առ մեկ: Կրկնվողների օրինակները ներառում են հաջորդականության բոլոր տեսակները (օրինակ list
, str
, եւ tuple
) և որոշ ոչ հաջորդական տեսակներ, ինչպիսիք են dict
, ֆայլի օբյեկտներ, և ցանկացած դասի օբյեկտներ, որոնք դուք սահմանում եք an-ով __iter__()
մեթոդով կամ ա __getitem__()
մեթոդ, որն իրականացնում է Հերթականություն իմաստաբանություն.
Կրկնվողները կարող են օգտագործվել ա for
հանգույց և շատ այլ վայրերում, որտեղ անհրաժեշտ է հաջորդականություն (zip()
, map()
,…). Երբ կրկնվող օբյեկտը փոխանցվում է որպես արգումենտ ներկառուցված ֆունկցիային iter()
, այն օբյեկտի համար վերադարձնում է կրկնող: Այս կրկնիչը հարմար է արժեքների բազմության վրա մեկ անցման համար: Կրկնվող թվեր օգտագործելիս սովորաբար անհրաժեշտ չէ զանգահարել iter()
կամ ինքներդ զբաղվեք կրկնող օբյեկտներով: Այն for
հայտարարությունը դա անում է ավտոմատ կերպով ձեզ համար՝ ստեղծելով ժամանակավոր անանուն փոփոխական, որը պահում է iterator-ը օղակի տևողության համար: Տես նաեւ կրկնարար, հերթականություն, եւ գեներատոր.
Օբյեկտ, որը ներկայացնում է տվյալների հոսք: Կրկնվող զանգեր կրկնողին __next__()
մեթոդը (կամ փոխանցելով այն ներկառուցված ֆունկցիային next()
) վերադարձնել հոսքի հաջորդական տարրերը: Երբ այլևս տվյալներ չկան, ա StopIteration
փոխարենը բարձրացվում է բացառություն։ Այս պահին կրկնող օբյեկտը սպառված է և ցանկացած հետագա զանգեր դեպի իրեն __next__()
մեթոդ պարզապես բարձրացնել StopIteration
կրկին. Իտերատորներից պահանջվում է ունենալ ան __iter__()
մեթոդ, որը վերադարձնում է iterator օբյեկտն ինքնին, այնպես որ յուրաքանչյուր կրկնող է նաև կրկնվող և կարող է օգտագործվել շատ վայրերում, որտեղ ընդունվում են այլ կրկնվողներ: Հատկանշական բացառություն է ծածկագիրը, որը փորձում է բազմակի կրկնություններ անցնել: Կոնտեյների առարկա (օրինակ՝ ա list
) արտադրում է թարմ նոր կրկնողություն ամեն անգամ, երբ այն փոխանցում եք iter()
գործառույթը կամ օգտագործել այն ա for
հանգույց. Սա կրկնող սարքի միջոցով փորձելը պարզապես կվերադարձնի նույն սպառված կրկնող օբյեկտը, որն օգտագործվում էր նախորդ կրկնվող անցումում, այն դարձնելով դատարկ տարայի տեսք:
Լրացուցիչ տեղեկություններ կարելի է գտնել այստեղ Iterator տեսակները.
CPython-ի իրականացման մանրամասները. CPython-ը հետևողականորեն չի կիրառում կրկնվողի սահմանած պահանջը __iter__()
.
Հիմնական ֆունկցիան կամ համադրման ֆունկցիան կանչելի է, որը վերադարձնում է արժեք, որն օգտագործվում է տեսակավորման կամ պատվիրման համար: Օրինակ, locale.strxfrm()
օգտագործվում է տեսակավորման բանալի արտադրելու համար, որը տեղյակ է տեղային տեսակավորման հատուկ պայմանագրերին:
Python-ի մի շարք գործիքներ ընդունում են հիմնական գործառույթները՝ վերահսկելու, թե ինչպես են տարրերը դասավորվում կամ խմբավորվում: Դրանք ներառում են min()
, max()
, sorted()
, list.sort()
, heapq.merge()
, heapq.nsmallest()
, heapq.nlargest()
, եւ itertools.groupby()
.
Հիմնական գործառույթ ստեղծելու մի քանի եղանակ կա: Օրինակ. որ str.lower()
մեթոդը կարող է ծառայել որպես առանցքային ֆունկցիա մեծատառերի անզգայուն տեսակների համար: Որպես այլընտրանք, հիմնական գործառույթը կարող է կառուցվել a lambda
արտահայտություն, ինչպիսին է lambda r: (r[0], r[2])
. Նաեւ, operator
մոդուլը ապահովում է երեք հիմնական ֆունկցիաների կառուցողներ. attrgetter()
, itemgetter()
, եւ methodcaller()
: Տես նաեւ Տեսակավորում ԻՆՉՊԵՍ հիմնական գործառույթներ ստեղծելու և օգտագործելու օրինակներ:
Տեսնել փաստարկ.
Անանուն ներդիրային ֆունկցիա, որը բաղկացած է մեկից արտահայտություն որը գնահատվում է ֆունկցիան կանչելիս: Լամբդա ֆունկցիա ստեղծելու շարահյուսությունն է lambda [parameters]: expression
Նայեք նախքան ցատկելը: Կոդավորման այս ոճը բացահայտորեն ստուգում է նախապայմանները՝ նախքան զանգեր կամ որոնումներ կատարելը: Այս ոճը հակադրվում է EAFP մոտեցում և բնութագրվում է շատերի առկայությամբ if
հայտարարություններ:
Բազմաթելային միջավայրում LBYL մոտեցումը կարող է վտանգի ենթարկել մրցավազքի պայմանները «նայող» և «ցատկելու» միջև: Օրինակ՝ կոդը, if key in mapping: return mapping[key]
կարող է ձախողվել, եթե մեկ այլ թեմա հեռացվի հիմնական - ից քարտեզագրման թեստից հետո, բայց նախքան որոնումը: Այս խնդիրը կարող է լուծվել կողպեքներով կամ օգտագործելով EAFP մոտեցումը:
Unix-ում դա LC_CTYPE տեղանքի կոդավորումն է: Այն կարող է սահմանվել հետ locale.setlocale(locale.LC_CTYPE, new_locale)
.
Windows-ում դա ANSI ծածկագրի էջն է (օրինակ՝ cp1252
).
locale.getpreferredencoding(False)
կարող է օգտագործվել տեղային կոդավորում ստանալու համար:
Python-ը օգտագործում է ֆայլային համակարգի կոդավորում և սխալների մշակիչ փոխարկել Unicode ֆայլերի անունների և բայթերի ֆայլերի անունների միջև:
Ներկառուցված Python հերթականություն. Չնայած իր անվանը, այն ավելի շատ նման է այլ լեզուների զանգվածին, քան կապակցված ցուցակին, քանի որ տարրերի հասանելիությունը O(1) է:
Կոմպակտ եղանակ՝ բոլոր տարրերը կամ դրանց մի մասը հաջորդականությամբ մշակելու և արդյունքներով ցուցակ վերադարձնելու համար: result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]
ստեղծում է տողերի ցանկ, որոնք պարունակում են զույգ վեցանկյուն թվեր (0x..) 0-ից 255 միջակայքում: if
կետը պարտադիր չէ: Եթե բաց թողնվի, բոլոր տարրերը ներս են range(256)
վերամշակվում են:
Օբյեկտ, որը բեռնում է մոդուլը: Այն պետք է սահմանի անունով մեթոդ load_module()
. Բեռնիչը սովորաբար վերադարձվում է a որոնիչ: Տեսնել PEP 302 մանրամասների համար և importlib.abc.Loader
համար վերացական բազային դաս.
Ոչ պաշտոնական հոմանիշ հատուկ մեթոդ.
Կոնտեյներային օբյեկտ, որն աջակցում է կամայական բանալիների որոնումներին և իրականացնում է նշված մեթոդները Mapping
or MutableMapping
վերացական բազային դասեր. Օրինակները ներառում են dict
, collections.defaultdict
, collections.OrderedDict
և collections.Counter
.
A որոնիչ խուզարկությամբ վերադարձել է sys.meta_path
. Meta ուղի որոնիչները կապված են, բայց տարբեր են ուղու մուտքի որոնիչներ.
Տեսնել importlib.abc.MetaPathFinder
մեթոդների համար, որոնք իրականացնում են մետա ուղի որոնողները:
Դասարանի դաս. Դասի սահմանումները ստեղծում են դասի անվանում, դասի բառարան և բազային դասերի ցուցակ: Metaclass-ը պատասխանատու է այդ երեք փաստարկները վերցնելու և դասը ստեղծելու համար: Օբյեկտ-կողմնորոշված ծրագրավորման լեզուներից շատերը ապահովում են լռելյայն իրականացում: Python-ին առանձնահատուկ է դարձնում այն, որ հնարավոր է ստեղծել հատուկ մետակլասներ: Օգտատերերի մեծամասնությունը երբեք այս գործիքի կարիքը չունի, բայց երբ անհրաժեշտություն է առաջանում, մետակլասները կարող են հզոր, էլեգանտ լուծումներ տալ: Դրանք օգտագործվել են ատրիբուտների հասանելիության գրանցման, thread-safety ավելացնելու, օբյեկտների ստեղծմանը հետևելու, սինգլտոնների իրականացման և շատ այլ առաջադրանքների համար:
Լրացուցիչ տեղեկություններ կարելի է գտնել այստեղ Մետա դասեր.
Գործառույթ, որը սահմանվում է դասի մարմնի ներսում: Եթե կոչվում է որպես այդ դասի օրինակի հատկանիշ, մեթոդը կստանա օրինակի օբյեկտը որպես իր առաջին փաստարկ (որը սովորաբար կոչվում է self
): Տեսնել ֆունկցիա և բնադրված շրջանակ.
Method Resolution Order-ը այն հերթականությունն է, որով բազային դասերը որոնվում են անդամի որոնման ընթացքում: Տեսնել Python 2.3 մեթոդի լուծման կարգը 2.3-ի թողարկումից ի վեր Python թարգմանչի կողմից օգտագործվող ալգորիթմի մանրամասների համար:
Օբյեկտ, որը ծառայում է որպես Python կոդի կազմակերպական միավոր։ Մոդուլներն ունեն Python կամայական օբյեկտներ պարունակող անվանատարածք: Մոդուլները բեռնվում են Python գործընթացի միջոցով ներմուծման.
Տես նաեւ, փաթեթ.
Անվանատարածք, որը պարունակում է ներմուծման հետ կապված տեղեկատվություն, որն օգտագործվում է մոդուլը բեռնելու համար: Մի օրինակ importlib.machinery.ModuleSpec
.
Տեսնել մեթոդի լուծման կարգը.
Փոփոխական օբյեկտները կարող են փոխել իրենց արժեքը, բայց պահպանել իրենց արժեքը id()
, Տես նաեւ անփոփոխ.
«Անվանված tuple» տերմինը վերաբերում է ցանկացած տեսակի կամ դասի, որը ժառանգում է tuple-ից և որի ինդեքսավորվող տարրերը նույնպես հասանելի են անվանակոչված ատրիբուտների միջոցով: Տեսակը կամ դասը կարող են ունենալ նաև այլ հատկանիշներ:
Մի քանի ներկառուցված տեսակներ կոչվում են tuples, ներառյալ վերադարձված արժեքները time.localtime()
և os.stat()
. Մեկ այլ օրինակ է sys.float_info
:
>>> sys.float_info[1] # indexed access
1024
>>> sys.float_info.max_exp # named field access
1024
>>> isinstance(sys.float_info, tuple) # kind of tuple
True
Որոշ անվանված tuples ներկառուցված տեսակներ են (օրինակ, վերը նշված օրինակները): Որպես այլընտրանք, անվանված tuple կարող է ստեղծվել սովորական դասի սահմանումից, որը ժառանգում է tuple
և դա սահմանում է անվանված դաշտերը: Նման դասը կարելի է գրել ձեռքով կամ ստեղծվել գործարանային ֆունկցիայով collections.namedtuple()
. Վերջին տեխնիկան նաև ավելացնում է որոշ լրացուցիչ մեթոդներ, որոնք հնարավոր է չգտնվեն ձեռքով գրված կամ ներկառուցված անուններով զուգարաններում:
Այն վայրը, որտեղ պահվում է փոփոխականը: Անվանատարածքներն իրականացվում են որպես բառարաններ: Կան լոկալ, գլոբալ և ներկառուցված անունների տարածքներ, ինչպես նաև օբյեկտների մեջ (մեթոդներում) ներկառուցված անունների տարածքներ: Անվանատարածքներն աջակցում են մոդուլյարությանը՝ կանխելով անունների կոնֆլիկտները: Օրինակ, գործառույթները builtins.open
և os.open()
առանձնանում են իրենց անվանատարածքներով. Անվանատարածքները նաև օգնում են ընթեռնելիությանը և պահպանմանը` պարզ դարձնելով, թե որ մոդուլն է իրականացնում գործառույթը: Օրինակ՝ գրելը random.seed()
or itertools.islice()
հստակեցնում է, որ այդ գործառույթներն իրականացվում են random
և itertools
մոդուլներ, համապատասխանաբար:
A PEP 420 փաթեթ որը ծառայում է միայն որպես ենթափաթեթների կոնտեյներ։ Անվանատարածքի փաթեթները կարող են չունենալ ֆիզիկական ներկայացում և, մասնավորապես, նման չեն a սովորական փաթեթ քանի որ նրանք չունեն __init__.py
ֆայլը.
Տես նաեւ, մոդուլ.
Պարբերական սահմանման մեջ փոփոխականին անդրադառնալու ունակություն: Օրինակ՝ մեկ այլ ֆունկցիայի ներսում սահմանված ֆունկցիան կարող է վերաբերել արտաքին ֆունկցիայի փոփոխականներին: Նկատի ունեցեք, որ տեղադրված շրջանակները լռելյայն աշխատում են միայն հղման և ոչ նշանակման համար: Տեղական փոփոխականները և՛ կարդում, և՛ գրում են ամենաներքին շրջանակում: Նմանապես, գլոբալ փոփոխականները կարդում և գրում են գլոբալ անվանատարածքում: Այն nonlocal
թույլ է տալիս գրել արտաքին շրջանակներով:
Դասերի համի հին անվանումն այժմ օգտագործվում է դասի բոլոր առարկաների համար: Python-ի ավելի վաղ տարբերակներում միայն նոր ոճի դասերը կարող էին օգտագործել Python-ի ավելի նոր, բազմակողմանի հնարավորությունները, ինչպիսիք են. __slots__
, նկարագրիչներ, հատկություններ, __getattribute__()
, դասի մեթոդներ և ստատիկ մեթոդներ:
Ցանկացած տվյալ՝ վիճակով (հատկանիշներ կամ արժեք) և սահմանված վարքագիծ (մեթոդներ): Նաև ցանկացածի վերջնական բազային դասը նոր ոճի դաս.
Պիթոն մոդուլ որոնք կարող են պարունակել ենթամոդուլներ կամ ռեկուրսիվ՝ ենթափաթեթներ։ Տեխնիկապես փաթեթը Python մոդուլ է, որն ունի an __path__
հատկանիշը:
Տես նաեւ, սովորական փաթեթ և անվանատարածքի փաթեթ.
Անվանված էությունը ա ֆունկցիա (կամ մեթոդի) սահմանում, որը սահմանում է ան փաստարկ (կամ որոշ դեպքերում՝ արգումենտներ), որոնք ֆունկցիան կարող է ընդունել։ Կան հինգ տեսակի պարամետր.
դիրքային-կամ հիմնաբառ: նշում է արգումենտ, որը կարող է փոխանցվել նաև դիրքային առումով կամ որպես հիմնաբառի փաստարկ. Սա, օրինակ, լռելյայն տեսակի պարամետր է ֆու և բար հետեւյալ:
def func(foo, bar=None): ...
միայն դիրքային: նշում է արգումենտ, որը կարող է տրվել միայն դիրքով: Միայն դիրքային պարամետրերը կարող են սահմանվել՝ ներառելով a /
նիշը դրանցից հետո ֆունկցիայի սահմանման պարամետրերի ցանկում, օրինակ posonly1 և posonly2 հետեւյալ:
def func(posonly1, posonly2, /, positional_or_keyword): ...
միայն հիմնաբառ: նշում է արգումենտ, որը կարող է տրամադրվել միայն հիմնաբառով: Միայն հիմնաբառի պարամետրերը կարող են սահմանվել՝ ներառելով մեկ var-դիրքային պարամետր կամ մերկ *
դրանցից առաջ ֆունկցիայի սահմանման պարամետրերի ցանկում, օրինակ kw_ only1 և kw_ only2 հետեւյալ:
def func(arg, *, kw_only1, kw_only2): ...
var-դիրքային: նշում է, որ կարող է տրամադրվել դիրքային փաստարկների կամայական հաջորդականություն (ի լրումն այլ պարամետրերով արդեն ընդունված դիրքային փաստարկների): Նման պարամետրը կարող է սահմանվել՝ նախադրելով պարամետրի անունը *
, Օրինակ, աղեղներ հետեւյալ:
def func(*args, **kwargs): ...
var-հիմնաբառ: նշում է, որ կարող են կամայականորեն տրամադրվել բազմաթիվ հիմնաբառերի արգումենտներ (ի լրումն այլ պարամետրերով արդեն ընդունված բանալի բառի փաստարկների): Նման պարամետրը կարելի է սահմանել՝ նախադրելով պարամետրի անունը **
, Օրինակ, կվարգներ վերը նշված օրինակում:
Պարամետրերը կարող են նշել և՛ ընտրովի, և՛ պահանջվող արգումենտները, ինչպես նաև որոշ ընտրովի արգումենտների լռելյայն արժեքներ:
Տես նաեւ փաստարկ բառարանի մուտքը, ՀՏՀ հարցը արգումենտների և պարամետրերի տարբերությունըԷ, inspect.Parameter
դասարան, ի Ֆունկցիայի սահմանումներ բաժինը, և PEP 362.
Մեկ դիրք վրա ներմուծման ուղին , որի ուղու վրա հիմնված որոնիչ խորհրդակցում է ներմուծման համար մոդուլներ գտնելու համար:
A որոնիչ վերադարձված է կանչվողի կողմից sys.path_hooks
(այսինքն ա ուղու մուտքի կեռիկ) որը գիտի, թե ինչպես գտնել տրված մոդուլները a ուղու մուտքը.
Տեսնել importlib.abc.PathEntryFinder
այն մեթոդների համար, որոնք իրականացնում են ուղու մուտքի որոնիչները:
A callable վրա sys.path_hook
ցուցակ, որը վերադարձնում է ա ուղու մուտքի որոնիչ եթե այն գիտի, թե ինչպես գտնել մոդուլներ կոնկրետի վրա ուղու մուտքը.
Մեկը լռելյայն մետա ուղի որոնիչներ որը որոնում է ան ներմուծման ուղին մոդուլների համար.
Օբյեկտ, որը ներկայացնում է ֆայլային համակարգի ուղին: Ուղու նմանվող օբյեկտը կամ ա str
or bytes
ուղի ներկայացնող օբյեկտ կամ այն իրականացնող օբյեկտ os.PathLike
արձանագրություն։ Օբյեկտ, որն աջակցում է os.PathLike
արձանագրությունը կարող է փոխարկվել a str
or bytes
ֆայլային համակարգի ուղին՝ զանգահարելով os.fspath()
ֆունկցիա; os.fsdecode()
և os.fsencode()
կարող է օգտագործվել երաշխավորելու համար ա str
or bytes
արդյունքի փոխարեն, համապատասխանաբար: Ներկայացրեց PEP 519.
Python-ի ընդլայնման առաջարկ. PEP-ը նախագծային փաստաթուղթ է, որը տեղեկատվություն է տրամադրում Python համայնքին կամ նկարագրում է Python-ի կամ նրա գործընթացների կամ միջավայրի նոր առանձնահատկությունը: PEP-ները պետք է ներկայացնեն հակիրճ տեխնիկական բնութագրեր և առաջարկվող հատկանիշների հիմնավորում:
PEP-ները նախատեսված են լինել հիմնական մեխանիզմները՝ առաջարկելու հիմնական նոր առանձնահատկություններ, համայնքի տվյալների հավաքագրման համար խնդրի վերաբերյալ և փաստաթղթավորելու նախագծային որոշումները, որոնք մտել են Python-ում: PEP-ի հեղինակը պատասխանատու է համայնքի ներսում կոնսենսուսի ձևավորման և հակասական կարծիքների փաստագրման համար:
Տեսնել PEP 1.
Ֆայլերի մի շարք մեկ գրացուցակում (հնարավոր է պահված zip ֆայլում), որոնք նպաստում են անվանատարածքի փաթեթին, ինչպես սահմանված է PEP 420.
Տեսնել փաստարկ.
Ժամանակավոր API-ն այն է, որը միտումնավոր բացառվել է ստանդարտ գրադարանի հետադարձ համատեղելիության երաշխիքներից: Թեև նման ինտերֆեյսներում մեծ փոփոխություններ չեն սպասվում, քանի դեռ դրանք նշվում են որպես ժամանակավոր, հետընթաց անհամատեղելի փոփոխություններ (մինչև միջերեսի հեռացումը ներառյալ) կարող են տեղի ունենալ, եթե հիմնական մշակողները անհրաժեշտ համարեն: Նման փոփոխություններն անհատույց չեն կատարվի. դրանք տեղի կունենան միայն այն դեպքում, եթե բացահայտվեն լուրջ հիմնարար թերություններ, որոնք բաց են թողնվել մինչև API-ի ընդգրկումը:
Նույնիսկ ժամանակավոր API-ների համար, հետընթաց անհամատեղելի փոփոխությունները դիտվում են որպես «վերջին միջոցի լուծում». դեռևս կկատարվի ամեն փորձ՝ գտնելու հետադարձ համատեղելի լուծում ցանկացած հայտնաբերված խնդրի համար:
Այս գործընթացը թույլ է տալիս ստանդարտ գրադարանին շարունակել զարգանալ ժամանակի ընթացքում՝ առանց երկար ժամանակ փակելու դիզայնի խնդրահարույց սխալները: Տեսնել PEP 411 Մանրամասների համար
Տեսնել ժամանակավոր API.
Python 3.x թողարկման գծի մականունը (ստեղծվել է վաղուց, երբ 3-րդ տարբերակի թողարկումը ինչ-որ բան էր հեռավոր ապագայում:) Սա նաև հապավում է «Py3k»:
Գաղափար կամ կոդի կտոր, որը սերտորեն հետևում է Python լեզվի ամենատարածված բառակապակցություններին, այլ ոչ թե կոդն իրագործելու այլ լեզուների համար ընդհանուր հասկացություններով: Օրինակ՝ Python-ում տարածված արտահայտությունն է՝ a-ի միջոցով պտտել կրկնվողի բոլոր տարրերը for
հայտարարություն. Շատ այլ լեզուներ չունեն այս տեսակի կառուցվածք, ուստի Python-ին անծանոթ մարդիկ երբեմն օգտագործում են թվային հաշվիչը.
for i in range(len(food)):
print(food[i])
Ի տարբերություն մաքրող, Pythonic մեթոդի.
for piece in food:
print(piece)
Կետավոր անուն, որը ցույց է տալիս «ուղին» մոդուլի գլոբալ շրջանակից դեպի այդ մոդուլում սահմանված դաս, ֆունկցիա կամ մեթոդ, ինչպես սահմանված է. PEP 3155. Բարձր մակարդակի գործառույթների և դասերի համար որակավորված անունը նույնն է, ինչ օբյեկտի անունը.
>>> class C:
... class D:
... def meth(self):
... pass
...
>>> C.__qualname__
'C'
>>> C.D.__qualname__
'C.D'
>>> C.D.meth.__qualname__
'C.D.meth'
Երբ օգտագործվում է մոդուլներին անդրադառնալու համար, լրիվ որակավորված անուն նշանակում է ամբողջ կետավոր ուղին դեպի մոդուլ, ներառյալ ցանկացած մայր փաթեթ, օրինակ email.mime.text
:
>>> import email.mime.text
>>> email.mime.text.__name__
'email.mime.text'
Օբյեկտին հղումների քանակը: Երբ օբյեկտի հղման քանակն ընկնում է զրոյի, այն տեղաբաշխվում է: Հղումների հաշվումը սովորաբար տեսանելի չէ Python կոդի համար, բայց դա հիմնական տարրն է CPython իրականացում։ Այն sys
մոդուլը սահմանում է ա getrefcount()
ֆունկցիա, որը ծրագրավորողները կարող են կանչել՝ որոշակի օբյեկտի համար հղումների քանակը վերադարձնելու համար:
Ավանդական փաթեթ, օրինակ՝ գրացուցակ, որը պարունակում է an __init__.py
ֆայլը.
Տես նաեւ, անվանատարածքի փաթեթ.
Հայտարարություն դասի ներսում, որը խնայում է հիշողությունը՝ նախապես հայտարարելով տարածք օրինակ ատրիբուտների համար և վերացնելով օրինակների բառարանները: Չնայած հանրաճանաչ, տեխնիկան որոշակիորեն բարդ է ճիշտ ձեռք բերելու համար և լավագույնս վերապահված է հազվադեպ դեպքերի համար, երբ հիշողության համար կարևոր հավելվածում կան մեծ թվով օրինակներ:
An կրկնող որն աջակցում է տարրերի արդյունավետ հասանելիությանը՝ օգտագործելով ամբողջ թվային ինդեքսները __getitem__()
հատուկ մեթոդ և սահմանում ա __len__()
մեթոդ, որը վերադարձնում է հաջորդականության երկարությունը: Ներկառուցված հաջորդականության որոշ տեսակներ են list
, str
, tuple
, եւ bytes
. Նշենք, որ dict
աջակցում է նաև __getitem__()
և __len__()
, բայց համարվում է ավելի շուտ քարտեզագրում, քան հաջորդականություն, քանի որ որոնումները օգտագործում են կամայական անփոփոխ ստեղներ, այլ ոչ թե ամբողջ թվեր:
The collections.abc.Sequence
վերացական բազային դասը սահմանում է շատ ավելի հարուստ ինտերֆեյս, որը դուրս է գալիս արդարությունից __getitem__()
և __len__()
Ավելացնելով, count()
, index()
, __contains__()
, եւ __reversed__()
. Տեսակները, որոնք իրականացնում են այս ընդլայնված ինտերֆեյսը, կարող են ուղղակիորեն գրանցվել register()
.
Կոմպակտ եղանակ՝ բոլոր տարրերը կամ դրանց մի մասը կրկնվող ձևով մշակելու և արդյունքներով հավաքածու վերադարձնելու համար: results = {c for c in 'abracadabra' if c not in 'abc'}
առաջացնում է տողերի հավաքածու {'r', 'd'}
: Տեսնել Ցուցադրվում է ցուցակների, հավաքածուների և բառարանների համար.
Ձեւը ընդհանուր գործառույթ առաքում, որտեղ իրականացումն ընտրվում է մեկ փաստարկի տեսակի հիման վրա:
Օբյեկտ, որը սովորաբար պարունակում է a-ի մի մասը հերթականություն. Հատված է ստեղծվում՝ օգտագործելով ստորգետնյա նշումը, []
երկու կետով թվերի միջև, երբ տրված են մի քանիսը, օրինակ՝ in variable_name[1:3:5]
. Փակագծի (ենթագրային) նշումը օգտագործում է slice
առարկաներ ներսից:
Մեթոդ, որն անուղղակիորեն կոչվում է Python-ի կողմից որոշակի գործողություններ կատարելու համար, ինչպիսին է հավելումը: Նման մեթոդներն ունեն անուններ, որոնք սկսվում և ավարտվում են կրկնակի ընդգծումներով: Հատուկ մեթոդները փաստաթղթավորված են Հատուկ մեթոդների անվանումներ.
Հայտարարությունը փաթեթի մի մասն է (կոդի «բլոկ»): Հայտարարությունը կամ է արտահայտություն կամ հիմնաբառով մի քանի կառուցվածքներից մեկը, ինչպես օրինակ if
, while
or for
.
Python-ի C API-ում ուժեղ հղումը հղում է այն օբյեկտին, որը մեծացնում է օբյեկտի հղման թիվը, երբ այն ստեղծվում է, և նվազեցնում է օբյեկտի հղումների քանակը, երբ այն ջնջվում է:
The Py_NewRef()
ֆունկցիան կարող է օգտագործվել օբյեկտի նկատմամբ ուժեղ հղում ստեղծելու համար: Սովորաբար, որ Py_DECREF()
Գործառույթը պետք է կանչվի ուժեղ հղումի վրա՝ նախքան ուժեղ հղումի շրջանակից դուրս գալը՝ մեկ հղումի արտահոսքից խուսափելու համար:
Տես նաեւ, փոխառված տեղեկանք.
Python-ում տողը Unicode ծածկագրի կետերի հաջորդականությունն է (տիրույթում U+0000
-U+10FFFF
): Տողերը պահելու կամ փոխանցելու համար այն պետք է սերիականացվի որպես բայթերի հաջորդականություն:
Լարի սերիականացումը բայթերի հաջորդականության մեջ հայտնի է որպես «կոդավորում», իսկ տողի վերստեղծումը բայթերի հաջորդականությունից հայտնի է որպես «վերծանում»:
Կան տարբեր տեքստերի սերիականացման մի շարք codecs, որոնք միասին կոչվում են «տեքստային կոդավորումներ»։
A ֆայլի օբյեկտ կարողանալ կարդալ և գրել str
առարկաներ. Հաճախ տեքստային ֆայլը իրականում մուտք է գործում բայթ ուղղված տվյալների հոսք և կարգավորում է այն տեքստի կոդավորում ավտոմատ կերպով։ Տեքստային ֆայլերի օրինակներ են տեքստային ռեժիմով բացված ֆայլերը ('r'
or 'w'
), sys.stdin
, sys.stdout
, և դեպքեր io.StringIO
.
Տես նաեւ, երկուական ֆայլ ֆայլի օբյեկտի համար, որը կարող է կարդալ և գրել բայթ նման առարկաներ.
Տող, որը կապված է կամ չակերտի (”) կամ ապաստրոֆի (') երեք օրինակներով: Թեև դրանք չեն տրամադրում որևէ գործառույթ, որը հասանելի չէ մեկ մեջբերումով տողերով, դրանք օգտակար են մի շարք պատճառներով: Նրանք թույլ են տալիս ներառել չակերտավոր մեկ և կրկնակի չակերտներ տողի մեջ և կարող են ընդգրկել մի քանի տողեր՝ առանց շարունակական նիշի օգտագործման, ինչը հատկապես օգտակար է դարձնում փաստաթղթերի տողերը գրելիս:
Python օբյեկտի տեսակը որոշում է, թե ինչ տեսակի օբյեկտ է այն; յուրաքանչյուր առարկա ունի իր տեսակը. Օբյեկտի տեսակը հասանելի է որպես իր __class__
հատկանիշ կամ կարող է առբերվել type(obj)
.
Տիպի հոմանիշ, որը ստեղծվում է նույնացուցիչին տեսակը վերագրելով:
Տիպերի անունները օգտակար են պարզեցնելու համար տեսակի հուշումներ, Օրինակ:
def remove_gray_shades(
colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
pass
կարելի է ավելի ընթեռնելի դարձնել այսպես.
Color = tuple[int, int, int]
def remove_gray_shades(colors: list[Color]) -> list[Color]:
pass
Տեսնել typing
և PEP 484, որոնք նկարագրում են այս գործառույթը:
An անոտացիա որը սահմանում է փոփոխականի, դասի հատկանիշի կամ ֆունկցիայի պարամետրի կամ վերադարձի արժեքի ակնկալվող տեսակը:
Տիպի ակնարկները կամընտիր են և չեն պարտադրվում Python-ի կողմից, սակայն դրանք օգտակար են ստատիկ տիպերի վերլուծության գործիքների համար և օգնում են IDE-ներին՝ կոդի լրացման և վերամշակման համար:
Համաշխարհային փոփոխականների, դասի ատրիբուտների և ֆունկցիաների տիպի ակնարկներ, բայց ոչ տեղական փոփոխականների, կարելի է մուտք գործել՝ օգտագործելով typing.get_type_hints()
.
Տեսնել typing
և PEP 484, որոնք նկարագրում են այս գործառույթը:
Տեքստի հոսքերի մեկնաբանման եղանակ, որտեղ բոլոր հետևյալները ճանաչվում են որպես տող վերջացող. '\n'
, Windows-ի կոնվենցիան '\r\n'
, և հին Macintosh կոնվենցիան '\r'
: Տեսնել PEP 278 և PEP 3116, Ինչպես նաեւ bytes.splitlines()
լրացուցիչ օգտագործման համար։
An անոտացիա փոփոխականի կամ դասի հատկանիշի:
Փոփոխական կամ դասի հատկանիշ նշելիս հանձնարարությունը կամընտիր է.
class C:
field: 'annotation'
Փոփոխական ծանոթագրությունները սովորաբար օգտագործվում են տեսակի հուշումներՕրինակ, այս փոփոխականը ակնկալվում է վերցնել int
արժեքները.
count: int = 0
Փոփոխական անոտացիայի շարահյուսությունը բացատրվում է բաժնում Նշված առաջադրանքների հայտարարություններ.
Տեսնել ֆունկցիայի անոտացիա, PEP 484 և PEP 526, որոնք նկարագրում են այս գործառույթը: Տես նաև Անոտացիաների լավագույն փորձը ծանոթագրությունների հետ աշխատելու լավագույն փորձի համար:
Համագործակցաբար մեկուսացված գործարկման միջավայր, որը Python-ի օգտատերերին և հավելվածներին թույլ է տալիս տեղադրել և թարմացնել Python բաշխման փաթեթները՝ չխանգարելով նույն համակարգում աշխատող Python-ի այլ հավելվածների վարքագծին:
Տես նաեւ, venv
.
Համակարգիչ, որն ամբողջությամբ սահմանված է ծրագրային ապահովման մեջ: Python-ի վիրտուալ մեքենան իրականացնում է բայթկոդ թողարկված բայթկոդ կազմողի կողմից:
Python-ի նախագծման սկզբունքների և փիլիսոփայությունների ցանկ, որոնք օգտակար են լեզուն հասկանալու և օգտագործելու համար: Ցուցակը կարելի է գտնել՝ մուտքագրելով «import this
ինտերակտիվ հուշումով:
Python-ը հասուն ծրագրավորման լեզու է, որը կայունության համբավ է հաստատել: Այս համբավը պահպանելու համար մշակողները կցանկանային իմանալ Python-ում ձեր հայտնաբերած բոլոր թերությունների մասին:
Երբեմն կարող է ավելի արագ լինել ինքներդ շտկել սխալները և տեղադրել Python-ին պատչեր, քանի որ այն հեշտացնում է գործընթացը և ներառում է ավելի քիչ մարդկանց: Իմացեք, թե ինչպես աջակցել.
Եթե այս փաստաթղթերում վրիպակ եք գտնում կամ ցանկանում եք բարելավում առաջարկել, խնդրում ենք ներկայացնել վրիպակի մասին հաշվետվություն բուքսիր. Եթե ունեք առաջարկ, թե ինչպես դա շտկել, ներառեք նաև դա:
Եթե ժամանակի քիչ եք, կարող եք նաև էլեկտրոնային փոստով ուղարկել փաստաթղթերի վրիպակների մասին հաշվետվություններ [էլեկտրոնային փոստով պաշտպանված] (վարքային սխալները կարող են ուղարկվել [էլեկտրոնային փոստով պաշտպանված]) '[էլեկտրոնային փոստով պաշտպանված]' փոստային ցուցակ է, որը վարում են կամավորները. ձեր հարցումը կնկատվի, թեև դրա մշակումը կարող է որոշ ժամանակ տևել:
Տես նաեւ,
Փաստաթղթերի սխալների ցանկ, որոնք ներկայացվել են Python-ի խնդիրների հետագծողին:
Թրեքերի բարելավման մասին զեկուցման հետ կապված գործընթացի ակնարկ:
Համապարփակ ուղեցույց այն անհատների համար, ովքեր հետաքրքրված են Python-ի փաստաթղթերում ներդրում ունենալով:
Փաստաթղթերի թարգմանության համար GitHub էջերի և դրանց հիմնական կոնտակտների ցանկը:
Սխալների մասին հաշվետվությունները հենց Python-ի համար պետք է ներկայացվեն Python Bug Tracker-ի միջոցով (https://bugs.python.org/): Սխալների որոնիչն առաջարկում է վեբ ձև, որը թույլ է տալիս մուտքագրել համապատասխան տեղեկատվություն և ներկայացնել մշակողներին:
Հաշվետվություն ներկայացնելու առաջին քայլը պարզելն է, թե արդյոք խնդիրն արդեն զեկուցվել է: Դա անելու առավելությունը, բացի մշակողների ժամանակ խնայելուց, այն է, որ դուք սովորում եք, թե ինչ է արվել այն շտկելու համար. կարող է լինել, որ խնդիրն արդեն շտկվել է հաջորդ թողարկման համար, կամ անհրաժեշտ է լրացուցիչ տեղեկատվություն (այս դեպքում կարող եք տրամադրել այն, եթե կարող եք): Դա անելու համար որոնեք սխալների տվյալների բազան՝ օգտագործելով էջի վերևի որոնման դաշտը:
Եթե ձեր հաղորդած խնդիրն արդեն չկա վրիպակների հետագծում, վերադարձեք Python Bug Tracker և մուտք գործեք: OpenID մատակարարի լոգոներից մեկը կողագոտում: Անանուն սխալի մասին հաշվետվություն ներկայացնել հնարավոր չէ:
Այժմ մուտք գործելով՝ կարող եք վրիպակ ներկայացնել: Սխալների հաշվետվության ձևը բացելու համար ընտրեք «Ստեղծել նոր» հղումը կողագոտում:
Ներկայացման ձևն ունի մի շարք դաշտեր: «Վերնագիր» դաշտի համար մուտքագրեք a շատ խնդրի կարճ նկարագրություն; տասը բառից պակաս լավ է: «Տեսակ» դաշտում ընտրեք ձեր խնդրի տեսակը. ընտրեք նաև «Բաղադրիչը» և «Տարբերակները», որոնց վերաբերվում է սխալը:
«Մեկնաբանություն» դաշտում մանրամասն նկարագրեք խնդիրը՝ ներառյալ այն, թե ինչ եք ակնկալում, որ տեղի կունենա և ինչ է տեղի ունեցել: Համոզվեք, որ ներառեք, թե արդյոք ընդլայնման մոդուլներ ներգրավված են եղել, և թե ինչ ապարատային և ծրագրային հարթակ եք օգտագործում (ներառյալ տարբերակի մասին տեղեկությունները, ըստ անհրաժեշտության):
Սխալների յուրաքանչյուր հաշվետվություն կհատկացվի մշակողին, ով կորոշի, թե ինչ պետք է արվի խնդիրը շտկելու համար: Դուք թարմացում կստանաք ամեն անգամ, երբ վրիպակի դեմ գործողություն կատարվի:
Տես նաեւ,
Հոդված, որը մանրամասնում է, թե ինչպես ստեղծել օգտակար վրիպակի հաշվետվություն: Սա նկարագրում է, թե ինչպիսի տեղեկատվություն է օգտակար և ինչու է այն օգտակար:
Տեղեկություններ սխալի մասին լավ հաշվետվություն գրելու մասին: Դրանցից մի քանիսը հատուկ են Mozilla նախագծին, բայց նկարագրում են ընդհանուր լավ փորձը:
Բացի ձեր հայտնաբերած սխալների մասին զեկուցելուց, դուք կարող եք նաև ուղարկել կարկատներ՝ դրանք շտկելու համար: Դուք կարող եք ավելի շատ տեղեկություններ գտնել այն մասին, թե ինչպես սկսել Python-ի կարկատումը Python-ի մշակողների ուղեցույց. Եթե ունեք հարցեր, ապա հիմնական մենթորության փոստային ցուցակը բարեկամական վայր է Python-ում խնդիրների շտկման գործընթացին վերաբերող ցանկացած և բոլոր հարցերի պատասխանները ստանալու համար: