Ενσωματωμένες (Built-in) Συναρτήσεις

O interpreter της Python έχει έναν αριθμό από συναρτήσεις και τύπους ενσωματωμένους (built-in) σε αυτόν, που είναι πάντα διαθέσιμα. Παρατίθενται εδώ με αλφαβητική σειρά.

Ενσωματωμένες (Built-in) Συναρτήσεις

abs(x)

Επιστρέφει την απόλυτη τιμή ενός αριθμού. Το όρισμα μπορεί να είναι ένας ακέραιος, ένας αριθμός κινητής υποδιαστολής, ή ένα αντικείμενο που υλοποιεί την__abs__(). Εάν το όρισμα είναι ένας μιγαδικός αριθμός επιστρέφεται το μέγεθός του.

aiter(async_iterable)

Επιστρέφεται έναςasynchronous iterator για έναasynchronous iterable. Ισοδυναμεί με την κλήση τουx.__aiter__().

Σημείωση: Σε αντίθεση με τοiter(), τοaiter() δεν έχει παραλλαγή 2 ορισμάτων.

Added in version 3.10.

all(iterable)

ΕπιστρέφειTrue εάν όλα τα στοιχεία τουiterable είναι true (ή εάν το iterable είναι κενό). Ισοδυναμεί με:

defall(iterable):forelementiniterable:ifnotelement:returnFalsereturnTrue
awaitableanext(async_iterator)
awaitableanext(async_iterator,default)

Όταν αναμένεται, επιστρέφεται το επόμενο στοιχείο από τοasynchronous iterator, ήdefault (προεπιλογή) εάν δίνεται και ο iterator έχει εξαντληθεί.

Αυτό είναι μια ασύγχρονη παραλλαγή της ενσωματωμένης συνάρτησηςnext(), και συμπεριφέρεται παρόμοια.

Αυτό καλεί την μέθοδο__anext__() τουasync_iterator, επιστρέφοντας έναawaitable. Αναμένοντας αυτό, επιστρέφει την επόμενη τιμή του iterator. Αν δίνεται τοdefault (προεπιλογή), αυτό επιστρέφεται εάν ο iterator έχει εξαντληθεί, αλλιώς γίνεται raise έναStopAsyncIteration.

Added in version 3.10.

any(iterable)

ΕπιστρέφειTrue εάν οποιοδήποτε στοιχείο τουiterable είναι αληθές. Εάν το iterable είναι κενό, επιστρέφειFalse. Ισοδυναμεί με:

defany(iterable):forelementiniterable:ifelement:returnTruereturnFalse
ascii(object)

Όπως ηrepr(), επιστρέφει μια συμβολοσειρά που περιέχει μια εκτυπώσιμη απεικόνιση ενός αντικειμένου, αλλά αναιρεί τους μη-ASCII χαρακτήρες στη συμβολοσειρά που επιστρέφεται από τοrepr() χρησιμοποιώντας\x,\u, ή\U αποδράσεις. Αυτό παράγει μια συμβολοσειρά παρόμοια με αυτή που επιστρέφεται από τηνrepr() στην Python 2.

bin(x)

Μετατροπή ενός ακέραιου αριθμού σε μια δυαδική συμβολοσειρά με πρόθεμα «0b». Το αποτέλεσμα είναι μια έγκυρη έκφραση Python. Εάν τοx δεν είναι αντικείμενο της Pythonint, πρέπει να οριστεί μια μέθοδος__index__() που επιστρέφει έναν ακέραιο αριθμό. Κάποια παραδείγματα:

>>>bin(3)'0b11'>>>bin(-10)'-0b1010'

Εάν το πρόθεμα «0b» είναι επιθυμητό ή όχι, μπορείτε να χρησιμοποιήσετε έναν από τους παρακάτω τρόπους.

>>>format(14,'#b'),format(14,'b')('0b1110', '1110')>>>f'{14:#b}',f'{14:b}'('0b1110', '1110')

Δείτε επίσης τηformat() για περισσότερες πληροφορίες.

classbool(object=False,/)

Επιστρέφετε μια δυαδική τιμή, π.χ. μία από τις τιμέςTrue ήFalse. Το όρισμα μετατρέπεται χρησιμοποιώντας την τυπικήtruth testing procedure. Εάν το όρισμα είναι ψευδές ή παραλειφθεί, αυτό επιστρέφειFalse``∙διαφορετικά,επιστρέφει``True. Η κλάσηbool είναι μια υποκλάση τηςint (βλ.Αριμθητικοί Τύποι — int, float, complex). Δεν μπορεί να γίνει περαιτέρω υποκλάση. Οι μόνες περιπτώσεις είναιFalse καιTrue (βλ.Τύπος Boolean - :class`bool`).

Άλλαξε στην έκδοση 3.7:Η παράμετρος είναι πλέον μόνο παράμετρος θέσης.

breakpoint(*args,**kws)

Αυτή η συνάρτηση μας μεταφέρει στο πρόγραμμα εντοπισμού σφαλμάτων στην τοποθεσία της κλήσης. Συγκεκριμένα, καλεί τοsys.breakpointhook(), περνώντας απευθείας ταargs καιkws. Από προεπιλογή, τοsys.breakpointhook() καλεί τηνpdb.set_trace() χωρίς να περιμένει ορίσματα. Σε αυτήν την περίπτωση, είναι καθαρά μια βολική συνάρτηση, επομένως δεν χρειάζεται να εισάγετε ρητά τοpdb ή να πληκτρολογήσετε τόσο πολύ κώδικα. Ωστόσο ηsys.breakpointhook() μπορεί να ρυθμιστεί σε κάποια άλλη συνάρτηση και τοbreakpoint() θα το καλέσει αυτόματα, επιτρέποντας σας να πέσετε στο πρόγραμμα εντοπισμού σφαλμάτων της επιλογής σας. Εάν ηsys.breakpointhook() δεν είναι προσβάσιμη, αυτή η συνάρτηση θα κάνει raise τοRuntimeError.

Από προεπιλογή, η συμπεριφορά τηςbreakpoint() μπορεί να αλλάξει με την μεταβλητή περιβάλλοντοςPYTHONBREAKPOINT. Βλ. τηνsys.breakpointhook() για λεπτομέρειες χρήσης.

Λάβετε υπόψη ότι αυτό δεν είναι εγγυημένο εάν ηsys.breakpointhook() έχει αντικατασταθεί.

Εγείρει έναauditing eventbuiltins.breakpoint με όρισμαbreakpointhook.

Added in version 3.7.

classbytearray(source=b'')
classbytearray(source,encoding)
classbytearray(source,encoding,errors)

Επιστρέφετε ένας νέος πίνακας από bytes. Η κλάσηbytearray είναι μια μεταβλητή ακολουθία ακεραίων στο εύρος 0 <= x < 256. Έχει τις περισσότερες από τις συνήθεις μεθόδους μεταβλητών ακολουθιών, που περιγράφονται στοΤύποι Μεταβλητών Ακολουθιών (Sequences), καθώς και τις περισσότερες μεθόδους που έχει ο τύποςbytes, δείτεΛειτουργίες Bytes και Bytearray.

Η προαιρετική παράμετροςsource μπορεί να χρησιμοποιηθεί για την αρχικοποίηση του πίνακα με μερικούς διαφορετικούς τρόπους:

  • Εάν είναιstring, πρέπει επίσης να δώσετε τις παραμέτρουςencoding (και προαιρετικά,errors)∙ ηbytearray() στη συνέχεια μετατρέπει τη συμβολοσειρά σε byte χρησιμοποιώνταςstr.encode().

  • Εάν είναιinteger, ο πίνακας θα έχει αυτό το μέγεθος και θα αρχικοποιηθεί με null bytes.

  • Εάν είναι αντικείμενο που συμμορφώνεται με τοbuffer interface, θα χρησιμοποιηθεί μια προσωρινή μνήμη μόνο για ανάγνωση του αντικείμενου για την προετοιμασία του πίνακα με τα bytes.

  • Εάν είναιiterable, πρέπει να είναι ένας iterable ακεραίων στο εύρος0<=x<256, οι οποίοι χρησιμοποιούνται ως αρχικά περιεχόμενα του πίνακα.

Χωρίς όρισμα δημιουργείται ένας πίνακας μεγέθους 0.

Βλ. επίσηςΤύποι δυαδικής ακολουθίας — bytes, bytearray, memoryview καιΑντικείμενα Bytearray.

classbytes(source=b'')
classbytes(source,encoding)
classbytes(source,encoding,errors)

Επιστρέφεται ένα νέο αντικείμενο «bytes», που είναι μια αμετάβλητη ακολουθία ακεραίων στο εύρος0<=x<256. Ηbytes είναι μια αμετάβλητη έκδοση τουbytearray – έχει τις ίδιες μεθόδους χωρίς μετάλλαξη και την ίδια συμπεριφορά ευρετηριοποίησης και τεμαχισμού.

Συνεπώς, τα ορίσματα του constructor ερμηνεύονται ωςbytearray().

Τα αντικείμενα bytes μπορούν επίσης να δημιουργηθούν με literals, βλέπεString and Bytes literals.

Βλέπε επίσηςΤύποι δυαδικής ακολουθίας — bytes, bytearray, memoryview,Αντικείμενα Bytes, καιΛειτουργίες Bytes και Bytearray.

callable(object)

ΕπιστρέφειTrue εάν το όρισμαobject εμφανίζεται ως callable, καιFalse εάν όχι. Εάν αυτό επιστρέψειTrue, είναι ακόμα πιθανό μια κλήση να αποτύχει, αλλά εάν είναιFalse, η κλήση τουobject δεν θα πετύχει ποτέ. Σημειώστε ότι οι κλάσεις μπορούν να κληθούν (η κλήση μιας κλάσης επιστρέφει ένα νέο instance). Τα instances μπορούν να κληθούν αν η κλάση τους έχει τη μέθοδο__call__().

Added in version 3.2:Αυτή η συνάρτηση πρώτα αφαιρέθηκε στην Python 3.0 και στη συνέχεια επανήλθε στην Python 3.2.

chr(i)

Επιστρέφει τη συμβολοσειρά που αντιπροσωπεύει έναν χαρακτήρα του οποίου ο κωδικός σημείου Unicode είναι ο ακέραιοςi. Για παράδειγμα,chr(97) επιστρέφει τη συμβολοσειρά'a', ενώ τοchr(8364) επιστρέφει τη συμβολοσειρά'€'. Αυτό είναι το αντίστροφο τουord().

Το έγκυρο εύρος για το όρισμα είναι από 0 έως 1,114,111 (0x10FFFF στη βάση 16). ΤοValueError θα γίνει raise εάν τοi είναι εκτός αυτού του εύρους.

@classmethod

Μετατροπή μιας μεθόδου σε μέθοδο κλάσης.

Μια μέθοδος κλάσης λαμβάνει την κλάση ως σιωπηρό πρώτο όρισμα, όπως μια instance μέθοδος λαμβάνει το instance. Για να δηλώσετε μια μέθοδο κλάσης, χρησιμοποιήστε αυτό το ιδίωμα:

classC:@classmethoddeff(cls,arg1,arg2):...

Η φόρμα@classmethod είναι μια συνάρτησηdecorator – βλέπεFunction definitions για λεπτομέρειες.

Μια μέθοδος κλάσης μπορεί να κληθεί είτε στην κλάση (όπωςC.f()) είτε σε ένα instance (όπωςC().f()). Το instance αγνοείται εκτός από την κλάση της. Εάν μια μέθοδος κλάσης καλείται για μια παραγόμενη κλάση, το αντικείμενο παραγόμενης κλάσης μεταβιβάζεται ως το υπονοούμενο πρώτο όρισμα.

Οι μέθοδοι κλάσης διαφέρουν από τις στατικές μεθόδους C++ ή Java. Αν θέλετε, ανατρέξτε στοstaticmethod() σε αυτήν την ενότητα. Για περισσότερες πληροφορίες σχετικά με τις μεθόδους κλάσης, ανατρέξτε στοThe standard type hierarchy.

Άλλαξε στην έκδοση 3.9:Οι μέθοδοι κλάσης μπορούν πλέον να αναδιπλώσουν άλλουςdescriptors όπως ηproperty().

Άλλαξε στην έκδοση 3.10:Οι μέθοδοι κλάσης κληρονομούν πλέον τα χαρακτηριστικά της μεθόδους (__module__,__name__,__qualname__,__doc__ and__annotations__) και έχουν ένα νέο χαρακτηριστικό__wrapped__.

Deprecated since version 3.11, removed in version 3.13:Οι μέθοδοι κλάσης δεν μπορούν πλέον να κάνουν wrap άλλουςdescriptors όπωςproperty().

compile(source,filename,mode,flags=0,dont_inherit=False,optimize=-1)

Μεταγλωττίστε τοsource σε έναν κώδικα ή αντικείμενο AST. Τα αντικείμενα κώδικα μπορούν να εκτελεστούν απόexec() ήeval(). Ηsource μπορεί να είναι είτε μια κανονική συμβολοσειρά, μια συμβολοσειρά byte ή μια συμβολοσειρά AST αντικείμενου. Ανατρέξτε στην τεκμηρίωση του moduleast για πληροφορίες σχετικά με τον τρόπο εργασίας με αντικείμενα AST.

Το όρισμαfilename θα πρέπει να δίνει το αρχείο από το οποίο διαβάζεται ο κώδικας∙ να περάσει κάποια αναγνωρίσιμη τιμή εάν δεν διαβαστεί από ένα αρχείο (χρησιμοποιείται συνήθως'<string>').

Το όρισμαmode καθορίζει το είδος του κώδικα που πρέπει να μεταγλωττιστεί∙ μπορεί να είναι'exec' εάν ηsource αποτελείται από μια ακολουθία δηλώσεων,'eval' εάν αποτελείται από μία μόνο έκφραση, ή'single' εάν αποτελείται από μία μόνο διαδραστική πρόταση (στην τελευταία περίπτωση, θα εκτυπωθούν δηλώσεις έκφρασης που αξιολογούνται σε κάτι διαφορετικό απόNone).

Τα προαιρετικά ορίσματαflags καιdont_inherit ελέγχουν ποιεςcompiler options θα πρέπει να ενεργοποιηθούν και ποιεςfuture features θα πρέπει να επιτρέπονται. Εάν δεν υπάρχει καμία (ή και οι δύο είναι μηδέν) ο κώδικας μεταγλωττίζεται με τα ίδια flags που επηρεάζουν τον κώδικα που καλείcompile(). Εάν το όρισμαflags δίνεται και τοdont_inherit δεν είναι (ή είναι μηδέν), τότε οι επιλογές του μεταγλωττιστή και οι μελλοντικές δηλώσεις που καθορίζονται από το όρισμαflags χρησιμοποιούνται ανεξάρτητα από αυτές που θα χρησιμοποιούνταν ούτως ή άλλως. Εάν τοdont_inherit είναι ένα μη μηδενικός ακέραιος, τότε το όρισμαflags είναι αυτό – οι σημαίες (μελλοντικές δυνατότητες και επιλογές μεταγλωττιστή) στον περιβάλλοντα κώδικα αγνοούνται.

Οι επιλογές του μεταγλωττιστή και οι μελλοντικές εντολές καθορίζονται από bits που μπορούν να συνδυαστούν κατά bit ORed μαζί για να καθορίσουν πολλές επιλογές. Το πεδίο bit που απαιτείται για το καθορισμό ενός δεδομένου μελλοντικού χαρακτηριστικού μπορεί να βρεθεί ως το χαρακτηριστικόcompiler_flag στο_Feature instance του module__future__.Compiler flags μπορούν να βρεθούν στο moduleast, με το πρόθεμαPyCF_.

Το όρισμαoptimize καθορίζει το επίπεδο βελτιστοποίησης του μεταγλωττιστή∙ η προεπιλεγμένη τιμή-1 επιλέγει το επίπεδο βελτιστοποίησης του διερμηνέα όπως δίνεται από τις επιλογές-O. Τα ρητά επίπεδα είναι0 (χωρίς βελτιστοποίηση∙ το__debug__ είναι αληθές),1 (οι ισχυρισμοί καταργήθηκαν, το__debug__ είναι ψευδές) ή2 (οι συμβολοσειρές εγγραφών καταργήθηκαν επίσης).

Αυτή η συνάρτηση κάνει raiseSyntaxError εάν ο μεταγλωττισμένος κώδικας είναι άκυρος, και τοValueError εάν ο κώδικας περιλαμβάνει null bytes.

Εάν θέλετε να αναλύσετε τον κώδικα Python στην αναπαράσταση του AST, δείτε τοast.parse().

Κάνει raise έναauditing eventcompile με ορίσματαsource καιfilename. Αυτό το συμβάν μπορεί επίσης να προκύψει από έμμεση μεταγλώττιση.

Σημείωση

Κατά τη μεταγλώττιση μιας συμβολοσειράς με κωδικό πολλαπλών γραμμών στη λειτουργία'single' ή'eval', η είσοδος πρέπει να τερματίζεται με τουλάχιστον έναν χαρακτήρα νέας γραμμής. Αυτό γίνεται για να διευκολυνθεί ο εντοπισμός μη ολοκληρωμένων και ολοκληρωμένων δηλώσεων στο modulecode.

Προειδοποίηση

Είναι δυνατό να καταρρεύσει ο interpreter της Python με μια αρκετά μεγάλη/σύνθετη συμβολοσειρά κατά τη μεταγλώττιση σε ένα αντικείμενο AST λόγω περιορισμών βάθους στοίβας στον μεταγλωττιστή AST της Python.

Άλλαξε στην έκδοση 3.2:Επιτρέπεται η χρήση νέων γραμμών Windows και Mac. Επίσης, η εισαγωγή στη λειτουργία'exec' δεν χρειάζεται πλέον να τελειώνει σε νέα γραμμή. Προστέθηκε η παράμετροςoptimize.

Άλλαξε στην έκδοση 3.5:Προηγουμένως, τοTypeError έγινε raise όταν null bytes συναντήθηκαν στοsource.

Added in version 3.8:ast.PyCF_ALLOW_TOP_LEVEL_AWAIT μπορεί τώρα να μεταβιβαστεί σε σημαίες για να ενεργοποιηθεί η υποστήριξη γιαawait,asyncfor, καιasyncwith.

classcomplex(number=0,/)
classcomplex(string,/)
classcomplex(real=0,imag=0)

Μετατρέπει μια συμβολοσειρά ή έναν αριθμό σε έναν μιγαδικό αριθμό ή δημιουργεί έναν μιγαδικό αριθμός από πραγματικά και φανταστικά μέρη.

Παραδείγματα:

Αν το όρισμα είναι συμβολοσειρά, πρέπει να περιέχει είτε ένα πραγματικό μέρος (στην ίδια μορφή όπως για τοfloat()) είτε ένα φανταστικό μέρος (στην ίδια μορφή αλλά με επίθημα'j' ή'J') ή και πραγματικά και φανταστικά μέρη (το πρόσημο του φανταστικού τμήματος είναι υποχρεωτικό σε αυτήν την περίπτωση). Η συμβολοσειρά μπορεί προαιρετικά να περιβάλλεται από κενά διαστήματα και τις στρογγυλές παρενθέσεις'(' και')' οι οποίες αγνοούνται. Η συμβολοσειρά δεν πρέπει να περιέχει κενό διάστημα μεταξύ των'+','-' του επιθέματος'j' ή'J' και του δεκαδικού αριθμού. Για παράδειγμα, τοcomplex('1+2j') είναι εντάξει, αλλά τοcomplex('1+2j') κάνει raise μιαValueError. Πιο συγκεκριμένα, η είσοδος πρέπει να συμμορφώνεται με τον κανόνας παραγωγήςcomplexvalue στην ακόλουθη γραμματική, αφού αφαιρεθούν οι παρενθέσεις και οι χαρακτήρες του κενών διαστημάτων στο τέλος:

complexvalue:floatvalue |floatvalue ("j" |"J") |floatvaluesignabsfloatvalue ("j" |"J")

Εάν το όρισμα είναι αριθμός, ο κατασκευαστής χρησιμεύει ως αριθμητική μετατροπή όπωςint καιfloat. Για ένα γενικό αντικείμενο Pythonx, τοcomplex(x) εκχωρεί στοx.__complex__(). Εάν το__complex__() δεν έχει οριστεί, τότε επιστρέφει στο__float__(). Εάν το__float__() δεν έχει οριστεί τότε επιστρέφει στο__index__().

Εάν παρέχονται δύο ορίσματα ή χρησιμοποιούνται ορίσματα λέξης-κλειδιού, κάθε όρισμα μπορεί να είναι οποιουδήποτε αριθμητικού τύπου (συμπεριλαμβανομένων των μιγαδικών). Εάν και τα δύο ορίσματα είναι πραγματικοί αριθμοί, επιστρέψτε έναν μιγαδικό αριθμό με το πραγματικό στοιχείοreal και το φανταστικό στοιχείοimag. Εάν και τα δύο ορίσματα είναι μιγαδικοί αριθμοί, επιστρέψτε έναν μιγαδικό αριθμό με το πραγματικό στοιχείοreal.real-imag.imag καιreal.imag+imag.real. Αν ένα από τα ορίσματα είναι πραγματικός αριθμός, χρησιμοποιείται μόνο το πραγματικό στοιχείο στις παραπάνω εκφράσεις.

Δείτε επίσης τηνcomplex.from_number() που δέχεται μόνο ένα αριθμητικό όρισμα.

Εάν παραληφθούν όλα τα ορίσματα, επιστρέφει0j

Ο μιγαδικός τύπος περιγράφεται στοΑριμθητικοί Τύποι — int, float, complex.

Άλλαξε στην έκδοση 3.6:Επιτρέπεται η ομαδοποίηση ψηφίων με κάτω παύλες όπως στα literals του κώδικα.

Άλλαξε στην έκδοση 3.8:Επιστρέφει πίσω στη__index__() εάν η__complex__() και η__float__() δεν ορίζονται.

Αποσύρθηκε στην έκδοση 3.14:Η διαβίβαση ενός μιγαδικού αριθμού ως τοreal ήimag όρισμα έχει πλέον καταργηθεί∙ θα πρέπει να διαβιβάζεται μόνο ως ένα μοναδικό όρισμα θέσης.

delattr(object,name)

Αυτό είναι σχετικό τηςsetattr(). Τα ορίσματα είναι ένα αντικείμενο και μια συμβολοσειρά. Η συμβολοσειρά πρέπει να είναι το όνομα ενός από τα χαρακτηριστικά του αντικειμένου. Η συνάρτηση διαγράφει το επώνυμο χαρακτηριστικό, υπό την προϋπόθεση ότι το αντικείμενο το επιτρέπει. Για παράδειγμα, τοdelattr(x,'foobar') είναι ισοδύναμο με τοdelx.foobar. Τοname δεν χρειάζεται να είναι αναγνωριστικό της Python (δείτεsetattr()).

classdict(**kwarg)
classdict(mapping,**kwarg)
classdict(iterable,**kwarg)

Δημιουργεί ένα νέο λεξικό. Το αντικείμενοdict είναι η κλάση λεξικού. Δείτε τοdict και τοΤύποι αντιστοίχισης — dict για τεκμηρίωση σχετικά με αυτή την κατηγορία.

Για άλλα containers, δείτε τις ενσωματωμένες κλάσειςlist,set, καιtuple, καθώς και το modulecollections.

dir()
dir(object)

Χωρίς ορίσματα, επιστρέφει τη λίστα ονομάτων στο τρέχον τοπικό πεδίο. Με ένα όρισμα, προσπαθεί να επιστρέψει μια λίστα έγκυρων χαρακτηριστικών για αυτό το αντικείμενο.

Εάν το αντικείμενο έχει μία μέθοδο με το όνομα__dir__(), αυτή η μέθοδος θα καλείται και πρέπει να επιστρέψει μια λίστα από χαρακτηριστικά. Αυτό επιτρέπει τα αντικείμενα που υλοποιούν μια εξατομικευμένη συνάρτηση__getattr__() or__getattribute__() για την προσαρμογή του τρόπου με τον οποίο ηdir() αναφέρει τα χαρακτηριστικά.

Εάν το αντικείμενο δεν παρέχει την__dir__(), η συνάρτηση προσπαθεί να συλλέξει πληροφορίες από το χαρακτηριστικό__dict__ του αντικειμένου, εάν έχει οριστεί, και από το αντικείμενο του τύπου του. Η λίστα που παράγεται ως αποτέλεσμα δεν είναι απαραίτητα πλήρης και μπορεί να είναι ανακριβής όταν το αντικείμενο έχει εξατομικευμένη__getattr__().

Ο προεπιλεγμένος μηχανισμόςdir() συμπεριφέρεται διαφορετικά με διαφορετικούς τύπους αντικειμένων, καθώς προσπαθεί να παράγει τις πιο σχετικές και όχι τις πιο ολοκληρωμένες πληροφορίες:

  • Εάν το αντικείμενο είναι module τύπου αντικειμένου, η λίστα περιέχει τα ονόματα των χαρακτηριστικών του module.

  • Εάν το αντικείμενο είναι ένας τύπος ή κλάση αντικειμένου, η λίστα περιέχει τα ονόματα των χαρακτηριστικών του, και αναδρομικά τα χαρακτηριστικά της βάσεώς του.

  • Εναλλακτικά, η λίστα περιέχει τα ονόματα των χαρακτηριστικών του αντικειμένου, τα ονόματα των χαρακτηριστικών της κλάσης, και αναδρομικά τα χαρακτηριστικά της κλάσης βάσεως της κλάσης.

Η παραγόμενη λίστα είναι ταξινομημένη αλφαβητικά. Για παράδειγμα:

>>>importstruct>>>dir()# show the names in the module namespace['__builtins__', '__name__', 'struct']>>>dir(struct)# show the names in the struct module['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from']>>>classShape:...def__dir__(self):...return['area','perimeter','location']...>>>s=Shape()>>>dir(s)['area', 'location', 'perimeter']

Σημείωση

Επειδή ηdir() παρέχεται κυρίως ως ευκολία για χρήση σε μια διαδραστική γραμμή εντολών, προσπαθεί να παρέχει ένα ενδιαφέρον σύνολο ονομάτων περισσότερα από οτιδήποτε προσπαθεί να παρέχει ένα αυστηρό ή με συνέπεια, καθορισμένο σύνολο ονομάτων, και η λεπτομερής συμπεριφορά του μπορεί να αλλάξει μεταξύ των εκδόσεων. Για παράδειγμα, τα χαρακτηριστικά μετακλάσης δεν βρίσκονται στη λίστα αποτελεσμάτων όταν το όρισμα είναι μια κλάση.

divmod(a,b)

Λαμβάνει δύο (μη μιγαδικούς) αριθμούς ως ορίσματα και επιστρέφει ένα ζεύγος αριθμών που αποτελείται από το πηλίκο και το υπόλοιπο τους όταν χρησιμοποιείται σε διαίρεση ακεραίου αριθμού. Με μεικτούς τύπους τελεστών, ισχύουν οι κανόνες για δυαδικούς τελεστές αριθμητικής. Για ακέραιους αριθμούς, το αποτέλεσμα είναι το ίδιο με(a//b,a%b). Για αριθμούς κινητής υποδιαστολής το αποτέλεσμα είναι(q,a%b), όπου τοq είναι συνήθωςmath.floor(a/b) αλλά μπορεί να είναι μικρότερο κατά 1. Σε κάθε περίπτωση, τοq*b+a%b είναι πολύ κοντά στοa, αν τοa%b δεν είναι μηδενικό, έχει το ίδιο πρόσημο όπως τοb, και0<=abs(a%b)<abs(b).

enumerate(iterable,start=0)

Επιστρέφει ένα αντικείμενο απαρίθμησης. Τοiterable πρέπει να είναι μια ακολουθία, έναiterator, ή κάποιο άλλο αντικείμενο που υποστηρίζει το iteration. Η μέθοδος__next__() του iterator που επιστρέφεται από τοenumerate() επιστρέφει μια πλειάδα (tuple) που περιέχει μια καταμέτρηση (από τοstart που είναι με προεπιλογή στο 0) και τις τιμές που λαμβάνονται από την επανάληψη πάνω στοiterable.

>>>seasons=['Spring','Summer','Fall','Winter']>>>list(enumerate(seasons))[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]>>>list(enumerate(seasons,start=1))[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

Ισοδύναμο με:

defenumerate(iterable,start=0):n=startforeleminiterable:yieldn,elemn+=1
eval(source,/,globals=None,locals=None)
Παράμετροι:
  • source (str |code object) – Μια έκφραση Python.

  • globals (dict |None) – Το καθολικό namespace (προεπιλογή:None).

  • locals (mapping |None) – Το τοπικό namespace (προεπιλογή:None).

Επιστρέφει:

Το αποτέλεσμα της αξιολογούμενης έκφρασης

κάνει raise:

Τα συντακτικά σφάλματα αναφέρονται ως εξαιρέσεις

Προειδοποίηση

Αυτή η συνάρτηση εκτελεί αυθαίρετο κώδικα. Η κλήση της με είσοδο που παρέχεται από το χρήστη μπορεί να οδηγήσει σε ευπάθειες ασφαλείας.

Το όρισμαexpression αναλύεται και αξιολογείται ως μια έκφραση της Python (από τεχνικής άποψης, μια λίστα συνθηκών) χρησιμοποιώντας τις αντιστοιχίσειςglobals καιlocals ως global και local namespace. Εάν το λεξικόglobals υπάρχει και δεν περιέχει μια τιμή για το κλειδί__builtins__, μια αναφορά στο λεξικό του ενσωματωμένου modulebuiltins εισάγεται κάτω από αυτό το κλειδί πριν αναλυθεί τοexpression. Με αυτόν τον τρόπο μπορείτε να ελέγξετε ποια από τα ενσωματωμένα στοιχεία είναι διαθέσιμα για τον εκτελέσιμο κώδικα, εισάγοντας το δικό σας λεξικό__builtins__ στοglobals πριν διαβαστεί στηeval(). Εάν το λεξικόlocals παραλειφθεί, ορίζεται από προεπιλογή στο λεξικόglobals. Εάν παραληφθούν και οι δύο αντιστοιχίσεις, η έκφραση εκτελείται με ταglobals καιlocals στο περιβάλλον όπου καλείται ηeval(). Σημείωση, τοeval() θα έχει πρόσβαση στοnested scopes (μη τοπικούς) του περιβάλλοντος που την περικλείει μόνο εάν αυτοί έχουν ήδη αναφερθεί στον χώρο ονομάτων που καλεί τηeval() (π.χ. μέσω μιας δήλωσηςnonlocal).

Παράδειγμα:

>>>x=1>>>eval('x+1')2

Αυτή η συνάρτηση μπορεί επίσης να χρησιμοποιηθεί για την εκτέλεση αυθαίρετων αντικειμένων κώδικα (όπως αυτά που δημιουργούνται από τηνcompile()). Σε αυτή την περίπτωση, μεταβιβάζει ένα αντικείμενο κώδικα αντί για μια συμβολοσειρά. Εάν το αντικείμενο κώδικα έχει μεταγλωττιστεί με'exec' ως το όρισμαmode, η επιστρεφόμενη τιμή τουeval()'s θα είναιNone.

Συμβουλές: η δυναμική εκτέλεση εντολών υποστηρίζεται από την συνάρτησηexec(). Οι συναρτήσειςglobals() καιlocals() επιστρέφουν το τρέχον global και local λεξικό, αντίστοιχα, το οποίο μπορεί να είναι χρήσιμο για μεταβίβαση γύρω από τη χρήση από τιςeval() ήexec().

Εάν η δεδομένη πηγή είναι μια συμβολοσειρά, τότε αφαιρούνται τα κενά και τα tabs που προηγούνται ή έπονται.

Βλ. τηast.literal_eval() για μια συνάρτηση που μπορεί με ασφάλεια να αξιολογήσει τις συμβολοσειρές με εκφράσεις που περιέχουν μόνο literals.

Κάνει raise έναauditing eventexec με το αντικείμενο κώδικα ως όρισμα. Μπορεί επίσης να εμφανιστούν συμβάντα μεταγλώττισης κώδικα.

Άλλαξε στην έκδοση 3.13:Τα ορίσματαglobals καιlocals υποστηρίζονται πλέον και ως ορίσματα λέξεων-κλειδιών.

Άλλαξε στην έκδοση 3.13:Η σημασιολογία του προεπιλεγμένου ονόματος χώρουlocals έχει τροποποιηθεί, όπως περιγράφεται για την ενσωματωμένη συνάρτησηlocals().

exec(source,/,globals=None,locals=None,*,closure=None)

Προειδοποίηση

Αυτή η συνάρτηση εκτελεί αυθαίρετο κώδικα. Η κλήση της με είσοδο που παρέχεται από το χρήστη μπορεί να οδηγήσει σε ευπάθειες ασφαλείας.

Αυτή η συνάρτηση υποστηρίζει δυναμική εκτέλεση κώδικα Python. Τοsource πρέπει να είναι είτε μια συμβολοσειρά (string) είτε ένα αντικείμενο κώδικα. Εάν είναι μια συμβολοσειρά, η συμβολοσειρά αναλύεται ως μια σουίτα δηλώσεων Python που στη συνέχεια εκτελείται (εκτός εάν παρουσιαστεί σφάλμα σύνταξης).[1] Εάν πρόκειται για ένα αντικείμενο κώδικα, απλά εκτελείται. Σε όλες τις περιπτώσεις, ο κώδικας που εκτελείται αναμένεται να είναι έγκυρος ως είσοδος αρχείου (δείτε την ενότηταFile input στο Εγχειρίδιο Αναφοράς). Λάβετε υπόψη ότι οι εντολέςnonlocal,yield, καιreturn δεν μπορούν να χρησιμοποιηθούν εκτός των ορισμών συναρτήσεων, ακόμη και στο πλαίσιο του κώδικα που διαβιβάζεται στηexec(). Η επιστρεφόμενη τιμή είναιNone.

Σε όλες τις περιπτώσεις, εάν παραληφθούν τα προαιρετικά μέρη, ο κώδικας εκτελείται στο τρέχον εύρος. Εάν παρέχεται μόνοglobals, πρέπει να είναι ένα λεξικό (και όχι μια υποκατηγορία λεξικού), το οποίο θα χρησιμοποιείται και για τις δύο μεταβλητές αντίστοιχα. Εάν παρέχονται ταlocals μπορεί να είναι οποιοδήποτε αντικείμενο αντιστοίχισης. Να θυμάστε ότι σε επίπεδο module, τα globals και locals είναι το ίδιο λεξικό.

Σημείωση

Όταν ηexec λαμβάνει δύο ξεχωριστά αντικείμενα ωςglobals καιlocals, ο κώδικας εκτελείται σαν να ήταν ενσωματωμένος σε ορισμό κλάσης. Αυτό σημαίνει ότι συναρτήσεις και κλάσεις που ορίζονται στον εκτελούμενο κώδικα δεν θα έχουν πρόσβαση σε μεταβλητές που έχουν οριστεί στο ανώτερο επίπεδο (καθώς αυτές οι «ανωτέρου επιπέδου» μεταβλητές θεωρούνται ως μεταβλητές κλάσης, όπως συμβαίνει μέσα σε έναν ορισμό κλάσης).

Εάν το λεξικόglobals δεν περιέχει τιμή για το κλειδί__builtins__, μια αναφορά στο λεξικό του ενσωματωμένου modulebuiltins εισάγεται κάτω από αυτό το κλειδί. Με αυτόν τον τρόπο μπορεί να ελέγξετε τι ενσωματωμένα (built-ins) είναι διαθέσιμα στον εκτελέσιμο κώδικα εισάγοντας το δικό σας__builtins__ λεξικό στοglobals πριν το διαβάσετε στοexec().

Το όρισμαclosure καθορίζει ένα clossure–μια πλειάδα από cellvars. Είναι έγκυρο μόνο όταν τοobject είναι ένα αντικείμενο κώδικα που περιέχειfree (closure) variables. Το μήκος της πλειάδας πρέπει να ταιριάζει ακριβώς με το μήκος το χαρακτηριστικόco_freevars του αντικειμένου κώδικα.

Κάνει raise έναauditing eventexec με το αντικείμενο κώδικα ως όρισμα. Μπορεί επίσης να εμφανιστούν συμβάντα μεταγλώττισης κώδικα.

Σημείωση

Οι ενσωματωμένες συναρτήσειςglobals() καιlocals() επιστρέφουν το τρέχον χώρο ονομάτων global και local, αντίστοιχα, που μπορεί να είναι χρήσιμο για χρήση ως δεύτερο και τρίτο όρισμα στοexec().

Σημείωση

Το προεπιλεγμένοlocals ενεργεί όπως περιγράφεται για τη συνάρτησηlocals() παρακάτω. Δώστε ρητά ένα λεξικόlocals αν χρειάζεται να δείτε τις επιδράσεις του κώδικαlocals μετά την επιστροφή της συνάρτησηςexec().

Άλλαξε στην έκδοση 3.11:Προστέθηκε η παράμετροςclosure.

Άλλαξε στην έκδοση 3.13:Τα ορίσματαglobals καιlocals υποστηρίζονται πλέον και ως ορίσματα λέξεων-κλειδιών.

Άλλαξε στην έκδοση 3.13:Η σημασιολογία του προεπιλεγμένου ονόματος χώρουlocals έχει τροποποιηθεί, όπως περιγράφεται για την ενσωματωμένη συνάρτησηlocals().

filter(function,iterable)

Δημιουργεί έναν iterator από εκείνα τα στοιχεία τουiterable για τα οποία ηfunction είναι αληθής. Τοiterable μπορεί να είναι είτε μια ακολουθία, ένα container που υποστηρίζει iteration, ή ένας iterator. Εάν ηfunction είναιNone, η συνάρτηση ταυτότητας υποτίθεται, δηλαδή, όλα τα στοιχεία τουiterable που είναι ψευδή αφαιρούνται.

Λάβετε υπόψη ότι τοfilter(function,iterable) είναι ισοδύναμο με την έκφραση της γεννήτριας(itemforiteminiterableiffunction(item)) εάν η συνάρτηση δεν είναιNone και(itemforiteminiterableifitem) εάν η συνάρτηση είναιNone.

Βλ.itertools.filterfalse() για τη συμπληρωματική συνάρτηση που επιστρέφει στοιχεία τουiterable για τα οποία ηfunction είναι ψευδής.

classfloat(number=0.0,/)
classfloat(string,/)

Επιστέφει έναν αριθμό κινητής υποδιαστολής που κατασκευάστηκε από έναν αριθμό ή μια συμβολοσειρά.

Παραδείγματα:

Εάν το όρισμα είναι συμβολοσειρά (string), θα πρέπει να περιέχει έναν δεκαδικό αριθμό, προαιρετικά πριν από ένα σύμβολο και προαιρετικά ενσωματωμένο σε κενό διάστημα. Το προαιρετικό πρόσημο μπορεί να είναι'+' ή'-'``∙ένασύμβολο``'+' δεν έχει καμία επίδραση στην τιμή που παράγεται. Το όρισμα μπορεί επίσης να είναι μια συμβολοσειρά που αντιπροσωπεύει ένα NaN (not-a-number), ή θετικό η αρνητικό άπειρο. Πιο συγκεκριμένα, η είσοδος πρέπει να συμμορφώνεται με τον κανόνα παραγωγήςfloatvalue στην ακόλουθη γραμματική, αφού αφαιρεθούν οι χαρακτήρες κενού διαστήματος που έπονται και προηγούνται:

sign:"+" |"-"infinity:"Infinity" |"inf"nan:"nan"digit:         <a Unicode decimal digit, i.e. characters in Unicode general category Nd>digitpart:digit (["_"]digit)*number:        [digitpart]"."digitpart |digitpart ["."]exponent:      ("e" |"E") [sign]digitpartfloatnumber:number [exponent]absfloatvalue:floatnumber |infinity |nanfloatvalue:    [sign]absfloatvalue

Τα πεζά/κεφαλαία δεν είναι σημαντικά, επομένως, για παράδειγμα, «inf», «Inf», «INFINITY», και «iNfINity» είναι όλες αποδεκτές ορθογραφίες για το θετικό άπειρο.

Διαφορετικά, εάν το όρισμα είναι ακέραιος ή αριθμός κινητής υποδιαστολής, επιστρέφεται ένας αριθμός κινητής υποδιαστολής με την ίδια τιμή (εντός της ακρίβειας κινητής υποδιαστολής της Python). Εάν το όρισμα βρίσκεται εκτός του εύρους ενός float της Python θα γίνει raise έναOverflowError.

Για ένα γενικό αντικείμενο Pythonx,float(x) εκχωρεί στοx.__float__(). Εάν το__float__() δεν έχει οριστεί, τότε επιστρέφει στο__index__().

Δείτε επίσης τηfloat.from_number() που δέχεται μόνο αριθμητικό όρισμα.

Εάν δεν δοθεί όρισμα, επιστρέφεται το0.0.

Ο τύπος float περιγράφεται στοΑριμθητικοί Τύποι — int, float, complex.

Άλλαξε στην έκδοση 3.6:Επιτρέπεται η ομαδοποίηση ψηφίων με κάτω παύλες όπως στα literals του κώδικα.

Άλλαξε στην έκδοση 3.7:Η παράμετρος είναι πλέον μόνο παράμετρος θέσης.

Άλλαξε στην έκδοση 3.8:Επιστρέφει στο__index__() εάν το__float__() δεν έχει οριστεί.

format(value,format_spec='')

Μετατρέπει έναvalue σε μια αναπαράσταση «formatted», όπως ελέγχεται από τοformat_spec. Η ερμηνεία τουformat_spec θα εξαρτηθεί από τον τύπο του ορίσματοςvalue ∙ ωστόσο υπάρχει μια τυπική σύνταξη μορφοποίησης που χρησιμοποιείται από τους περισσότερους ενσωματωμένους τύπους:Format Specification Mini-Language.

Η προεπιλεγμένηformat_spec είναι μια κενή συμβολοσειρά που συνήθως δίνει το ίδιο αποτέλεσμα με την κλήση τουstr(value).

Μια κλήση στοformat(value,format_spec) μεταφράζεται σεtype(value).__format__(value,format_spec) το οποίο παρακάμπτει το instance του λεξικού κατά την αναζήτηση της τιμής της μεθόδου__format__(). Μια εξαίρεσηTypeError γίνεται raise εάν η αναζήτηση της μεθόδου φτάσει στοobject και τοformat_spec δεν είναι κενό ή εάν είτε τοformat_spec είτε η τιμή επιστροφής δεν είναι συμβολοσειρές.

Άλλαξε στην έκδοση 3.4:Τοobject().__format__(format_spec) κάνει raise τοTypeError εάν τοformat_spec δεν είναι κενή συμβολοσειρά.

classfrozenset(iterable=set())

Επιστρέφει ένα νέο αντικείμενοfrozenset, προαιρετικά με στοιχεία που λαμβάνονται από τοiterable. Τοfrozenset είναι μια ενσωματωμένη κλάση. Δείτε τοfrozenset και τοΤύποι Συνόλου (Set) — set, frozenset για τεκμηρίωση αυτής της κλάσης.

Για άλλα containers, ανατρέξτε στις ενσωματωμένες κλάσειςset,list,tuple, καιdict, καθώς και το modulecollections.

getattr(object,name)
getattr(object,name,default)

Επιστρέφει την τιμή του ονομασμένου χαρακτηριστικού τουobject Τοname πρέπει να είναι μια συμβολοσειρά. Εάν η συμβολοσειρά είναι το όνομα ενός από τα χαρακτηριστικά του αντικειμένου, το αποτέλεσμα είναι η τιμή αυτού του χαρακτηριστικού. Για παράδειγμα,getattr(x,'foobar') είναι ισοδύναμο με τοx.foobar. Εάν το χαρακτηριστικό γνώρισμα δεν υπάρχει, τοdefault επιστρέφεται εάν παρέχεται, διαφορετικά γίνεται raise τοAttributeError. Τοname δεν χρειάζεται να είναι αναγνωριστικό Python (δείτεsetattr()).

Σημείωση

Δεδομένου ότι τοprivate name mangling συμβαίνει κατά τη στιγμή της μεταγλώττισης, πρέπει κανείς να παραμορφώνει χειροκίνητα το όνομα ενός ιδιωτικού χαρακτηριστικού (χαρακτηριστικά με δύο κορυφαίες υπογραμμίσεις) για να ανακτήσει μεgetattr().

globals()

Επιστρέφει το λεξικό που υλοποιεί τον τρέχοντα χώρο ονομάτων του module. Για κώδικα εντός συναρτήσεων, αυτό ορίζεται όταν ορίζεται η συνάρτηση και παραμένει το ίδιο ανεξάρτητη από το που καλείται η συνάρτηση.

hasattr(object,name)

Τα ορίσματα είναι ένα αντικείμενο και μια συμβολοσειρά (string). Το αποτέλεσμα είναιTrue εάν η συμβολοσειρά είναι το όνομα ενός από τα χαρακτηριστικά του αντικειμένου,False εάν όχι. (Αυτό υλοποιείται καλώντας τοgetattr(object,name) και να δούμε αν γίνεται raise έναAttributeError ή όχι.)

hash(object)

Επιστρέφει την τιμή κατακερματισμού του αντικειμένου (αν έχει). Οι τιμές κατακερματισμού είναι ακέραιοι. Χρησιμοποιούνται για τη γρήγορη σύγκριση των κλειδιών του λεξικού κατά τη διάρκεια μιας αναζήτησης λεξικού. Οι αριθμητικές τιμές που συγκρίνονται ίσες έχουν την ίδια τιμή κατακερματισμού (ακόμα και αν είναι διαφορετικοί τύποι, όπως συμβαίνει για τα 1 και 1.0).

Σημείωση

Για αντικείμενα με προσαρμοσμένες μεθόδους__hash__(), σημειώστε ότι τοhash() περικόπτει την τιμή επιστροφής με βάση το πλάτος bit του υπολογιστή.

help()
help(request)

Καλείται το ενσωματωμένο (built-in) σύστημα βοήθειας. (Αυτή η συνάρτηση προορίζεται για διαδραστική χρήση.) Εάν δεν δοθεί όρισμα, το διαδραστικό σύστημα βοήθειας ξεκινά την κονσόλα του interpreter. Εάν το όρισμα είναι μια συμβολοσειρά, τότε η συμβολοσειρά αναζητείται ως όνομα ενός module, μιας συνάρτησης, μια κλάσης μιας μεθόδου, μιας λέξης κλειδιού ή θέματος τεκμηρίωσης και μια σελίδα βοήθειας εκτυπώνεται στην κονσόλα. Εάν το όρισμα είναι οποιοδήποτε άλλο είδος αντικειμένου, δημιουργείται μια σελίδα βοήθειας στο αντικείμενο.

Λάβετε υπόψη ότι εάν εμφανίζεται μια κάθετος (/) στη λίστα παραμέτρων μιας συνάρτησης κατά την κλήσηhelp(), σημαίνει ότι οι παράμετροι πριν από την κάθετο είναι μόνο θέσης. Για περισσότερες πληροφορίες, βλέπεthe FAQ entry on positional-only parameters.

Αυτή η συνάρτηση προστίθεται στον ενσωματωμένο χώρο ονομάτων από το modulesite.

Άλλαξε στην έκδοση 3.4:Οι αλλαγές σεpydoc καιinspect σημαίνουν ότι οι αναφερόμενες υπογραφές για callables είναι πλέον πιο ολοκληρωμένες και συνεπείς.

hex(x)

Μετατροπή ενός ακεραίου αριθμού σε μια πεζή δεκαεξαδική συμβολοσειρά (string) με πρόθεμα το «0x». Εάν τοx δεν είναι αντικείμενο Pythonint, πρέπει να ορίσει μια μέθοδο__index__() που επιστρέφει έναν ακέραιο αριθμό. Κάποια παραδείγματα:

>>>hex(255)'0xff'>>>hex(-42)'-0x2a'

Εάν θέλετε να μετατρέψετε έναν ακέραιο αριθμό σε μια κεφαλαία ή πεζή δεκαεξαδική συμβολοσειρά (string) με πρόθεμα ή όχι, μπορείτε να χρησιμοποιήσετε έναν από τους παρακάτω τρόπους:

>>>'%#x'%255,'%x'%255,'%X'%255('0xff', 'ff', 'FF')>>>format(255,'#x'),format(255,'x'),format(255,'X')('0xff', 'ff', 'FF')>>>f'{255:#x}',f'{255:x}',f'{255:X}'('0xff', 'ff', 'FF')

Δείτε επίσης τηformat() για περισσότερες πληροφορίες.

Δείτε επίσης τηint() για τη μετατροπή μιας δεκαεξαδικής συμβολοσειράς σε ακέραιο χρησιμοποιώντας μια βάση του 16.

Σημείωση

Για να αποκτήσετε μια αναπαράσταση δεκαεξαδικής συμβολοσειράς για ένα float, χρησιμοποιήστε τη μέθοδοfloat.hex().

id(object)

Επιστρέφει την «ταυτότητα» ενός αντικειμένου. Αυτό είναι ένα ακέραιος αριθμός που εγγυάται ότι είναι μοναδικός και σταθερός για αυτό το αντικείμενο κατά τη διάρκεια της ζωής του. Δύο αντικείμενα με μη επικαλυπτόμενες διάρκειες ζωής μπορεί να έχουν την ίδια τιμήid().

Αυτό είναι η διεύθυνση του αντικειμένου στην μνήμη.

Εγείρει έναauditing eventbuiltins.id με όρισμαid.

input()
input(prompt)

Εάν υπάρχει το όρισμαprompt, γράφεται στην τυπική έξοδο χωρίς μια νέα γραμμή μετάδοσης. Στη συνέχεια, η συνάρτηση διαβάζει μια γραμμή από την είσοδο, τη μετατρέπει σε μια συμβολοσειρά (με την αφαίρεση μιας νέας γραμμής) και την επιστρέφει. Όταν διαβάζεται το EOF, γίνεται raise ηEOFError. Παράδειγμα:

>>>s=input('--> ')--> Monty Python's Flying Circus>>>s"Monty Python's Flying Circus"

Εάν έχει φορτωθεί το modulereadline, τότε ηinput() θα το χρησιμοποιήσει για να παρέχει περίπλοκες λειτουργίες επεξεργασίας γραμμής και ιστορικού.

Κάνει raise έναauditing eventbuiltins.input με όρισμαprompt προτού διαβάσει την είσοδο

Κάνει raise έναauditing eventbuiltins.input/result με το αποτέλεσμα μετά την επιτυχή ανάγνωση των δεδομένων.

classint(number=0,/)
classint(string,/,base=10)

Επιστέφει έναν αριθμό κινητής υποδιαστολής που κατασκευάστηκε από έναν αριθμό ή μια συμβολοσειρά, ή επιστρέφει0 εάν δεν δίνεται κάποιο όρισμα.

Παραδείγματα:

Εάν το όρισμα ορίζει__int__(),int(x) επιστρέφειx.__int__(). Εάν το όρισμα ορίζει__index__(), επιστρέφειx.__index__(). Για αριθμούς κινητής υποδιαστολής, αυτό περικόπτεται προς το μηδέν.

Εάν το όρισμα δεν είναι αριθμός ή εάν δίνεταιbase, τότε πρέπει να είναι μια συμβολοσειρά ,bytes, ήbytearray που αντιπροσωπεύει έναν ακέραιο αριθμό στην ρίζαbase. Προαιρετικά, η συμβολοσειρά μπορεί να προηγείται από+ ή- (χωρίς κενό ενδιάμεσο), να έχει αρχικά μηδενικά, να περιβάλλεται από κενό διάστημα και να έχει μονές υπογραμμίσεις διάσπαρτες μεταξύ των ψηφίων.

Μια συμβολοσειρά (string) ακέραιου αριθμού βάσης n περιέχει ψηφία, καθένα από τα οποία αντιπροσωπεύει μια τιμή από το 0 έως το n-1. Οι τιμές 0–9 μπορούν να αναπαρασταθούν με οποιοδήποτε δεκαδικό ψηφίο Unicode. Οι τιμές 10–35 μπορούν να αναπαρασταθούν μεa ως τοzA ως τοZ). Η προεπιλεγμένηbase είναι 10. Οι επιτρεπόμενες βάσεις είναι 0 και 2–36. Οι συμβολοσειρές βάσης -2, -8 και -16 μπορούν προαιρετικά να έχουν το πρόθεμα0b/0B,0o/0O, ή0x/0X, όπως και με ακέραιους αριθμούς στον κώδικα. Για την βάση 0, η συμβολοσειρά ερμηνεύεται με παρόμοιο τρόπο με ένανinteger literal in code, στο ότι η πραγματική βάση είναι 2, 8, 10 ή 16 όπως προσδιορίζεται από το πρόθεμα. Η βάση 0 δεν επιτρέπει επίσης τα μηδενικά στην αρχή :int('010',0) δεν είναι εφικτό, ενώ τοint('010') καιint('010',8) είναι.

Ο ακέραιος τύπος περιγράφεται στοΑριμθητικοί Τύποι — int, float, complex.

Άλλαξε στην έκδοση 3.4:Εάν τοbase δεν είναι ένα instance τηςint και τοbase αντικείμενο έχει μια μέθοδοbase.__index__, αυτή η μέθοδος καλείται για να αποκτήσει τον ακέραιο της βάσης. Προηγούμενες εκδόσεις χρησιμοποιούσαν τηνbase.__int__ αντί τηςbase.__index__.

Άλλαξε στην έκδοση 3.6:Επιτρέπεται η ομαδοποίηση ψηφίων με κάτω παύλες όπως στα literals του κώδικα.

Άλλαξε στην έκδοση 3.7:Η πρώτη παράμετρος είναι πλέον μόνο θέσεως.

Άλλαξε στην έκδοση 3.8:Επιστρέφει πίσω στη__index__() αν η__int__() δεν έχει οριστεί.

Άλλαξε στην έκδοση 3.11:Οι είσοδοι συμβολοσειράς και οι αναπαραστάσεις συμβολοσειρώνint μπορούν να περιοριστούν για να αποφευχθούν επιθέσεις άρνησης υπηρεσίας. ΜιαValueError γίνεται raise όταν γίνεται υπέρβαση του ορίου κατά τη μετατροπή μιας συμβολοσειράς σε μιαint ή κατά τη μετατροπή ενόςint σε μια συμβολοσειρά θα υπερβεί το όριο. Δείτε την τεκμηρίωσηinteger string conversion length limitation.

Άλλαξε στην έκδοση 3.14:Ηint() δεν αναθέτει πλέον στη μέθοδο__trunc__().

isinstance(object,classinfo)

ΕπιστρέφειTrue εάν το όρισμαobject είναι ένα instance του ορίσματοςclassinfo , ή μιας (άμεσης, έμμεσης ήvirtual) υποκλάσης αυτού. Εάν τοobject δεν είναι ένα αντικείμενο του δεδομένου τύπου, η συνάρτηση θα επιστρέφει πάνταFalse. Εάν τοclassinfo είναι μια πλειάδα τύπου αντικειμένων (ή αναδρομικά, άλλες τέτοιες πλειάδες) ή μιαΤύπος Ένωσης πολλαπλών τύπων, επιστρέφειTrue εάν τοobject είναι ένα instance οποιουδήποτε από τους τύπους. Εάν τοclassinfo δεν είναι ένα τύπος ή μια πλειάδα τύπων και τέτοιες πλειάδες, γίνεται raise μια εξαίρεσηTypeError. ΗTypeError δεν μπορεί να γίνει raise για μη έγκυρο τύπο, εάν ένας προηγούμενος έλεγχος είναι επιτυχής.

Άλλαξε στην έκδοση 3.10:Τοclassinfo μπορεί να είναι έναΤύπος Ένωσης.

issubclass(class,classinfo)

ΕπιστρέφειTrue εάν ηclass είναι μια υποκλάση (άμεση, έμμεση, ήvirtual) τουclassinfo. Μια κλάση θεωρείται υποκλάση του εαυτού της. Τοclassinfo μπορεί να είναι μια πλειάδα (tuple) αντικειμένων κλάσης (ή αναδρομικά, άλλες τέτοιες πλειάδες) ή μιαΤύπος Ένωσης, οπότε επιστρέφετεTrue εάν ηclass είναι υποκλάση οποιασδήποτε καταχώρισης στοclassinfo. Σε οποιαδήποτε άλλη περίπτωση, γίνεται raise μια εξαίρεσηTypeError.

Άλλαξε στην έκδοση 3.10:Τοclassinfo μπορεί να είναι έναΤύπος Ένωσης.

iter(object)
iter(object,sentinel)

Επιστρέφετε ένα αντικείμενοiterator. Το πρώτο όρισμα ερμηνεύεται πολύ διαφορετικά ανάλογα με την παρουσία του δεύτερου ορίσματος. Χωρίς δεύτερο όρισμα, τοobject πρέπει να είναι ένα αντικείμενο συλλογής που να υποστηρίζει το πρωτόκολλοiterable (η μέθοδος__iter__()), ή πρέπει να υποστηρίζει το πρωτόκολλο ακολουθίας (η μέθοδος__getitem__() με ακέραια ορίσματα που ξεκινούν από0). Εάν δεν υποστηρίζει κανένα από αυτά τα πρωτόκολλα, γίνεται raise μιαTypeError. Εάν δοθεί το δεύτερο όρισμαsentinel, τότε τοobject πρέπει να είναι ένα callable αντικείμενο. Ο iterator που δημιουργήθηκε σε αυτή την περίπτωση θα καλέσει τοobject χωρίς ορίσματα για κάθε κλήση στη μέθοδο__next__() ∙ εάν η τιμή που επιστρέφεται είναι ίση μεsentinel, θα γίνει raise ηStopIteration, διαφορετικά θα επιστραφεί η τιμή.

Δείτε επίσηςΤύποι Iterator.

Μια χρήσιμη εφαρμογή της δεύτερης μορφής τουiter() είναι η κατασκευή ενός block-reader. Για παράδειγμα, η ανάγνωση μπλοκ σταθερού πλάτους από ένα δυαδικό αρχείο βάσης δεδομένων μέχρι να φτάσει στο τέλος του αρχείου:

fromfunctoolsimportpartialwithopen('mydata.db','rb')asf:forblockiniter(partial(f.read,64),b''):process_block(block)
len(s)

Επιστρέφει το μήκος (τον αριθμό των ειδών-περιεχομένων) ενός αντικειμένου. Το όρισμα μπορεί να είναι μια ακολουθία (όπως μια συμβολοσειρά, bytes, πλειάδα, λίστα, ή εύρος) ή μια συλλογή (όπως ένα λεξικό, ένα σετ, ή ένα παγωμένο σετ).

Τοlen κάνει raise μιαOverflowError σε μήκη τα οποία είναι μεγαλύτερα απόsys.maxsize, όπωςrange(2**100).

classlist
classlist(iterable)

Αντί να είναι συνάρτηση, τοlist είναι στην πραγματικότητα ένας μεταβλητός τύπος ακολουθίας, όπως τεκμηριώνεται σταΛίστες καιΤύποι Ακολουθίας (Sequence) — list, tuple, range.

locals()

Επιστρέφει ένα αντικείμενο αντιστοίχισης που αναπαριστά τον τρέχοντα τοπικό πίνακα συμβόλων, με τα ονόματα μεταβλητών ως κλειδιά και τις αντίστοιχες τιμές στις οποίες είναι δεσμευμένες ως τιμές.

Στο επίπεδο module, καθώς και όταν χρησιμοποιείται ηexec() ή ηeval() με έναν μόνο χώρο ονομάτων, αυτή η συνάρτηση επιστρέφει τον ίδιο χώρο ονομάτων με τηglobals().

Στο πεδίο ορισμού κλάσης, επιστρέφει τον χώρο ονομάτων που θα περαστεί στον κατασκευαστή της μετακλάσης.

Όταν χρησιμοποιείται ηexec() ή ηeval() με ξεχωριστά local και global ορίσματα, επιστρέφει στον τοπικό χώρο ονομάτων που περάστηκε στην κλήση της συνάρτησης.

Σε όλες τις παραπάνω περιπτώσεις, κάθε κλήση τηςlocals() σε ένα συγκεκριμένο πλαίσιο εκτέλεσης θα επιστρέφει τοίδιο αντικείμενο αντιστοίχισης. Οι αλλαγές που γίνονται μέσω του αντικειμένου αντιστοίχισης που επιστρέφεται από τηνlocals() θα είναι ορατές ως τοπικές μεταβλητές που ανατίθενται, επανακαθορίζονται ή διαγράφονται, και η ανάθεση, επανακαθορισμός ή διαγραφή τοπικών μεταβλητών θα επηρεάζει άμεσα τα περιεχόμενα του επιστρεφόμενου αντικειμένου αντιστοίχισης.

Σε έναoptimized scope (όπως οι συναρτήσεις, οι γεννήτριες και οι συναρτήσεις συνεργασίας), κάθε κλήση τηςlocals() επιστρέφει ένα νέο λεξικό που περιέχει τις τρέχουσες δεσμεύσεις των τοπικών μεταβλητών της συνάρτησης καθώς και οποιεσδήποτε αναφορές σε μη τοπικά κελιά. Σε αυτή την περίπτωση, οι αλλαγές στις δεσμεύσεις ονομάτων που γίνονται μέσω του επιστρεφόμενου λεξικούδεν εγγράφονται πίσω στις αντίστοιχες τοπικές μεταβλητές ή μη τοπικές αναφορές, και η ανάθεση, επανακαθορισμός ή διαγραφή τοπικών ή μη τοπικών μεταβλητώνδεν επηρεάζει το περιεχόμενο των λεξικών που είχαν επιστραφεί προηγουμένως.

Καλώντας τηνlocals() ως μέρος μιας σύμπτυξης (comprehension) που βρίσκεται σε μια συνάρτηση, γεννήτρια ή coroutine είναι ισοδύναμη με την κλήση της στο περιβάλλον που περικλείει την την σύμπτυξη, με τη διαφορά ότι οι αρχικοποιημένες μεταβλητές επανάληψης της σύμπτυξης θα περιλαμβάνονται στο αποτέλεσμα. Σε άλλα πεδία ορατότητας, η συμπεριφορά είναι σαν η σύμπτυξη να εκτελείται ως μια εμφωλευμένη συνάρτηση.

Καλώντας τηνlocals() ως μέρος μιας έκφρασης γεννήτριας είναι ισοδύναμη με την κλήση της μέσα σε μια εμφωλευμένη συνάρτηση γεννήτριας.

Άλλαξε στην έκδοση 3.12:Η συμπεριφορά τηςlocals() μέσα σε μια έκφραση σύμπτυξης έχει ενημερωθεί όπως περιγράφεται στηνPEP 709.

Άλλαξε στην έκδοση 3.13:Στο πλαίσιο τηςPEP 667, τα σημασιολογικά χαρακτηριστικά της τροποποίησης των αντικειμένων αντιστοιχίσεων που επιστρέφονται από αυτήν τη συνάρτηση έχουν πλέον οριστεί. Η συμπεριφορά σεoptimized scopes είναι πλέον όπως περιγράφεται παραπάνω. Πέραν του ότι πλέον είναι ορισμένη, η συμπεριφορά σε άλλα πεδία παραμένει αμετάβλητη σε σχέση με προηγούμενες εκδόσεις.

map(function,iterable,/,*iterables,strict=False)

Επιστρέφει έναν iterator που εφαρμόζειfunction σε κάθε στοιχείο τουiterable, δίνοντας τα αποτελέσματα. Εάν περάσουν επιπλέον ορίσματαiterables, ηfunction πρέπει να λάβει τόσα ορίσματα και να εφαρμόζεται στα στοιχεία από όλα τα iterables παράλληλα. Με πολλαπλούς iterables, ο iterator σταματά όταν εξαντληθεί ο συντομότερος iterable. Εάν τοstrict είναιTrue και μία από τα iterables εξαντληθεί πριν από τις άλλες, γίνεται raise μιαValueError. Για περιπτώσεις όπου οι είσοδοι συνάρτησης είναι ήδη διατεταγμένες σε πλειάδες ορισμάτων, βλέπεitertools.starmap().

Άλλαξε στην έκδοση 3.14:Προστέθηκε η παράμετροςstrict.

max(iterable,*,key=None)
max(iterable,*,default,key=None)
max(arg1,arg2,*args,key=None)

Επιστρέφει το μεγαλύτερο στοιχείο σε ένα iterable ή το μεγαλύτερο από δύο ή περισσότερα ορίσματα.

Εάν παρέχεται ένα όρισμα θέσης, θα πρέπει να είναι έναiterable. Επιστρέφεται το μεγαλύτερο στοιχείο στο iterable. Εάν παρέχονται δύο ή περισσότερα ορίσματα θέσης, επιστρέφεται το μεγαλύτερο από τα ορίσματα θέσης.

Υπάρχουν δύο προαιρετικά ορίσματα τύπου λέξη-κλειδί. Το όρισμαkey καθορίζει μια συνάρτηση ταξινόμησης ενός ορίσματος όπως αυτή χρησιμοποιείται για τοlist.sort(). Το όρισμαdefault καθορίζει ένα αντικείμενο που θα επιστρέψει εάν το iterable που παρέχεται είναι κενό. Εάν το iterable είναι κενό και τοdefault δεν παρέχεται, γίνεται raise μιαValueError.

Εάν πολλά στοιχεία είναι μέγιστα, η συνάρτηση επιστρέφει το πρώτο που συναντήθηκε. Αυτό είναι σύμφωνο με άλλα εργαλεία διατήρησης σταθερότητας ταξινόμησης όπωςsorted(iterable,key=keyfunc,reverse=True)[0] καιheapq.nlargest(1,iterable,key=keyfunc).

Άλλαξε στην έκδοση 3.4:Προστέθηκε η παράμετρος μόνο λέξης-κλειδίdefault.

Άλλαξε στην έκδοση 3.8:Τοkey μπορεί να είναιNone.

classmemoryview(object)

Επιστρέφει ένα αντικείμενο «memory view» που δημιουργήθηκε από το συγκεκριμένο όρισμα. ΒλέπεΌψεις Μνήμης για περισσότερες λεπτομέρειες.

min(iterable,*,key=None)
min(iterable,*,default,key=None)
min(arg1,arg2,*args,key=None)

Επιστρέφει το μικρότερο στοιχείο σε έναν iterable ή το μικρότερο από δύο ή περισσότερα ορίσματα.

Εάν παρέχεται ένα όρισμα θέσης, θα πρέπει να είναι έναiterable. Επιστρέφει το μικρότερο στοιχείο στον iterable. Εάν παρέχονται δύο ή περισσότερα ορίσματα θέσης, επιστρέφεται το μικρότερο από τα ορίσματα θέσης.

Υπάρχουν δύο προαιρετικά ορίσματα τύπου λέξη-κλειδί. Το όρισμαkey καθορίζει μια συνάρτηση ταξινόμησης ενός ορίσματος όπως αυτή χρησιμοποιείται για τοlist.sort(). Το όρισμαdefault καθορίζει ένα αντικείμενο που θα επιστρέψει εάν το iterable που παρέχεται είναι κενό. Εάν το iterable είναι κενό και τοdefault δεν παρέχεται, γίνεται raise μιαValueError.

Εάν πολλά στοιχεία είναι ελάχιστα, η συνάρτηση επιστρέφει το πρώτο που συναντήθηκε. Αυτό είναι σύμφωνο με άλλα εργαλεία διατήρησης σταθερότητας ταξινόμησης, όπωςsorted(iterable,key=keyfunc)[0] καιheapq.nsmallest(1,iterable,key=keyfunc).

Άλλαξε στην έκδοση 3.4:Προστέθηκε η παράμετρος μόνο λέξης-κλειδίdefault.

Άλλαξε στην έκδοση 3.8:Τοkey μπορεί να είναιNone.

next(iterator)
next(iterator,default)

Ανάκτηση του επόμενου στοιχείο από τοiterator καλώντας τη μέθοδο__next__(). Εάν δοθείdefault, επιστρέφεται εάν ο iterator έχει εξαντληθεί, διαφορετικά γίνεται raise μιαStopIteration.

classobject

Αυτή είναι η τελική βασική κλάση όλων των άλλων κλάσεων. Έχει μεθόδους που είναι κοινές σε όλες τις περιπτώσεις κλάσεων Python. Όταν καλείται ο κατασκευαστής, επιστρέφει ένα νέο αντικείμενο χωρίς χαρακτηριστικά. Ο κατασκευαστής δεν δέχεται ορίσματα.

Σημείωση

Τα στιγμιότυπαobjectδεν έχουν χαρακτηριστικά__dict__, επομένως δεν μπορείτε να εκχωρήσετε αυθαίρετα χαρακτηριστικά σε ένα στιγμιότυπο τουobject.

oct(x)

Μετατρέπει έναν ακέραιο αριθμό σε μια οκταδική συμβολοσειρά με πρόθεμα «0o». Το αποτέλεσμα είναι μια έγκυρη έκφραση Python. Εάν τοx δεν είναι ένα αντικείμενο Pythonint, πρέπει να ορίσει μια μέθοδο__index__() που επιστρέφει έναν ακέραιο αριθμό. Για παράδειγμα:

>>>oct(8)'0o10'>>>oct(-56)'-0o70'

Εάν θέλετε να μετατρέψετε έναν ακέραιο αριθμό σε οκταδική συμβολοσειρά είτε με το πρόθεμα «0o» είτε όχι, μπορείτε να χρησιμοποιήσετε έναν από τους παρακάτω τρόπους.

>>>'%#o'%10,'%o'%10('0o12', '12')>>>format(10,'#o'),format(10,'o')('0o12', '12')>>>f'{10:#o}',f'{10:o}'('0o12', '12')

Δείτε επίσης τηformat() για περισσότερες πληροφορίες.

open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)

Ανοίγει τοfile και επιστρέφει ένα αντίστοιχοfile object. Εάν το αρχείο δεν μπορεί να ανοίξει, γίνεται raise μιαOSError. Δείτε τοΑνάγνωση και Εγγραφή Αρχείων για περισσότερα παραδείγματα χρήσης αυτής της συνάρτησης.

Τοαρχείο είναι έναpath-like object που δίνει το όνομα διαδρομής (απόλυτο ή σε σχέση με τον τρέχοντα κατάλογο εργασίας) του αρχείου που θα ανοίξει ή ένας ακέραιος περιγραφέας αρχείου του αρχείου που πρόκειται να αναδιπλωθεί. (Εάν δίνεται ένας περιγραφέας αρχείου, κλείνει όταν το επιστρεφόμενο αντικείμενο I/O είναι κλειστό εκτός εάνclosefd έχει οριστεί ωςFalse.)

Τοmode είναι μια προαιρετική συμβολοσειρά που καθορίζει τη λειτουργία στην οποία ανοίγει το αρχείο. Από προεπιλογή είναι'r' που σημαίνει ανοιχτό για ανάγνωση σε λειτουργία κειμένου. Άλλες κοινές τιμές είναι'w' για εγγραφή (περικοπή του αρχείου εάν υπάρχει ήδη),'x' για αποκλειστική δημιουργία και'a' για προσθήκη (κάτι που σεμερικά συστήματα Unix, σημαίνει ότιόλες οι εγγραφές προσαρτώνται στο τέλος του αρχείου ανεξάρτητα από την τρέχουσα θέση αναζήτησης). Στη λειτουργία κειμένου, εάν δεν έχει καθοριστεί τοencoding, η κωδικοποίηση που χρησιμοποιείται εξαρτάται από την πλατφόρμα:locale.getencoding() καλείται για να ληφθεί η τρέχουσα κωδικοποίηση τοπικών ρυθμίσεων. (Για την ανάγνωση και την εγγραφή ακατέργαστων bytes χρησιμοποιείται δυαδική λειτουργία και αφήνουν τοencoding απροσδιόριστο.) Οι διαθέσιμες λειτουργίες είναι:

Χαρακτήρας

Έννοια

'r'

άνοιγμα για ανάγνωση (default)

'w'

άνοιγμα για εγγραφή, περικόπτοντας πρώτα το αρχείο

'x'

άνοιγμα για αποκλειστική δημιουργία, αποτυγχάνοντας εάν το αρχείο υπάρχει ήδη

'a'

άνοιγμα για εγγραφή, προσαρτάται στο τέλος του αρχείου εάν υπάρχει

'b'

δυαδική (binary) λειτουργία

't'

λειτουργία κειμένου (default)

'+'

άνοιγμα για ενημέρωση (ανάγνωση και εγγραφή)

Η προεπιλεγμένη λειτουργία είναι'r' (ανοίγει για ανάγνωση κειμένου, συνώνυμο του'rt'). Οι λειτουργίες'w+' και'w+b' ανοίγει και περικόβει το αρχείο. Οι λειτουργίες'r+' and'r+b' ανοίγουν το αρχείο χωρίς περικοπή.

Όπως αναφέρεται στοOverview, η Python κάνει διάκριση μεταξύ δυαδικού και κειμένου I/O. Τα αρχεία που ανοίγουν σε δυαδική λειτουργία (συμπεριλαμβανομένου του'b' στο όρισμαmode) επιστρέφουν τα περιεχόμενα ωςbytes αντικείμενα χωρίς αποκωδικοποίηση. Στη λειτουργία κειμένου (η προεπιλογή, ή όταν το't' περιλαμβάνεται στο όρισμαmode), τα περιεχόμενα του αρχείου επιστρέφονται ωςstr, τα bytes έχουν πρώτα αποκωδικοποιηθεί χρησιμοποιώντας μια εξαρτώμενη από πλατφόρμα κωδικοποίηση ή χρήση της καθορισμένηςκωδικοποίησης εάν δίνεται.

Σημείωση

Η Python δεν εξαρτάται από την έννοια των αρχείων κειμένου του υποκείμενου λειτουργικού συστήματος∙ όλη η επεξεργασία γίνεται από την ίδια την Python και επομένως είναι ανεξάρτητη από την πλατφόρμα.

Tobuffering είναι ένας προαιρετικός ακέραιος που χρησιμοποιείται για το ορισμό της πολιτικής αποθήκευσης στην προσωρινή μνήμη. Περνάει το 0 για να απενεργοποιήσετε την προσωρινή μνήμη (επιτρέπεται μόνο σε δυαδική λειτουργία), το 1 για να επιλέξετε προσωρινή αποθήκευση γραμμής (μπορεί να χρησιμοποιηθεί μόνο όταν γράφετε σε λειτουργία κειμένου) και έναν ακέραιο > 1 για να υποδείξει το μέγεθος σε byte μιας προσωρινής μνήμης τμημάτων σταθερού μεγέθους. Λάβετε υπόψη ότι ο καθορισμός ενός μεγέθους buffer με αυτόν τον τρόπο ισχύει για I/O με δυαδική προσωρινή μνήμη, αλλά τοTextIOWrapper (δηλαδή, τα αρχεία που ανοίγουν μεmode='r+') θα έχουνε άλλη αποθήκευση. Για να απενεργοποιήσετε την προσωρινή αποθήκευση στοTextIOWrapper, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε μιαwrite_through σημαία γιαio.TextIOWrapper.reconfigure(). Όταν δεν δίνεται όρισμαbuffering, η προεπιλεγμένη πολιτική προσωρινής αποθήκευσης λειτουργεί ως εξής:

  • Τα δυαδικά αρχεία αποθηκεύονται στην προσωρινή μνήμη σε κομμάτια σταθερού μεγέθους∙ το μέγεθος του buffer είναιmax(min(blocksize,8MiB),DEFAULT_BUFFER_SIZE) όταν το μέγεθος μπλοκ της συσκευής είναι διαθέσιμο. Στα περισσότερα συστήματα, το buffer θα έχει συνήθως μήκος 128 kilobytes.

  • «Interactive» αρχεία κειμένου (αρχεία για τα οποία τοisatty() επιστρέφειTrue) χρησιμοποιούν αποθήκευση γραμμής. Άλλα αρχεία κειμένου χρησιμοποιούν την πολιτική που περιγράφεται παραπάνω για δυαδικά αρχεία.

Τοencoding είναι το όνομα της κωδικοποίησης που χρησιμοποιείται για την αποκωδικοποίηση ή την κωδικοποίηση του αρχείου. Θα πρέπει να χρησιμοποιείται μόνο σε λειτουργία κειμένου. Η προεπιλεγμένη κωδικοποίηση εξαρτάται από την πλατφόρμα (οτιδήποτε επιστρέφει ηlocale.getencoding()), αλλά οποιοδήποτεtext encoding που υποστηρίζεται από την Python. Δείτε το modulecodecs για τη λίστα των υποστηριζόμενων κωδικοποιήσεων.

Τοerrors είναι μια προαιρετική συμβολοσειρά που καθορίζει τον τρόπο χειρισμού των σφαλμάτων κωδικοποίησης και αποκωδικοποίησης-αυτό δεν μπορεί να χρησιμοποιηθεί σε δυαδική λειτουργία. Διατίθεται μια ποικιλία τυπικών εργαλείων χειρισμού σφαλμάτων (παρατίθενται στην ενότηταError Handlers), αν και οποιοδήποτε όνομα χειρισμού σφαλμάτων έχει καταχωρηθεί με τοcodecs.register_error() είναι επίσης έγκυρο. Τα τυπικά ονόματα περιλαμβάνουν:

  • Το'strict' κάνει raise μια εξαίρεσηValueError εάν υπάρχει σφάλμα κωδικοποίησης. Η προεπιλεγμένη τιμή τουNone έχει το ίδιο αποτέλεσμα.

  • Το'ignore' αγνοεί τα σφάλματα. Σημειώστε ότι η παράβλεψη σφαλμάτων κωδικοποίησης μπορεί να οδηγήσει σε απώλεια δεδομένων.

  • Το'replace' προκαλεί την εισαγωγή ενός δείκτη αντικατάστασης (όπως'?') όταν υπάρχουν δεδομένα με λανθασμένη μορφή.

  • Το'surrogateescape' θα αντιπροσωπεύει τυχόν λανθασμένα bytes ως μονάδες χαμηλού υποκατάστατου κωδικού που κυμαίνονται από U+DC80 έως U+DCFF. Αυτές οι μονάδες υποκατάστατου κωδικού θα μετατραπούν στη συνέχεια στα ίδια bytes όταν ο χειριστής σφαλμάτωνsurrogateescape χρησιμοποιείται κατά την εγγραφή δεδομένων. Αυτό είναι χρήσιμο για την επεξεργασία αρχείων σε άγνωστη κωδικοποίηση.

  • Το'xmlcharrefreplace' υποστηρίζεται μόνο κατά την εγγραφή σε αρχείο. Οι χαρακτήρες που δεν υποστηρίζονται από την κωδικοποίηση αντικαθίστανται με την κατάλληλη αναφορά χαρακτήρων XML&#nnn;.

  • Το'backslashreplace' αντικαθιστά δεδομένα με λανθασμένη μορφή από τις ακολουθίες διαφυγής με ανάστροφης καθέτου Python.

  • Το'namereplace' (υποστηρίζεται επίσης μόνο κατά τη σύνταξη) αντικαθιστά τους μη υποστηριζόμενους χαρακτήρες με ακολουθίες διαφυγής\N{...}.

Τοnewline καθορίζει τον τρόπο ανάλυσης χαρακτήρων νέας γραμμής από τη ροή. Μπορεί να είναι καιNone,'','\n','\r', και'\r\n'. Λειτουργεί ως εξής:

  • Κατά την ανάγνωση εισόδου από την ροή, εάν τοnewline είναιNone, η καθολική λειτουργία νέων γραμμών είναι ενεργοποιημένη. Οι γραμμές στην είσοδο μπορούν να τελειώνουν σε'\n','\r', ή'\r\n', και αυτά μεταφράζονται σε'\n' πριν επιστραφούν στον καλούντα. Εάν είναι'', η καθολική λειτουργία νέων γραμμών είναι ενεργοποιημένη, αλλά οι καταλήξεις γραμμών επιστρέφονται στον καλούντα αμετάφραστα. Εάν έχει κάποια από τις άλλες νόμιμες τιμές, οι γραμμές εισόδου τερματίζονται μόνο από τη δεδομένη συμβολοσειρά και η κατάληξη γραμμής επιστρέφεται στον καλούντα αμετάφραστη.

  • Κατά την εγγραφή εξόδου στη ροή, εάν τοnewline είναιNone, τυχόν χαρακτήρες'\n' μεταφράζονται στο διαχωριστικό προεπιλεγμένων γραμμών του συστήματος,os.linesep. Εάν τοnewline είναι'' ή'\n', δεν πραγματοποιείται μετάφραση εάν τοnewline είναι οποιαδήποτε από τις άλλες νόμιμες τιμές, γράφονται οποιοιδήποτε χαρακτήρες'\n' μεταφράζονται στη δεδομένη συμβολοσειρά.

Εάν τοclosefd είναιFalse και έχει δοθεί ένας περιγραφέας αρχείου αντί για ένα όνομα αρχείου, ο υποκειμενικός περιγραφέας αρχείου θα παραμείνει ανοιχτός όταν το αρχείο κλείσει. Εάν δοθεί ένα όνομα αρχείου τοclosefd πρέπει να είναιTrue (η προεπιλογή)∙ διαφορετικά, θα προκύψει ένα σφάλμα.

Ένα προσαρμοσμένο πρόγραμμα ανοίγματος μπορεί να χρησιμοποιηθεί μεταβιβάζοντας ένα callable ωςopener. Ο υποκείμενος περιγραφέας αρχείου για το αντικείμενο αρχείου λαμβάνεται στη συνέχεια καλώντας τοopener με (file,flags). Τοopener πρέπει να επιστρέψει ένα περιγραφέα ανοιχτού αρχείου (περνώνταςos.open ωςopener έχει ως αποτέλεσμα λειτουργικότητας παρόμοια με το να περάσουμε τοNone).

Το νέο δημιουργημένο αρχείο είναιnon-inheritable.

Το παρακάτω παράδειγμα χρησιμοποιεί την παράμετροdir_fd της συνάρτησηςos.open() για να ανοίξει ένα αρχείο σε σχέση με έναν δεδομένο κατάλογο:

>>>importos>>>dir_fd=os.open('somedir',os.O_RDONLY)>>>defopener(path,flags):...returnos.open(path,flags,dir_fd=dir_fd)...>>>withopen('spamspam.txt','w',opener=opener)asf:...print('This will be written to somedir/spamspam.txt',file=f)...>>>os.close(dir_fd)# don't leak a file descriptor

Ο τύπος τουfile object που επιστρέφεται από τη συνάρτησηopen() εξαρτάται από τη λειτουργία. Όταν τοopen() χρησιμοποιείται για το άνοιγμα ενός αρχείου σε λειτουργία κειμένου ('w','r','wt','rt', κ.λπ.), επιστρέφει μια υποκλάση τουio.TextIOBase (specificallyio.TextIOWrapper). Όταν χρησιμοποιείται για το άνοιγμα ενός αρχείου σε δυαδική λειτουργία με προσωρινή αποθήκευση, η κλάση που επιστρέφεται είναι μια υποκλάση τουio.BufferedIOBase. Η ακριβής κλάση ποικίλλει: σε λειτουργία δυαδικής ανάγνωσης, επιστρέφει έναio.BufferedReader ∙ σε δυαδικές καταστάσεις εγγραφής και δυαδικής προσθήκης, επιστρέφει έναio.BufferedWriter, και στη λειτουργία ανάγνωσης/εγγραφής, επιστρέφει έναio.BufferedRandom. Όταν η προσωρινή αποθήκευση είναι απενεργοποιημένη, επιστρέφεται, η ακατέργαστη ροή , μια υποκλάσηio.RawIOBase,io.FileIO.

Δείτε επίσης τις ενότητες διαχείρισης αρχείων, όπωςfileinput,io (όπου ορίζεται ηopen()),os,os.path,tempfile, καιshutil.

Κάνει raise έναauditing eventopen με ορίσματαpath,mode,flags.

Τα ορίσματαmode καιflags μπορεί να έχουν τροποποιηθεί ή να έχουν συναχθεί από την αρχική κλήση.

Άλλαξε στην έκδοση 3.3:

  • Προστέθηκε η παράμετροςopener.

  • Προστέθηκε η λειτουργία'x'.

  • ΤοIOError γινόταν raise παλιά, τώρα είναι ψευδώνυμο τουOSError.

  • ΤοFileExistsError γίνεται raise τώρα εάν το αρχείο που ανοίγει σε λειτουργία αποκλειστικής δημιουργίας ('x') υπάρχει ήδη.

Άλλαξε στην έκδοση 3.4:

  • Το αρχείο είναι πλέον μη κληρονομικό.

Άλλαξε στην έκδοση 3.5:

  • Εάν η κλήση συστήματος διακοπεί και ο χειριστής σήματος δεν κάνει raise μια εξαίρεση, η συνάρτηση επαναλαμβάνει τώρα την κλήση συστήματος αντί να κάνει raise μια εξαίρεσηInterruptedError (δείτε τοPEP 475 για το σκεπτικό).

  • Προστέθηκε το πρόγραμμα χειρισμού σφαλμάτων'namereplace'.

Άλλαξε στην έκδοση 3.6:

  • Προστέθηκε υποστήριξη για την αποδοχή αντικειμένων που υλοποιούνos.PathLike.

  • Στα Windows, το άνοιγμα μιας προσωρινής μνήμης κονσόλας μπορεί να επιστρέψει μια υποκλάση τουio.RawIOBase εκτός από τοio.FileIO.

Άλλαξε στην έκδοση 3.11:Η λειτουργία'U' έχει αφαιρεθεί.

ord(c)

Δεδομένου μιας συμβολοσειράς που αντιπροσωπεύει έναν χαρακτήρα Unicode, επιστρέφει έναν ακέραιο που αντιπροσωπεύει το σημείο κωδικού Unicode αυτού του χαρακτήρα. Για παράδειγμα, τοord('a') επιστρέφει τον ακέραιο αριθμό97 καιord('€') (σύμβολο του ευρώ) επιστρέφει8364. Αυτό είναι το αντίστροφο τουchr().

pow(base,exp,mod=None)

Επιστρέφειbase στην δύναμηexp*∙ εάν υπάρχει το *mod, επιστρέφειbase στην δύναμηexp, modulomod (υπολογίζεται πιο αποτελεσματικά από τοpow(base,exp)%mod). Η φόρμα δύο ορισμάτωνpow(base,exp) ισοδυναμεί με τη χρήση του τελεστή δύναμης:base**exp.

Τα ορίσματα πρέπει να έχουνε αριθμητικούς τύπους. Με μεικτούς τύπους τελεστών, ισχύουν οι κανόνες εξαναγκασμού για δυαδικούς τελεστές αριθμητικής. Για του τελεστέςint, το αποτέλεσμα έχει τον ίδιο τύπο με τους τελεστές (μετά τον εξαναγκασμό), εκτός εάν το δεύτερο όρισμα είναι αρνητικό∙ σε αυτή την περίπτωση, όλα τα ορίσματα μετατρέπονται σε float και επιστρέφεται ένα αποτέλεσμα τύπους float. Για παράδειγμα,pow(10,2) επιστρέφει100, αλλά τοpow(10,-2) επιστρέφει0.01. Για μια αρνητική βάση τύπουint ήfloat και έναν μη αναπόσπαστο εκθέτη, παραδίδεται ένα μιγαδικό αποτέλεσμα. Για παράδειγμα,pow(-9,0.5) επιστρέφει μια τιμή κοντά στο3j. Ενώ, για μια αρνητική βάση τύπουint ήfloat με αναπόσπαστο εκθέτη, παραδίδεται ένα αποτέλεσμα float. Για παράδειγμα, τοpow(-9,2.0) επιστρέφει το81.0.

Για τους τελεστές τηςintbase καιexp, εάν υπάρχειmod, τοmod πρέπει επίσης να είναι ακεραίου τύπου και τοmod πρέπει να είναι μη μηδενικό. Εάν υπάρχειmod και τοexp είναι αρνητικό, τοbase πρέπει να είναι σχετικά πρώτο στοmod. Σε αυτήν την περίπτωση , επιστρέφεται τοpow(inv_base,-exp,mod), όπου τοinv_base είναι αντίστροφο τουbase modulomod.

Ακολουθεί ένα παράδειγμα υπολογισμού ενός αντίστροφου για το38 modulo97:

>>>pow(38,-1,mod=97)23>>>23*38%97==1True

Άλλαξε στην έκδοση 3.8:Για του τελεστέςint, η μορφή τριών ορισμών τουpow επιτρέπει τώρα το δεύτερο όρισμα να είναι αρνητικό, επιτρέποντας τον υπολογισμό των αρθρωτών αντίστροφων.

Άλλαξε στην έκδοση 3.8:Επιτρέπονται ορίσματα keyword. Παλαιότερα, υποστηρίζονταν μόνο ορίσματα θέσης.

print(*objects,sep='',end='\n',file=None,flush=False)

Εκτυπώνειobjects στην ροή κειμένουfile, χωρισμένα μεsep και ακολουθούμενα απόend. Ταsep,end,file, καιflush, εάν υπάρχουν, πρέπει να δίνονται ως ορίσματα keyword.

Όλα τα μη keyword ορίσματα μετατρέπονται σε συμβολοσειρές όπως κάνει ηstr() και γράφονται στη ροή, χωρισμένα μεsep και ακολουθούνται απόend. Και τα δύοsep καιend πρέπει να είναι συμβολοσειρές∙ μπορεί επίσης να είναιNone, που σημαίνει ότι θα χρησιμοποιηθούν οι προεπιλεγμένες τιμές. Εάν δεν δίνονταιαντικείμενα, ηprint() θα γράψει απλάend.

Το όρισμαfile πρέπει να είναι αντικείμενο με μια μέθοδοwrite(string)``∙εάνδενυπάρχειήείναι``None, θα χρησιμοποιηθεί τοsys.stdout. Επειδή τα τυπωμένα ορίσματα μετατρέπονται σε συμβολοσειρές κειμένου, ηprint() δεν μπορεί να χρησιμοποιηθεί με αντικείμενα αρχείου δυαδικής λειτουργίας. Για αυτά, χρησιμοποιούμε τοfile.write(...).

Η προσωρινή αποθήκευση εξόδου καθορίζεται συνήθως από τοαρχείο. Ωστόσο, εάν τοflush είναι αληθές, η ροή ξεπλένεται αναγκαστικά.

Άλλαξε στην έκδοση 3.3:Προστέθηκε το όρισμα keywordflush.

classproperty(fget=None,fset=None,fdel=None,doc=None)

Επιστρέφει ένα χαρακτηριστικό ιδιότητας.

Τοfget είναι μια συνάρτηση για τη λήψη μιας τιμής χαρακτηριστικού. Τοfset είναι μια συνάρτηση για τον ορισμό μιας τιμής χαρακτηριστικού. Τοfdel είναι μια συνάρτηση για τη διαγραφή μιας τιμής χαρακτηριστικού. Και τοdoc δημιουργεί μια συμβολοσειρά εγγράφων για το χαρακτηριστικό.

Μια τυπική χρήση είναι ο ορισμός ενός διαχειριζόμενου χαρακτηριστικούx:

classC:def__init__(self):self._x=Nonedefgetx(self):returnself._xdefsetx(self,value):self._x=valuedefdelx(self):delself._xx=property(getx,setx,delx,"I'm the 'x' property.")

Εάν τοc είναι ένα instance τουC, τοc.x θα καλέσει τον λήπτη, τοc.x=value`θακαλέσειτονρυθμιστή,καιτο``delc.x τον διαγραφέα.

Εάν δίνεται, τοdoc θα είναι το docstring του χαρακτηριστικού ιδιότητας. Διαφορετικά , η ιδιότητα θα αντιγράψει τη συμβολοσειρά τουfget (εάν υπάρχει). Αυτό καθιστά δυνατή τη δημιουργία ιδιοτήτων μόνο για ανάγνωση, εύκολα χρησιμοποιώντας τηproperty() ωςdecorator:

classParrot:def__init__(self):self._voltage=100000@propertydefvoltage(self):"""Get the current voltage."""returnself._voltage

Ο decorator@property μετατρέπει την μέθοδοvoltage() σε «getter» για ένα χαρακτηριστικό μόνο για ανάγνωση με το ίδιο όνομα, και ορίζει τη συμβολοσειρά εγγράφων γιαvoltage σε «Get the current voltage.»

@getter
@setter
@deleter

Ένα αντικείμενο ιδιότητας έχει μεθόδουςgetter,setter, καιdeleter που μπορούν να χρησιμοποιηθούν ως διακοσμητές που δημιουργούν ένα αντίγραφο της ιδιότητας με την αντίστοιχη συνάρτηση accessor που έχει οριστεί στον decorator. Αυτό εξηγείται καλύτερα με ένα παράδειγμα:

classC:def__init__(self):self._x=None@propertydefx(self):"""I'm the 'x' property."""returnself._x@x.setterdefx(self,value):self._x=value@x.deleterdefx(self):delself._x

Αυτός ο κώδικας είναι ακριβώς ισοδύναμος με το πρώτο παράδειγμα. Φροντίστε να δώσετε στις πρόσθετες συναρτήσεις το ίδιο όνομα με την αρχική ιδιότητα (x σε αυτήν την περίπτωση.)

Το επιστρεφόμενο αντικείμενο ιδιότητας έχει επίσης τα χαρακτηριστικάfget,fset, καιfdel που αντιστοιχούν στα ορίσματα του κατασκευαστή.

Άλλαξε στην έκδοση 3.5:Ταdocstrings των αντικειμένων ιδιότητας είναι πλέον εγγράψιμες.

__name__

Χαρακτηριστικό που περιέχει το όνομα της ιδιότητας. Το όνομα της ιδιότητας μπορεί να αλλάξει κατά την εκτέλεση.

Added in version 3.13.

classrange(stop)
classrange(start,stop,step=1)

Αντί να είναι συνάρτηση, τοrange είναι στην πραγματικότητα ένας αμετάβλητος τύπος ακολουθίας, όπως τεκμηριώνεται σταΕύρη (Ranges) καιΤύποι Ακολουθίας (Sequence) — list, tuple, range.

repr(object)

Επιστρέφει μια συμβολοσειρά που περιέχει μια εκτυπώσιμη αναπαράσταση ενός αντικειμένου. Για πολλούς τύπους, αυτή η συνάρτηση κάνει μια προσπάθεια να επιστρέψει μια συμβολοσειρά που θα απέδιδε ένα αντικείμενο με την ίδια τιμή όταν μεταβιβαζόταν στοeval() ∙ διαφορετικά, η αναπαράσταση είναι μια συμβολοσειρά που περικλείεται σε αγκύλες που περιέχει το όνομα του τύπου του αντικειμένου μαζί με πρόσθετες πληροφορίες που συχνά περιλαμβάνουν το όνομα και τη διεύθυνση του αντικειμένου. Μια κλάση μπορεί να ελέγξει τι επιστρέφει αυτή η συνάρτηση για τις οντότητες της ορίζοντας μια μέθοδο__repr__(). Εάν ηsys.displayhook() δεν είναι προσβάσιμη, αυτή η συνάρτηση θα κάνει raise τοRuntimeError.

Αυτή η κλάση έχει μια προσαρμοσμένη αναπαράσταση που μπορεί να αξιολογηθεί:

classPerson:def__init__(self,name,age):self.name=nameself.age=agedef__repr__(self):returnf"Person('{self.name}',{self.age})"
reversed(seq)

Επιστρέφει ένα αντίστροφοiterator. Τοseq πρέπει να είναι ένα αντικείμενο που έχει μια μέθοδο__reversed__() ή υποστηρίζει το πρωτόκολλο ακολουθίας (η μέθοδος__len__() και η μέθοδος__getitem__() με ακέραια ορίσματα που ξεκινούν από0).

round(number,ndigits=None)

Επιστρέφει τονnumber στρογγυλοποιημένο σεndigits ακρίβεια μετά την υποδιαστολή. Εάν τοndigits παραληφθεί ή είναιNone, επιστρέφει τον πλησιέστερο ακέραιο αριθμό στην είσοδό του.

Για του ενσωματωμένους τύπους που υποστηρίζουν τηround(), οι τιμές στρογγυλοποιούνται στο πλησιέστερο πολλαπλάσιο του 10 στην δύναμη μείονndigits*∙ εάν δύο πολλαπλάσια είναι εξίσου κοντά, η στρογγυλοποίηση γίνεται προς την άρτια επιλογή (έτσι, για παράδειγμα, τόσο το ``round(0.5)`` και ``round(-0.5)`` είναι ``0``, και ``round(1.5)`` είναι ``2``). Οποιαδήποτε ακέραια τιμή είναι έγκυρη για *ndigits (θετική, μηδενική, ή αρνητική). Η επιστρεφόμενη τιμή είναι ακέραιος εάν τοndigits παραλειφθεί ή είναιNone. Διαφορετικά, η τιμή επιστροφής έχει τον ίδιο τύπο με τοnumber.

Για ένα γενικό αντικείμενο Pythonnumber,round εκχωρεί στοnumber.__round__.

Σημείωση

Η συμπεριφορά τουround() για floats μπορεί να είναι εκπληκτική: για παράδειγμα, τοround(2.675,2) δίνει2.67 αντί για το αναμενόμενο2.68. Αυτό δεν είναι bug: είναι αποτέλεσμα του γεγονότος ότι τα περισσότερα δεκαδικά κλάσματα δεν μπορούν να αναπαρασταθούν ακριβώς ως float. Δείτε τοΑριθμητική Κινητής Υποδιαστολής: Ζητήματα και Περιορισμοί για περισσότερες πληροφορίες.

classset
classset(iterable)

Επιστρέφει ένα νέο αντικείμενοset, προαιρετικά με στοιχεία που λαμβάνονται από τοiterable. Τοset είναι μια ενσωματωμένη κλάση. Δείτεset καιΤύποι Συνόλου (Set) — set, frozenset για τεκμηρίωση αυτής της κλάσης.

Για άλλα containers, δείτε τις ενσωματωμένες κλάσειςfrozenset,list,tuple, καιdict, καθώς και το modulecollections.

setattr(object,name,value)

Αυτό είναι το αντίστοιχο τουςgetattr(). Τα ορίσματα είναι ένα αντικείμενο, μια συμβολοσειρά και μια αυθαίρετη τιμή. Η συμβολοσειρά μπορεί να ονομάσει ένα υπάρχον χαρακτηριστικό ή ένα νέο χαρακτηριστικό. Η συνάρτηση εκχωρεί την τιμή στο χαρακτηριστικό, με την προϋπόθεση ότι το αντικείμενο το επιτρέπει. Για παράδειγμαsetattr(x,'foobar',123) ισοδυναμεί με τοx.foobar=123.

Τοname δεν χρειάζεται να είναι αναγνωριστικό Python όπως ορίζεται στοIdentifiers and keywords , εκτός εάν το αντικείμενο επιλέξει να το επιβάλει αυτό, για παράδειγμα σε ένα προσαρμοσμένο__getattribute__() ή μέσω__slots__. Ένα χαρακτηριστικό του οποίου το όνομα δεν είναι αναγνωριστικό δεν θα είναι προσβάσιμο χρησιμοποιώντας τη σημειογραφία, αλλά είναι προσβάσιμο μέσω τουgetattr() κ.λπ..

Σημείωση

Δεδομένου ότι τοprivate name mangling συμβαίνει κατά τη στιγμή της μεταγλώττισης, πρέπει κανείς να παραμορφώσει με μη αυτόματο τρόπο το όνομα ενός ιδιωτικού χαρακτηριστικού (χαρακτηριστικά με δύο προπορευόμενες κάτω παύλες) για να το ορίσει μεsetattr().

classslice(stop)
classslice(start,stop,step=None)

Επιστρέφετε ένα αντικείμενοslice που αντιπροσωπεύει το σύνολο των δεικτών που καθορίζονται από τοrange(start,stop,step). Τα ορίσματαstart καιstep είναι από προεπιλογήNone.

start
stop
step

Τα αντικείμενα τμημάτων έχουν χαρακτηριστικά δεδομένων μόνο για ανάγνωσηstart,stop, καιstep τα οποία απλώς επιστρέφουν τις τιμές του ορίσματος (ή την προεπιλογή τους). Δεν έχουνε άλλη ρητή λειτουργικότητα∙ ωστόσο, χρησιμοποιούνται από το NumPy και άλλα πακέτα τρίτων.

Τα αντικείμενα slice δημιουργούνται επίσης όταν χρησιμοποιείται εκτεταμένη σύνταξη ευρετηρίου. Για παράδειγμα:a[start:stop:step] ήa[start:stop,i]. Δείτε τηitertools.islice() για μια εναλλακτική έκδοση που επιστρέφει έναiterator.

Άλλαξε στην έκδοση 3.12:Τα αντικείμενα slice είναι πλέονhashable (με την προϋπόθεσηstart,stop, καιstep μπορούν να κατακερματιστούν).

sorted(iterable,/,*,key=None,reverse=False)

Επιστρέφει μια νέα ταξινομημένη λίστα από τα στοιχεία στοiterable.

Έχει δύο προαιρετικά ορίσματα που πρέπει να καθοριστούν ως ορίσματα λέξεων-κλειδιών.

Τοkey καθορίζει μια συνάρτηση ενός ορίσματος που χρησιμοποιείται για την εξαγωγή ενός κλειδιού σύγκρισης από κάθε στοιχείο στοiterable (για παράδειγμα,key=str.lower). Η προεπιλεγμένη τιμή είναιNone (συγκρίνει τα στοιχεία απευθείας).

Τοreverse είναι μια δυαδική τιμή. Εάν οριστεί σεTrue, τότε τα στοιχεία της λίστας ταξινομούνται σαν να είχε αντιστραφεί κάθε σύγκριση.

Χρησιμοποιήστε τοfunctools.cmp_to_key() για να μετατρέψετε μια συνάρτησηcmp παλιού τύπου σε συνάρτησηkey.

Η ενσωματωμένη συνάρτησηsorted() είναι εγγυημένη ότι είναι σταθερή. Μια ταξινόμηση είναι σταθερή εάν εγγυάται ότι δεν θα αλλάξει η σχετική σειρά των στοιχείων που συγκρίνονται ίσα — αυτό είναι χρήσιμο για ταξινόμηση σε πολλαπλά περάσματα (για παράδειγμα, ταξινόμηση ανά τμήμα, μετά ανά μισθολογικό βαθμό).

Ο αλγόριθμος ταξινόμησης χρησιμοποιεί μόνο συγκρίσεις< μεταξύ στοιχείων. Ενώ ο ορισμός μιας μεθόδου__lt__() αρκεί για την ταξινόμηση, τοPEP 8 συνιστά και τις έξιrich comparisons που θα εφαρμοστούν. Αυτό θα βοηθήσει στην αποφυγή σφαλμάτων κατά τη χρήση των ίδιων δεδομένων με άλλα εργαλεία διάταξης, όπωςmax() που βασίζονται σε διαφορετική υποκείμενη μέθοδο. Η υλοποίηση και των έξι συγκρίσεων βοηθά επίσης στην αποφυγή σύγχυσης για συγκρίσεις μικτού τύπου που μπορούν να καλέσουν την ανακλώμενη μέθοδο__gt__().

Για παραδείγματα ταξινόμησης και ένα σύντομο σεμινάριο ταξινόμησης, ανατρέξτε στοSorting Techniques.

@staticmethod

Μετατροπή μιας μεθόδου σε στατική μέθοδο.

Μια στατική μέθοδος δεν λαμβάνει ένα σιωπηρό πρώτο όρισμα. Για να δηλώσετε μια στατική μέθοδο, χρησιμοποιήστε αυτό το ιδίωμα:

classC:@staticmethoddeff(arg1,arg2,argN):...

Η φόρμα@staticmethod είναι μια συνάρτησηdecorator – δείτεFunction definitions για λεπτομέρειες.

Μια στατική μέθοδος μπορεί να κληθεί είτε στην κλάση (όπωςC.f()) είτε σε ένα instance (όπωςC().f()). Επιπλέον, η στατική μέθοδοςdescriptor μπορεί επίσης να κληθεί, επομένως μπορεί να χρησιμοποιηθεί στον ορισμός της κλάσης (όπωςf()).

Οι στατικές μέθοδοι στην Python είναι παρόμοιες με αυτές που βρίσκονται στην Java ή στη C++. Επίσης, ανατρέξτε στηclassmethod() για μια παραλλαγή που είναι χρήσιμη για τη δημιουργία εναλλακτικών κατασκευαστών κλάσεων.

Όπως όλοι οι διακοσμητές, είναι επίσης δυνατό να καλέσετε τηνstaticmethod ως κανονική συνάρτηση και να κάνετε κάτι με το αποτέλεσμά της. Αυτό είναι απαραίτητο σε ορισμένες περιπτώσεις όπου χρειάζεστε μια αναφορά σε μια συνάρτηση από ένα σώμα κλάσης και θέλετε να αποφύγετε την αυτόματη μετατροπή σε instance μέθοδο. Για αυτές τις περιπτώσεις, χρησιμοποιήστε αυτό το ιδίωμα:

defregular_function():...classC:method=staticmethod(regular_function)

Για περισσότερες πληροφορίες σχετικά με τις στατικές μεθόδους, δείτε τοThe standard type hierarchy.

Άλλαξε στην έκδοση 3.10:Οι στατικές μέθοδοι κληρονομούν πλέον τα χαρακτηριστικά της μεθόδου (__module__,__name__,__qualname__,__doc__ και__annotations__),, έχουν ένα νέο χαρακτηριστικό__wrapped__, και μπορούν πλέον να καλούνται ως κανονικές λειτουργίες.

classstr(object='')
classstr(object=b'',encoding='utf-8',errors='strict')

Επιστρέφει μια έκδοσηstr τουobject. Δείτεstr() για λεπτομέρειες.

Τοstr είναι η ενσωματωμένη συμβολοσειράclass. Για γενικές πληροφορίες σχετικά με τις συμβολοσειρές, ανατρέξτεΤύπος Ακολουθίας (Sequence) Κειμένου — str.

sum(iterable,/,start=0)

Αθροίζει τοstart και τα στοιχεία ενόςiterable από αριστερά προς δεξιά και επιστρέφει το σύνολο. Τα στοιχεία τουiterable είναι συνήθως αριθμοί και η τιμή έναρξης δεν επιτρέπεται να είναι συμβολοσειρά.

Για ορισμένες περιπτώσεις χρήσης, υπάρχουν καλές εναλλακτικές λύσεις για τοsum(). Ο προτιμώμενος, γρήγορος τρόπος για να συνδέσετε μια ακολουθία συμβολοσειρών είναι καλώντας''.join(sequence). Για να προσθέσετε τιμές κινητής υποδιαστολής με εκτεταμένη ακρίβεια, δείτεmath.fsum(). Για να συνδυάσετε μια σειρά iterable, σκεφτείτε να χρησιμοποιήσετε τοitertools.chain().

Άλλαξε στην έκδοση 3.8:Η παράμετροςstart μπορεί να καθοριστεί ως όρισμα keyword.

Άλλαξε στην έκδοση 3.12:Η άθροιση των floats άλλαξε σε έναν αλγόριθμο που δίνει μεγαλύτερη ακρίβεια και καλύτερη αντιμεταθετικότητα στις περισσότερες κατασκευές.

Άλλαξε στην έκδοση 3.14:Προστέθηκε εξειδίκευση για άθροιση συμπλεγμάτων, χρησιμοποιώντας τον ίδιο αλγόριθμο όπως για την άθροιση των float.

classsuper
classsuper(type,object_or_type=None)

Επιστρέφει ένα αντικείμενο διακομιστή μεσολάβησης που εκχωρεί κλήσεις μεθόδου σε μια γονική ή αδερφή κλάσηtype. Αυτό είναι χρήσιμο για την πρόσβαση σε μεταβιβασμένες μεθόδους που έχουν παρακαμφθεί σε μια κλάση.

Τοobject_or_type καθορίζει τοmethod resolution order που θα αναζητηθεί. Η αναζήτηση ξεκινά από την κλάση αμέσως μετά τονtype.

Για παράδειγμα, εάν__mro__ τουobject_or_type είναιD->B->C->A->object και η τιμή τουtype είναιB, τότε ηsuper() αναζητάC->A->object.

Το χαρακτηριστικό__mro__ της κλάσης που αντιστοιχεί σε λίστες τουobject_or_type παραθέτει τη σειρά αναζήτησης ανάλυσης μεθόδου που χρησιμοποιείται και από τιςgetattr() καιsuper(). Το χαρακτηριστικό είναι δυναμικό και μπορεί να αλλάξει κάθε φορά που ενημερώνεται η ιεραρχία κληρονομικότητας.

Εάν το δεύτερο όρισμα παραλειφθεί, το υπεραντικείμενο που επιστράφηκε δεν είναι δεσμευμένο. Εάν το δεύτερο όρισμα είναι αντικείμενο,isinstance(obj,type) πρέπει να είναι αληθές. Εάν το δεύτερο όρισμα είναι ένας τύπος, τοissubclass(type2,type) πρέπει να είναι αληθές (αυτό είναι χρήσιμο για μεθόδους κλάσης).

Όταν καλείται απευθείας μέσα σε μια κανονική μέθοδο μιας κλάσης, και τα δύο ορίσματα μπορούν να παραλειφθούν («χωρίς ορίσματαsuper()»). Σε αυτή την περίπτωση, τοtype είναι η περιβάλλουσα κλάση και τοobj είναι το πρώτο όρισμα της αμέσως περιβάλλουσας συνάρτησης (συνήθωςself). (Αυτό σημαίνει ότι ηsuper() χωρίς ορίσματα δεν θα λειτουργήσει όπως αναμένεται μέσα σε φωλιασμένες συναρτήσεις, συμπεριλαμβανομένων και των γεννητριών εκφράσεων, οι οποίες δημιουργούν έμμεσα φωλιασμένες συναρτήσεις.)

Υπάρχουν δύο τυπικές περιπτώσεις χρήσης για τοsuper. Σε μια ιεραρχία κλάσεων με ενιαία κληρονομικότητα, τοsuper μπορεί να χρησιμοποιηθεί για να αναφέρεται σε γονικές κλάσεις χωρίς να τις ονομάζει ρητά, καθιστώντας έτσι τον κώδικα πιο διατηρήσιμο. Αυτή η χρήση είναι πολύ παράλληλη με τη χρήση τουsuper σε άλλες γλώσσες προγραμματισμού.

Η δεύτερη περίπτωση χρήσης είναι η υποστήριξη πολλαπλής κληρονομικότητας συνεργασίας σε ένα δυναμικό περιβάλλον εκτέλεσης. Αυτή η περίπτωση χρήσης είναι μοναδική για την Python και δεν βρίσκεται σε στατικά μεταγλωττισμένες γλώσσες ή γλώσσες που υποστηρίζουν μόνο μεμονωμένη κληρονομικότητα. Αυτό καθιστά δυνατή την υλοποίηση «διαγραμμάτων διαμαντιών» όπου πολλές βασικές κλάσεις υλοποιούν την ίδια μέθοδο. Ο καλός σχεδιασμός υπαγορεύει ότι τέτοιες υλοποιήσεις έχουν την ίδια υπογραφή κλήσης σε κάθε περίπτωση (επειδή η σειρά των κλήσεων καθορίζεται κατά τον χρόνο εκτέλεσης, επειδή αυτή η σειρά προσαρμόζεται στις αλλαγές στην ιεραρχία κλάσεων και επειδή αυτή η διάταξη μπορεί να περιλαμβάνει αδερφικές κλάσεις πριν από τον χρόνο εκτέλεσης).

Και για τις δύο περιπτώσεις χρήσης, μια τυπική κλήση υπερκλάσης μοιάζει με αυτό:

classC(B):defmethod(self,arg):super().method(arg)# This does the same thing as:# super(C, self).method(arg)

Εκτός από τις αναζητήσεις μεθόδων, τοsuper() λειτουργεί επίσης για αναζητήσεις χαρακτηριστικών. Μια πιθανή περίπτωση χρήσης για αυτό είναι η κλήσηdescriptors σε μια κλάση γονέα ή αδελφού.

Λάβετε υπόψη ότι τοsuper() υλοποιείται ως μέρος της διαδικασίας δέσμευσης για ρητές αναζητήσεις χαρακτηριστικών με κουκκίδες όπωςsuper().__getitem__(name). Το κάνει εφαρμόζοντας τη δικιά του μέθοδο__getattribute__() για αναζήτηση κλάσεων με προβλέψιμη σειρά που υποστηρίζει πολλαπλή κληρονομικότητα. Συνεπώς, ηsuper() δεν έχει οριστεί για σιωπηρές αναζητήσεις που χρησιμοποιούν δηλώσεις ή τελεστές όπωςsuper()[name].

Λάβετε επίσης υπόψη ότι, εκτός από τη μορφή μηδενικού ορίσματος, ηsuper() δεν περιορίζεται στη χρήση μεθόδων εντός. Η φόρμα δύο ορισμάτων καθορίζει ακριβώς τα ορίσματα και κάνει τις κατάλληλες αναφορές. Η φόρμα μηδενικού ορίσματος λειτουργεί μόνο μέσα σε έναν ορισμό κλάσης, καθώς ο μεταγλωττιστής συμπληρώνει τις απαραίτητες λεπτομέρειες για την σωστή ανάκτηση της κλάσης που ορίζεται, καθώς και για την πρόσβαση στην τρέχουσα παρουσία για συνηθισμένες μεθόδους.

Για πρακτικές προτάσεις σχετικά με το πώς να σχεδιάσετε συνεργατικές τάξεις χρησιμοποιώντας τοsuper(), ανατρέξτεοδηγός χρήσης super().

Άλλαξε στην έκδοση 3.14:Τα αντικείμεναsuper είναι πλέονpickleable καιcopyable.

classtuple
classtuple(iterable)

Αντί να είναι συνάρτηση, τοtuple είναι στην πραγματικότητα ένα αμετάβλητος τύπος ακολουθίας, όπως τεκμηριώνεται σταΠλειάδες (Tuples) καιΤύποι Ακολουθίας (Sequence) — list, tuple, range.

classtype(object)
classtype(name,bases,dict,**kwds)

Με ένα όρισμα, επιστρέψτε τον τύπο ενόςobject. Η τιμή που επιστρέφεται είναι ένα αντικείμενο τύπου και γενικά το ίδιο αντικείμενο με αυτό που επιστρέφεται από τοobject.__class__.

Η ενσωματωμένη συνάρτησηisinstance() συνίσταται για τη δοκιμή του τύπου ενός αντικειμένου, επειδή λαμβάνει υπόψη τις υποκλάσεις.

Με τρία ορίσματα, επιστρέφει ένα αντικείμενο νέου τύπου. Αυτή είναι ουσιαστικά μια δυναμική μορφή της δήλωσηςclass. Η συμβολοσειράname είναι το όνομα της κλάσης και γίνεται το χαρακτηριστικό__name__. Η πλειάδαbases περιέχει τις βασικές κλάσεις και γίνεται το χαρακτηριστικό__bases__ ∙ αν είναι κενό, προστίθεται τοobject, η τελική βάση όλων των κλάσεων. Το λεξικόdict περιέχει ορισμούς χαρακτηριστικών και μεθόδων για το σώμα της κλάσης∙ μπορεί να αντιγραφεί ή να προσαρμοστεί πριν γίνει το χαρακτηριστικό__dict__. Οι ακόλουθες δύο προτάσεις δημιουργούν πανομοιότυπα αντικείμεναtype

>>>classX:...a=1...>>>X=type('X',(),dict(a=1))

Δείτε επίσης:

Τα ορίσματα λέξεων-κλειδιών που παρέχονται στη φόρμα τριών ορισμάτων μεταβιβάζονται στον κατάλληλο μηχανισμό μετακλάσης (συνήθως__init_subclass__()) με τον ίδιο τρόπο που θα έκαναν οι λέξεις-κλειδιά στον ορισμό μιας κλάσης (εκτός από τοmetaclass).

Δείτε επίσηςCustomizing class creation.

Άλλαξε στην έκδοση 3.6:Οι υποκλάσης τηςtype που δεν αντικαθιστούν τοtype.__new__ δεν μπορούν πλέον να χρησιμοποιούν τη φόρμα ενός επιχειρήματος για να λάβουν τον τύπο ενός αντικειμένου.

vars()
vars(object)

Επιστρέφει το χαρακτηριστικό__dict__ για ένα module, κλάση, στιγμιότυπο, ή οποιοδήποτε άλλο αντικείμενο με ένα χαρακτηριστικό__dict__.

Αντικείμενα όπως modules και instances έχουν ένα χαρακτηριστικό__dict__ με δυνατότητα ενημέρωσης∙ ωστόσο, άλλα αντικείμενα μπορεί να έχουν περιορισμούς εγγραφής στα χαρακτηριστικά τους__dict__ (για παράδειγμα, οι κλάσεις χρησιμοποιούν έναtypes.MappingProxyType για την αποτροπή άμεσων ενημερώσεων λεξικού).

Χωρίς ένα όρισμα,vars() συμπεριφέρεται όπωςlocals().

Μια εξαίρεσηTypeError γίνεται raise εάν ένα αντικείμενο έχει καθοριστεί αλλά δεν έχει ένα χαρακτηριστικό__dict__ (για παράδειγμα, εάν η κλάση του ορίζει το__slots__ χαρακτηριστικό).

Άλλαξε στην έκδοση 3.13:Το αποτέλεσμα της κλήσης αυτής της συνάρτησης χωρίς ένα όρισμα έχει ενημερωθεί, όπως περιγράφεται για τη ενσωματωμένηlocals().

zip(*iterables,strict=False)

Επανάληψη σε πολλούς iterables παράλληλα, δημιουργώντας πλειάδες με ένα αντικείμενο από το καθένα.

Παράδειγμα:

>>>foriteminzip([1,2,3],['sugar','spice','everything nice']):...print(item)...(1, 'sugar')(2, 'spice')(3, 'everything nice')

Πιο τυπικά: ηzip() επιστρέφει έναν iterator πλειάδων, όπου ηi-η πλειάδα περιέχει τοi-ο στοιχείο από κάθε ένα από τους επαναλήψιμους ορισμάτων.

Ένας άλλος τρόπος για να σκεφτείτε τηzip() είναι ότι μετατρέπει τις γραμμές σε στήλες, και τις στήλες σε γραμμές. Αυτό είναι παρόμοιο μεμεταφορά μιας μήτρας.

Τοzip() είναι τεμπέλης: Τα στοιχεία δεν θα υποβληθούν σε επεξεργασία μέχρι να επαναληφθεί ο iterable, π.χ. με έναν βρόχοfor ή με αναδίπλωση σε μιαlist.

Ένα πράγμα που πρέπει να λάβετε υπόψη είναι ότι τα iterables που μεταβιβάστηκαν στηzip() θα μπορούσαν να έχουνε διαφορετικά μήκη∙ μερικές φορές από το σχεδιασμό και μερικές φορές λόγω ενός σφάλματος στον κώδικα που προετοίμασε αυτά τα iterables. Η Python προσφέρει τρεις διαφορετικές προσεγγίσεις για την αντιμετώπιση αυτού του ζητήματος:

  • Από default, ηzip() σταματά όταν εξαντληθεί ο συντομότερος iterable. Αυτό θα αγνοήσει τα υπόλοιπα στοιχεία στους μεγαλύτερους iterables, κόβοντας το αποτέλεσμα στο μήκος του συντομότερου iterable:

    >>>list(zip(range(3),['fee','fi','fo','fum']))[(0, 'fee'), (1, 'fi'), (2, 'fo')]
  • Ηzip() χρησιμοποιείται συχνά σε περιπτώσεις όπου τα iterables υποτίθεται ότι έχουν ίσο μήκος. Σε τέτοιες περιπτώσεις, συνίσταται η χρήση της επιλογήςstrict=True. Η έξοδος είναι ίδια με την κανονικήzip():

    >>>list(zip(('a','b','c'),(1,2,3),strict=True))[('a', 1), ('b', 2), ('c', 3)]

    Σε αντίθεση με την προεπιλεγμένη συμπεριφορά, γίνεται raise έναValueError εάν ένα iterable εξαντληθεί πριν από τα άλλα:

    >>>foriteminzip(range(3),['fee','fi','fo','fum'],strict=True):...print(item)...(0, 'fee')(1, 'fi')(2, 'fo')Traceback (most recent call last):...ValueError:zip() argument 2 is longer than argument 1

    Χωρίς το όρισμαstrict=True, κάθε σφάλμα που οδηγεί σε επαναλαμβανόμενα μήκη διαφορετικού μήκους θα τεθεί σε σίγαση, πιθανώς να εμφανίζεται ως δυσεύρετο σφάλμα σε άλλο μέρος του προγράμματος.

  • Οι μικρότεροι iterables μπορούν να συμπληρωθούν σε μια σταθερή τιμή ώστε όλα τα iterables να έχουνε το ίδιο μήκος. Αυτό γίνεται από τοitertools.zip_longest().

Περιπτώσεις άκρων: Με ένα μόνο επαναληπτικό όρισμα, ηzip() επιστρέφει έναν iterator 1-πλειάδων. Χωρίς ορίσματα, επιστρέφει έναν κενό iterator.

Συμβουλές και κόλπα:

  • Η σειρά αξιολόγησης από αριστερά προς τα δεξιά των iterables είναι εγγυημένη. Αυτό καθιστά δυνατό ένα ιδίωμα για την ομαδοποίηση μιας σειράς δεδομένων σε ομάδες n-μήκους χρησιμοποιώνταςzip(*[iter(s)]*n,strict=True). Αυτό επαναλαμβάνει τιςίδιες επαναλήψειςn φορές έτσι ώστε κάθε πλειάδα εξόδου να έχει το αποτέλεσμα των κλήσεωνn προς τον επαναλήπτη. Αυτό έχει ως αποτέλεσμα τη διαίρεση της εισόδου σε κομμάτια μήκους.

  • Ηzip() σε συνδυασμό με τον τελεστή* μπορεί να χρησιμοποιηθεί για την αποσυμπίεση μιας λίστας:

    >>>x=[1,2,3]>>>y=[4,5,6]>>>list(zip(x,y))[(1, 4), (2, 5), (3, 6)]>>>x2,y2=zip(*zip(x,y))>>>x==list(x2)andy==list(y2)True

Άλλαξε στην έκδοση 3.10:Προστέθηκε το όρισμαstrict.

__import__(name,globals=None,locals=None,fromlist=(),level=0)

Σημείωση

Αυτή είναι μια προηγμένη συνάρτηση που δεν χρειάζεται στον καθημερινό προγραμματισμό της Python, σε αντίθεση με τοimportlib.import_module().

Αυτή η συνάρτηση καλείται από τη δήλωσηimport. Μπορεί να αντικατασταθεί (με εισαγωγή του modulebuiltins και αντιστοίχιση σεbuiltins.__import__) προκειμένου να αλλάξει η σημασιολογία της δήλωσηςimport, αλλά αυτό αποθαρρύνεταισθεναρά, καθώς είναι συνήθως απλούστερο να χρησιμοποιήσετε τα άγκιστρα εισαγωγής (δείτεPEP 302) για την επίτευξη των ίδιων στόχων και δεν προκαλεί προβλήματα με τον κώδικα που προϋποθέτει την χρήση της προεπιλεγμένης υλοποίησης εισαγωγής. Η άμεση χρήση του__import__() επίσης αποθαρρύνεται υπέρ τουimportlib.import_module().

Η συνάρτηση εισάγει το modulename, χρησιμοποιώντας πιθανώς τα δεδομέναglobals καιlocals για να καθορίσει τον τρόπο ερμηνείας του ονόματος σε ένα πλαίσιο πακέτου. Ηfromlist δίνει τα ονόματα των αντικειμένων ή των υπομονάδων που θα πρέπει να εισαχθούν από το module που δίνεται από τοname. Η τυπική υλοποίηση δεν χρησιμοποιεί καθόλου το όρισμαlocals και χρησιμοποιεί ταglobals της μόνο για να προσδιορίσει το πλαίσιο του πακέτου της δήλωσηςimport.

Τοlevel καθορίζει εάν θα χρησιμοποιηθούν απόλυτες ή σχετικές εισαγωγές. Το0 (η προεπιλογή) σημαίνει μόνο απόλυτες εισαγωγές. Οι θετικές τιμές για τοlevel υποδεικνύουν τον αριθμό των γονικών καταλόγων προς αναζήτηση σε σχέση με τον κατάλογο του module που καλεί την__import__() (δείτε τοPEP 328 για λεπτομέρειες).

Όταν η μεταβλητήname είναι της μορφήςpackage.module, κανονικά, επιστρέφεται το πακέτο ανωτάτου επιπέδου (το όνομα μέχρι την πρώτη κουκκίδα),όχι το module που ονομάζεταιname. Ωστόσο, όταν δίνεται ένα μη κενό όρισμαfromlist, επιστρέφεται το module με το όνομαname.

Για παράδειγμα, η δήλωσηimportspam καταλήγει σε bytecode που μοιάζει με τον ακόλουθο κώδικα:

spam=__import__('spam',globals(),locals(),[],0)

Η δήλωσηimportspam.ham καταλήγει σε αυτήν την κλήση:

spam=__import__('spam.ham',globals(),locals(),[],0)

Σημειώστε πως το__import__() επιστρέφει το ανωτάτου επιπέδου module εδώ, επειδή αυτό είναι το αντικείμενο που συνδέεται με ένα όνομα με τη δήλωσηimport.

Από την άλλη πλευρά, η δήλωσηfromspam.hamimporteggs,sausageassaus καταλήγει σε

_temp=__import__('spam.ham',globals(),locals(),['eggs','sausage'],0)eggs=_temp.eggssaus=_temp.sausage

Εδώ, το modulespam.ham επιστρέφεται από τη__import__(). Από αυτό το αντικείμενο, τα ονόματα προς εισαγωγή ανακτώνται και εκχωρούνται στα αντίστοιχα ονόματά τους.

Εάν θέλετε απλώς να εισάγετε ένα module (ενδεχομένως μέσα σε ένα πακέτο) με το όνομα, χρησιμοποιήστε τοimportlib.import_module().

Άλλαξε στην έκδοση 3.3:Αρνητικές τιμές για τοlevel δεν υποστηρίζονται πλέον (το οποίο επίσης αλλάζει την προεπιλεγμένη τιμή σε 0).

Άλλαξε στην έκδοση 3.9:Όταν χρησιμοποιούνται επιλογές της γραμμής εντολών-E ή-I, τότε η μεταβλητή περιβάλλοντοςPYTHONCASEOK δεν λαμβάνεται υπόψιν.

Υποσημειώσεις

[1]

Λάβετε υπόψη ότι ο αναλυτής δέχεται μόνο τη σύμβαση τέλους γραμμής τύπου Unix. Εάν διαβάζετε τον κώδικα από ένα αρχείο βεβαιωθείτε ότι χρησιμοποιείτε την λειτουργία μετατροπής νέας γραμμής για την μετατροπή νέων γραμμών σε στυλ Windows ή Mac.