Ενσωματωμένες (Built-in) Συναρτήσεις¶
O interpreter της Python έχει έναν αριθμό από συναρτήσεις και τύπους ενσωματωμένους (built-in) σε αυτόν, που είναι πάντα διαθέσιμα. Παρατίθενται εδώ με αλφαβητική σειρά.
Ενσωματωμένες (Built-in) Συναρτήσεις |
|||
---|---|---|---|
- abs(x)¶
Return the absolute value of a number. The argument may be an integer, a floating point number, or an object implementing
__abs__()
. If the argument is a complex number, its magnitude is returned.
- aiter(async_iterable)¶
Επιστρέφεται ένας asynchronous iterator για ένα asynchronous iterable. Ισοδυναμεί με την κλήση του
x.__aiter__()
.Σημείωση: Σε αντίθεση με το
iter()
, τοaiter()
δεν έχει παραλλαγή 2 ορισμάτων.Νέο στην έκδοση 3.10.
- all(iterable)¶
Επιστρέφει
True
εάν όλα τα στοιχεία του iterable είναι true (ή εάν το iterable είναι κενό). Ισοδυναμεί με:def all(iterable): for element in iterable: if not element: return False return True
- awaitable anext(async_iterator)¶
- awaitable anext(async_iterator, default)
Όταν αναμένεται, επιστρέφεται το επόμενο στοιχείο από το asynchronous iterator, ή default (προεπιλογή) εάν δίνεται και ο iterator έχει εξαντληθεί.
Αυτό είναι μια ασύγχρονη παραλλαγή της ενσωματωμένης συνάρτησης
next()
, και συμπεριφέρεται παρόμοια.Αυτό καλεί την μέθοδο
__anext__()
του async_iterator, επιστρέφοντας ένα awaitable. Αναμένοντας αυτό, επιστρέφει την επόμενη τιμή του iterator. Αν δίνεται το default (προεπιλογή), αυτό επιστρέφεται εάν ο iterator έχει εξαντληθεί, αλλιώς γίνεται raise έναStopAsyncIteration
.Νέο στην έκδοση 3.10.
- any(iterable)¶
Επιστρέφει
True
εάν οποιοδήποτε στοιχείο του iterable είναι αληθές. Εάν το iterable είναι κενό, επιστρέφειFalse
. Ισοδυναμεί με:def any(iterable): for element in iterable: if element: return True return False
- ascii(object)¶
Όπως η
repr()
, επιστρέφει μια συμβολοσειρά που περιέχει μια εκτυπώσιμη απεικόνιση ενός αντικειμένου, αλλά αναιρεί τους μη-ASCII χαρακτήρες στη συμβολοσειρά που επιστρέφεται από τοrepr()
χρησιμοποιώντας\x
,\u
, ή\U
αποδράσεις. Αυτό παράγει μια συμβολοσειρά παρόμοια με αυτή που επιστρέφεται από τηνrepr()
στην Python 2.
- bin(x)¶
Μετατροπή ενός ακέραιου αριθμού σε μια δυαδική συμβολοσειρά με πρόθεμα «0b». Το αποτέλεσμα είναι μια έγκυρη έκφραση Python. Εάν το x δεν είναι αντικείμενο της Python
int
, πρέπει να οριστεί μια μέθοδος__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()
για περισσότερες πληροφορίες.
- class bool(x=False)¶
Return a Boolean value, i.e. one of
True
orFalse
. x is converted using the standard truth testing procedure. If x is false or omitted, this returnsFalse
; otherwise, it returnsTrue
. Thebool
class is a subclass ofint
(see Αριμθητικοί Τύποι — int, float, complex). It cannot be subclassed further. Its only instances areFalse
andTrue
(see Boolean Values).Άλλαξε στην έκδοση 3.7: x is now a positional-only parameter.
- breakpoint(*args, **kws)¶
This function drops you into the debugger at the call site. Specifically, it calls
sys.breakpointhook()
, passingargs
andkws
straight through. By default,sys.breakpointhook()
callspdb.set_trace()
expecting no arguments. In this case, it is purely a convenience function so you don’t have to explicitly importpdb
or type as much code to enter the debugger. However,sys.breakpointhook()
can be set to some other function andbreakpoint()
will automatically call that, allowing you to drop into the debugger of choice. Ifsys.breakpointhook()
is not accessible, this function will raiseRuntimeError
.Από προεπιλογή, η συμπεριφορά της
breakpoint()
μπορεί να αλλάξει με την μεταβλητή περιβάλλοντοςPYTHONBREAKPOINT
. Βλ. τηνsys.breakpointhook()
για λεπτομέρειες χρήσης.Λάβετε υπόψη ότι αυτό δεν είναι εγγυημένο εάν η
sys.breakpointhook()
έχει αντικατασταθεί.Εγείρει ένα auditing event
builtins.breakpoint
με όρισμαbreakpointhook
.Νέο στην έκδοση 3.7.
- class bytearray(source=b'')
- class bytearray(source, encoding)
- class bytearray(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.
- class bytes(source=b'')
- class bytes(source, encoding)
- class bytes(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__()
.Νέο στην έκδοση 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. Για να δηλώσετε μια μέθοδο κλάσης, χρησιμοποιήστε αυτό το ιδίωμα:
class C: @classmethod def f(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: Class methods now inherit the method attributes (
__module__
,__name__
,__qualname__
,__doc__
and__annotations__
) and have a new__wrapped__
attribute.Άλλαξε στην έκδοση 3.11: Οι μέθοδοι κλάσης δεν μπορούν πλέον να κάνουν 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
(οι συμβολοσειρές εγγραφών καταργήθηκαν επίσης).Αυτή η συνάρτηση κάνει raise
SyntaxError
εάν ο μεταγλωττισμένος κώδικας είναι άκυρος, και τοValueError
εάν ο κώδικας περιλαμβάνει null bytes.Εάν θέλετε να αναλύσετε τον κώδικα Python στην αναπαράσταση του AST, δείτε το
ast.parse()
.Κάνει raise ένα auditing event
compile
με ορίσματαsource
καιfilename
. Αυτό το συμβάν μπορεί επίσης να προκύψει από έμμεση μεταγλώττιση.Σημείωση
Κατά τη μεταγλώττιση μιας συμβολοσειράς με κωδικό πολλαπλών γραμμών στη λειτουργία
'single'
ή'eval'
, η είσοδος πρέπει να τερματίζεται με τουλάχιστον έναν χαρακτήρα νέας γραμμής. Αυτό γίνεται για να διευκολυνθεί ο εντοπισμός μη ολοκληρωμένων και ολοκληρωμένων δηλώσεων στο modulecode
.Προειδοποίηση
Είναι δυνατό να καταρρεύσει ο interpreter της Python με μια αρκετά μεγάλη/σύνθετη συμβολοσειρά κατά τη μεταγλώττιση σε ένα αντικείμενο AST λόγω περιορισμών βάθους στοίβας στον μεταγλωττιστή AST της Python.
Άλλαξε στην έκδοση 3.2: Επιτρέπεται η χρήση νέων γραμμών Windows και Mac. Επίσης, η εισαγωγή στη λειτουργία
'exec'
δεν χρειάζεται πλέον να τελειώνει σε νέα γραμμή. Προστέθηκε η παράμετρος optimize.Άλλαξε στην έκδοση 3.5: Προηγουμένως, το
TypeError
έγινε raise όταν null bytes συναντήθηκαν στο source.Νέο στην έκδοση 3.8:
ast.PyCF_ALLOW_TOP_LEVEL_AWAIT
μπορεί τώρα να μεταβιβαστεί σε σημαίες για να ενεργοποιηθεί η υποστήριξη γιαawait
,async for
, καιasync with
.
- class complex(real=0, imag=0)¶
- class complex(string)
Return a complex number with the value real + imag*1j or convert a string or number to a complex number. If the first parameter is a string, it will be interpreted as a complex number and the function must be called without a second parameter. The second parameter can never be a string. Each argument may be any numeric type (including complex). If imag is omitted, it defaults to zero and the constructor serves as a numeric conversion like
int
andfloat
. If both arguments are omitted, returns0j
.For a general Python object
x
,complex(x)
delegates tox.__complex__()
. If__complex__()
is not defined then it falls back to__float__()
. If__float__()
is not defined then it falls back to__index__()
.Σημείωση
When converting from a string, the string must not contain whitespace around the central
+
or-
operator. For example,complex('1+2j')
is fine, butcomplex('1 + 2j')
raisesValueError
.Ο μιγαδικός τύπος περιγράφεται στο Αριμθητικοί Τύποι — int, float, complex.
Άλλαξε στην έκδοση 3.6: Επιτρέπεται η ομαδοποίηση ψηφίων με κάτω παύλες όπως στα literals του κώδικα.
Άλλαξε στην έκδοση 3.8: Επιστρέφει πίσω στη
__index__()
εάν η__complex__()
και η__float__()
δεν ορίζονται.
- delattr(object, name)¶
Αυτό είναι σχετικό της
setattr()
. Τα ορίσματα είναι ένα αντικείμενο και μια συμβολοσειρά. Η συμβολοσειρά πρέπει να είναι το όνομα ενός από τα χαρακτηριστικά του αντικειμένου. Η συνάρτηση διαγράφει το επώνυμο χαρακτηριστικό, υπό την προϋπόθεση ότι το αντικείμενο το επιτρέπει. Για παράδειγμα, τοdelattr(x, 'foobar')
είναι ισοδύναμο με τοdel x.foobar
. Το name δεν χρειάζεται να είναι αναγνωριστικό της Python (δείτεsetattr()
).
- class dict(**kwarg)
- class dict(mapping, **kwarg)
- class dict(iterable, **kwarg)
Δημιουργεί ένα νέο λεξικό. Το αντικείμενο
dict
είναι η κλάση λεξικού. Δείτε τοdict
και το Τύποι αντιστοίχισης — dict για τεκμηρίωση σχετικά με αυτή την κατηγορία.Για άλλα containers, δείτε τις ενσωματωμένες κλάσεις
list
,set
, καιtuple
, καθώς και το modulecollections
.
- dir()¶
- dir(object)
Χωρίς ορίσματα, επιστρέφει τη λίστα ονομάτων στο τρέχον τοπικό πεδίο. Με ένα όρισμα, προσπαθεί να επιστρέψει μια λίστα έγκυρων χαρακτηριστικών για αυτό το αντικείμενο.
Εάν το αντικείμενο έχει μία μέθοδο με το όνομα
__dir__()
, αυτή η μέθοδος θα καλείται και πρέπει να επιστρέψει μια λίστα από χαρακτηριστικά. Αυτό επιτρέπει τα αντικείμενα που υλοποιούν μια εξατομικευμένη συνάρτηση__getattr__()
or__getattribute__()
για την προσαρμογή του τρόπου με τον οποίο ηdir()
αναφέρει τα χαρακτηριστικά.Εάν το αντικείμενο δεν παρέχει την
__dir__()
, η συνάρτηση προσπαθεί να συλλέξει πληροφορίες από το χαρακτηριστικό__dict__
του αντικειμένου, εάν έχει οριστεί, και από το αντικείμενο του τύπου του. Η λίστα που παράγεται ως αποτέλεσμα δεν είναι απαραίτητα πλήρης και μπορεί να είναι ανακριβής όταν το αντικείμενο έχει εξατομικευμένη__getattr__()
.Ο προεπιλεγμένος μηχανισμός
dir()
συμπεριφέρεται διαφορετικά με διαφορετικούς τύπους αντικειμένων, καθώς προσπαθεί να παράγει τις πιο σχετικές και όχι τις πιο ολοκληρωμένες πληροφορίες:Εάν το αντικείμενο είναι module τύπου αντικειμένου, η λίστα περιέχει τα ονόματα των χαρακτηριστικών του module.
Εάν το αντικείμενο είναι ένας τύπος ή κλάση αντικειμένου, η λίστα περιέχει τα ονόματα των χαρακτηριστικών του, και αναδρομικά τα χαρακτηριστικά της βάσεώς του.
Εναλλακτικά, η λίστα περιέχει τα ονόματα των χαρακτηριστικών του αντικειμένου, τα ονόματα των χαρακτηριστικών της κλάσης, και αναδρομικά τα χαρακτηριστικά της κλάσης βάσεως της κλάσης.
Η παραγόμενη λίστα είναι ταξινομημένη αλφαβητικά. Για παράδειγμα:
>>> import struct >>> 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'] >>> class Shape: ... def __dir__(self): ... return ['area', 'perimeter', 'location'] >>> s = Shape() >>> dir(s) ['area', 'location', 'perimeter']
Σημείωση
Επειδή η
dir()
παρέχεται κυρίως ως ευκολία για χρήση σε μια διαδραστική γραμμή εντολών, προσπαθεί να παρέχει ένα ενδιαφέρον σύνολο ονομάτων περισσότερα από οτιδήποτε προσπαθεί να παρέχει ένα αυστηρό ή με συνέπεια, καθορισμένο σύνολο ονομάτων, και η λεπτομερής συμπεριφορά του μπορεί να αλλάξει μεταξύ των εκδόσεων. Για παράδειγμα, τα χαρακτηριστικά μετακλάσης δεν βρίσκονται στη λίστα αποτελεσμάτων όταν το όρισμα είναι μια κλάση.
- divmod(a, b)¶
Take two (non-complex) numbers as arguments and return a pair of numbers consisting of their quotient and remainder when using integer division. With mixed operand types, the rules for binary arithmetic operators apply. For integers, the result is the same as
(a // b, a % b)
. For floating point numbers the result is(q, a % b)
, where q is usuallymath.floor(a / b)
but may be 1 less than that. In any caseq * b + a % b
is very close to a, ifa % b
is non-zero it has the same sign as b, and0 <= 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')]
Ισοδύναμο με:
def enumerate(iterable, start=0): n = start for elem in iterable: yield n, elem n += 1
- eval(expression, globals=None, locals=None)¶
The arguments are a string and optional globals and locals. If provided, globals must be a dictionary. If provided, locals can be any mapping object.
Το όρισμα expression αναλύεται και αξιολογείται ως μια έκφραση της Python (από τεχνικής άποψης, μια λίστα συνθηκών) χρησιμοποιώντας τα λεξικά (dictionaries) globals και locals ως global και local namespace. Εάν το λεξικό globals υπάρχει και δεν περιέχει μια τιμή για το κλειδί
__builtins__
, μια αναφορά στο λεξικό του ενσωματωμένου modulebuiltins
εισάγεται κάτω από αυτό το κλειδί πριν αναλυθεί το expression. Με αυτόν τον τρόπο μπορείτε να ελέγξετε ποια από τα ενσωματωμένα στοιχεία είναι διαθέσιμα για τον εκτελέσιμο κώδικα, εισάγοντας το δικό σας λεξικό__builtins__
στο globals πριν διαβαστεί στηeval()
. Εάν το λεξικό locals παραλειφθεί, ορίζεται από προεπιλογή στο λεξικό globals. Εάν παραληφθούν και τα δύο λεξικά, η έκφραση εκτελείται με τα globals και locals στο περιβάλλον όπου καλείται ηeval()
. Σημείωση, το eval() δεν έχει πρόσβαση στο nested scopes (μη τοπικά) στο περιβάλλον που περικλείει.The return value is the result of the evaluated expression. Syntax errors are reported as exceptions. Example:
>>> 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 event
exec
με το αντικείμενο κώδικα ως όρισμα. Μπορεί επίσης να εμφανιστούν συμβάντα μεταγλώττισης κώδικα.
- exec(object, globals=None, locals=None, /, *, closure=None)¶
Αυτή η συνάρτηση υποστηρίζει δυναμική εκτέλεση κώδικα Python. Το object πρέπει να είναι είτε μια συμβολοσειρά (string) είτε ένα αντικείμενο κώδικα. Εάν είναι μια συμβολοσειρά, η συμβολοσειρά αναλύεται ως μια σουίτα δηλώσεων Python που στη συνέχεια εκτελείται (εκτός εάν παρουσιαστεί σφάλμα σύνταξης). [1] Εάν πρόκειται για ένα αντικείμενο κώδικα, απλά εκτελείται. Σε όλες τις περιπτώσεις, ο κώδικας που εκτελείται αναμένεται να είναι έγκυρος ως είσοδος αρχείου (δείτε την ενότητα File input στο Εγχειρίδιο Αναφοράς). Λάβετε υπόψη ότι οι εντολές
nonlocal
,yield
, καιreturn
δεν μπορούν να χρησιμοποιηθούν εκτός των ορισμών συναρτήσεων, ακόμη και στο πλαίσιο του κώδικα που διαβιβάζεται στηexec()
. Η επιστρεφόμενη τιμή είναιNone
.In all cases, if the optional parts are omitted, the code is executed in the current scope. If only globals is provided, it must be a dictionary (and not a subclass of dictionary), which will be used for both the global and the local variables. If globals and locals are given, they are used for the global and local variables, respectively. If provided, locals can be any mapping object. Remember that at the module level, globals and locals are the same dictionary. If exec gets two separate objects as globals and locals, the code will be executed as if it were embedded in a class definition.
Εάν το λεξικό globals δεν περιέχει τιμή για το κλειδί
__builtins__
, μια αναφορά στο λεξικό του ενσωματωμένου modulebuiltins
εισάγεται κάτω από αυτό το κλειδί. Με αυτόν τον τρόπο μπορεί να ελέγξετε τι ενσωματωμένα (built-ins) είναι διαθέσιμα στον εκτελέσιμο κώδικα εισάγοντας το δικό σας__builtins__
λεξικό στο globals πριν το διαβάσετε στοexec()
.Το όρισμα closure καθορίζει ένα clossure–μια πλειάδα από cellvars. Είναι έγκυρο μόνο όταν το object είναι ένα αντικείμενο κώδικα που περιέχει ελεύθερες μεταβλητές. Το μήκος της πλειάδας πρέπει να ταιριάζει ακριβώς με τον αριθμό των ελεύθερων μεταβλητών που αναφέρονται από το αντικείμενο κώδικα.
Κάνει raise ένα auditing event
exec
με το αντικείμενο κώδικα ως όρισμα. Μπορεί επίσης να εμφανιστούν συμβάντα μεταγλώττισης κώδικα.Σημείωση
Οι ενσωματωμένες συναρτήσεις
globals()
καιlocals()
επιστρέφουν το τρέχον global και local λεξικό, αντίστοιχα, που μπορεί να είναι χρήσιμο για χρήση ως δεύτερο και τρίτο όρισμα στοexec()
.Σημείωση
Το προεπιλεγμένο locals ενεργεί όπως περιγράφεται για τη συνάρτηση
locals()
παρακάτω: δεν πρέπει να επιχειρήσετε τροποποιήσεις στο προεπιλεγμένο locals λεξικό. Περνάει ένα ρητό locals λεξικό εάν θέλετε να δείτε τα αποτελέσματα του κώδικα στο locals με την επιστροφή της συνάρτησηςexec()
.Άλλαξε στην έκδοση 3.11: Προστέθηκε η παράμετρος closure.
- filter(function, iterable)¶
Δημιουργεί έναν iterator από εκείνα τα στοιχεία του iterable για τα οποία η function είναι αληθής. Το iterable μπορεί να είναι είτε μια ακολουθία, ένα container που υποστηρίζει iteration, ή ένας iterator. Εάν η function είναι
None
, η συνάρτηση ταυτότητας υποτίθεται, δηλαδή, όλα τα στοιχεία του iterable που είναι ψευδή αφαιρούνται.Λάβετε υπόψη ότι το
filter(function, iterable)
είναι ισοδύναμο με την έκφραση της γεννήτριας(item for item in iterable if function(item))
εάν η συνάρτηση δεν είναιNone
και(item for item in iterable if item)
εάν η συνάρτηση είναιNone
.Βλ.
itertools.filterfalse()
για τη συμπληρωματική συνάρτηση που επιστρέφει στοιχεία του iterable για τα οποία η function είναι ψευδής.
- class float(x=0.0)¶
Return a floating point number constructed from a number or string x.
If the argument is a string, it should contain a decimal number, optionally preceded by a sign, and optionally embedded in whitespace. The optional sign may be
'+'
or'-'
; a'+'
sign has no effect on the value produced. The argument may also be a string representing a NaN (not-a-number), or positive or negative infinity. More precisely, the input must conform to thefloatvalue
production rule in the following grammar, after leading and trailing whitespace characters are removed: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") ["+" | "-"]digitpart
floatnumber ::= number [exponent
] floatvalue ::= [sign
] (floatnumber
|infinity
|nan
)Τα πεζά/κεφαλαία δεν είναι σημαντικά, επομένως, για παράδειγμα, «inf», «Inf», «INFINITY», και «iNfINity» είναι όλες αποδεκτές ορθογραφίες για το θετικό άπειρο.
Otherwise, if the argument is an integer or a floating point number, a floating point number with the same value (within Python’s floating point precision) is returned. If the argument is outside the range of a Python float, an
OverflowError
will be raised.Για ένα γενικό αντικείμενο Python
x
,float(x)
εκχωρεί στοx.__float__()
. Εάν το__float__()
δεν έχει οριστεί, τότε επιστρέφει στο__index__()
.Εάν δεν δοθεί όρισμα, επιστρέφεται το
0.0
.Examples:
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
Ο τύπος float περιγράφεται στο Αριμθητικοί Τύποι — int, float, complex.
Άλλαξε στην έκδοση 3.6: Επιτρέπεται η ομαδοποίηση ψηφίων με κάτω παύλες όπως στα literals του κώδικα.
Άλλαξε στην έκδοση 3.7: x is now a positional-only parameter.
Άλλαξε στην έκδοση 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 δεν είναι κενή συμβολοσειρά.
- class frozenset(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.Αυτή η συνάρτηση προστίθεται στον ενσωματωμένο χώρο ονομάτων από το module
site
.
- hex(x)¶
Μετατροπή ενός ακεραίου αριθμού σε μια πεζή δεκαεξαδική συμβολοσειρά (string) με πρόθεμα το «0x». Εάν το x δεν είναι αντικείμενο Python
int
, πρέπει να ορίσει μια μέθοδο__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()
.Λεπτομέρεια υλοποίησης CPython: Αυτό είναι η διεύθυνση του αντικειμένου στην μνήμη.
Εγείρει ένα auditing event
builtins.id
με όρισμαid
.
- input()¶
- input(prompt)
Εάν υπάρχει το όρισμα prompt, γράφεται στην τυπική έξοδο χωρίς μια νέα γραμμή μετάδοσης. Στη συνέχεια, η συνάρτηση διαβάζει μια γραμμή από την είσοδο, τη μετατρέπει σε μια συμβολοσειρά (με την αφαίρεση μιας νέας γραμμής) και την επιστρέφει. Όταν διαβάζεται το EOF, γίνεται raise η
EOFError
. Παράδειγμα:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Εάν έχει φορτωθεί το module
readline
, τότε ηinput()
θα το χρησιμοποιήσει για να παρέχει περίπλοκες λειτουργίες επεξεργασίας γραμμής και ιστορικού.Κάνει raise ένα auditing event
builtins.input
με όρισμαprompt
προτού διαβάσει την είσοδοΚάνει raise ένα auditing event
builtins.input/result
με το αποτέλεσμα μετά την επιτυχή ανάγνωση των δεδομένων.
- class int(x=0)¶
- class int(x, base=10)
Return an integer object constructed from a number or string x, or return
0
if no arguments are given. If x defines__int__()
,int(x)
returnsx.__int__()
. If x defines__index__()
, it returnsx.__index__()
. If x defines__trunc__()
, it returnsx.__trunc__()
. For floating point numbers, this truncates towards zero.If x is not a number or if base is given, then x must be a string,
bytes
, orbytearray
instance representing an integer in radix base. Optionally, the string can be preceded by+
or-
(with no space in between), have leading zeros, be surrounded by whitespace, and have single underscores interspersed between digits.Μια συμβολοσειρά (string) ακέραιου αριθμού βάσης n περιέχει ψηφία, καθένα από τα οποία αντιπροσωπεύει μια τιμή από το 0 έως το n-1. Οι τιμές 0–9 μπορούν να αναπαρασταθούν με οποιοδήποτε δεκαδικό ψηφίο Unicode. Οι τιμές 10–35 μπορούν να αναπαρασταθούν με
a
ως τοz
(ήA
ως το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: x is now a positional-only parameter.
Άλλαξε στην έκδοση 3.8: Επιστρέφει πίσω στη
__index__()
αν η__int__()
δεν έχει οριστεί.Άλλαξε στην έκδοση 3.11: Η ανάθεση στη
__trunc__()
έχει καταργηθεί.Άλλαξε στην έκδοση 3.11:
int
string inputs and string representations can be limited to help avoid denial of service attacks. AValueError
is raised when the limit is exceeded while converting a string x to anint
or when converting anint
into a string would exceed the limit. See the integer string conversion length limitation documentation.
- 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. Για παράδειγμα, η ανάγνωση μπλοκ σταθερού πλάτους από ένα δυαδικό αρχείο βάσης δεδομένων μέχρι να φτάσει στο τέλος του αρχείου:from functools import partial with open('mydata.db', 'rb') as f: for block in iter(partial(f.read, 64), b''): process_block(block)
- len(s)¶
Επιστρέφει το μήκος (τον αριθμό των ειδών-περιεχομένων) ενός αντικειμένου. Το όρισμα μπορεί να είναι μια ακολουθία (όπως μια συμβολοσειρά, bytes, πλειάδα, λίστα, ή εύρος) ή μια συλλογή (όπως ένα λεξικό, ένα σετ, ή ένα παγωμένο σετ).
Λεπτομέρεια υλοποίησης CPython: Το
len
κάνει raise μιαOverflowError
σε μήκη τα οποία είναι μεγαλύτερα απόsys.maxsize
, όπωςrange(2 ** 100)
.
- class list
- class list(iterable)
Αντί να είναι συνάρτηση, το
list
είναι στην πραγματικότητα ένας μεταβλητός τύπος ακολουθίας, όπως τεκμηριώνεται στα Λίστες και Τύποι Ακολουθίας (Sequence) — list, tuple, range.
- locals()¶
Ενημέρωση και επιστροφή ενός λεξικού που αντιπροσωπεύει τον τρέχοντα πίνακα τοπικών συμβόλων. Οι ελεύθερες μεταβλητές επιστρέφονται από
locals()
όταν καλείται σε μπλοκ συναρτήσεων, αλλά όχι σε μπλοκ κλάσεων. Σημειώστε ότι σε επίπεδο module, οιlocals()
καιglobals()
είναι το ίδιο λεξικό.Σημείωση
Τα περιεχόμενα αυτού του λεξικού δεν πρέπει να τροποποιηθούν∙ οι αλλαγές ενδέχεται να μην επηρεάσουν τις τιμές των τοπικών και ελεύθερων μεταβλητών που χρησιμοποιούνται από τον διερμηνέα.
- map(function, iterable, *iterables)¶
Επιστρέφει έναν iterator που εφαρμόζει function σε κάθε στοιχείο του iterable, δίνοντας τα αποτελέσματα. Εάν περάσουν επιπλέον ορίσματα iterables, η function πρέπει να λάβει τόσα ορίσματα και να εφαρμόζεται στα στοιχεία από όλα τα iterables παράλληλα. Με πολλαπλούς iterables, ο iterator σταματά όταν εξαντληθεί ο συντομότερος iterable. Για περιπτώσεις όπου οι είσοδοι συνάρτησης είναι ήδη διατεταγμένες σε πλειάδες ορισμάτων, βλέπε
itertools.starmap()
.
- 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
.
- class memoryview(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
.
- class object¶
Return a new featureless object.
object
is a base for all classes. It has methods that are common to all instances of Python classes. This function does not accept any arguments.
- oct(x)¶
Μετατρέπει έναν ακέραιο αριθμό σε μια οκταδική συμβολοσειρά με πρόθεμα «0o». Το αποτέλεσμα είναι μια έγκυρη έκφραση Python. Εάν το x δεν είναι ένα αντικείμενο Python
int
, πρέπει να ορίσει μια μέθοδο__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 is an optional string that specifies the mode in which the file is opened. It defaults to
'r'
which means open for reading in text mode. Other common values are'w'
for writing (truncating the file if it already exists),'x'
for exclusive creation, and'a'
for appending (which on some Unix systems, means that all writes append to the end of the file regardless of the current seek position). In text mode, if encoding is not specified the encoding used is platform-dependent:locale.getencoding()
is called to get the current locale encoding. (For reading and writing raw bytes use binary mode and leave encoding unspecified.) The available modes are:Χαρακτήρας
Έννοια
'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 και επομένως είναι ανεξάρτητη από την πλατφόρμα.
To buffering είναι ένας προαιρετικός ακέραιος που χρησιμοποιείται για το ορισμό της πολιτικής αποθήκευσης στην προσωρινή μνήμη. Περνάει το 0 για να απενεργοποιήσετε την προσωρινή μνήμη (επιτρέπεται μόνο σε δυαδική λειτουργία), το 1 για να επιλέξετε προσωρινή αποθήκευση γραμμής (μπορεί να χρησιμοποιηθεί μόνο όταν γράφετε σε λειτουργία κειμένου) και έναν ακέραιο > 1 για να υποδείξει το μέγεθος σε byte μιας προσωρινής μνήμης τμημάτων σταθερού μεγέθους. Λάβετε υπόψη ότι ο καθορισμός ενός μεγέθους buffer με αυτόν τον τρόπο ισχύει για I/O με δυαδική προσωρινή μνήμη, αλλά το
TextIOWrapper
(δηλαδή, τα αρχεία που ανοίγουν μεmode='r+'
) θα έχουνε άλλη αποθήκευση. Για να απενεργοποιήσετε την προσωρινή αποθήκευση στοTextIOWrapper
, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε μιαwrite_through
σημαία γιαio.TextIOWrapper.reconfigure()
. Όταν δεν δίνεται όρισμα buffering, η προεπιλεγμένη πολιτική προσωρινής αποθήκευσης λειτουργεί ως εξής:Τα δυαδικά αρχεία αποθηκεύονται στην προσωρινή μνήμη σε κομμάτια σταθερού μεγέθους∙ το μέγεθος του buffer επιλέγεται χρησιμοποιώντας μια ευρετική που προσπαθεί να προσδιορίσει το «μέγεθος του μπλοκ» της υποκείμενης συσκευής και επανέρχεται σε
io.DEFAULT_BUFFER_SIZE
. Σε πολλά συστήματα, η προσωρινή μνήμη θα έχει συνήθως μήκος 4096 ή 8192 bytes.«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()
για να ανοίξει ένα αρχείο σε σχέση με έναν δεδομένο κατάλογο:>>> import os >>> dir_fd = os.open('somedir', os.O_RDONLY) >>> def opener(path, flags): ... return os.open(path, flags, dir_fd=dir_fd) ... >>> with open('spamspam.txt', 'w', opener=opener) as f: ... 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
.Raises an auditing event
open
with argumentsfile
,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, modulo mod (υπολογίζεται πιο αποτελεσματικά από το
pow(base, exp) % mod
). Η φόρμα δύο ορισμάτωνpow(base, exp)
ισοδυναμεί με τη χρήση του τελεστή δύναμης:base**exp
.The arguments must have numeric types. With mixed operand types, the coercion rules for binary arithmetic operators apply. For
int
operands, the result has the same type as the operands (after coercion) unless the second argument is negative; in that case, all arguments are converted to float and a float result is delivered. For example,pow(10, 2)
returns100
, butpow(10, -2)
returns0.01
. For a negative base of typeint
orfloat
and a non-integral exponent, a complex result is delivered. For example,pow(-9, 0.5)
returns a value close to3j
.Για τους τελεστές της
int
base και exp, εάν υπάρχει mod, το mod πρέπει επίσης να είναι ακεραίου τύπου και το mod πρέπει να είναι μη μηδενικό. Εάν υπάρχει mod και το exp είναι αρνητικό, το base πρέπει να είναι σχετικά πρώτο στο mod. Σε αυτήν την περίπτωση , επιστρέφεται τοpow(inv_base, -exp, mod)
, όπου το inv_base είναι αντίστροφο του base modulo mod.Ακολουθεί ένα παράδειγμα υπολογισμού ενός αντίστροφου για το
38
modulo97
:>>> pow(38, -1, mod=97) 23 >>> 23 * 38 % 97 == 1 True
Άλλαξε στην έκδοση 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: Προστέθηκε το όρισμα keyword flush.
- class property(fget=None, fset=None, fdel=None, doc=None)¶
Επιστρέφει ένα χαρακτηριστικό ιδιότητας.
Το fget είναι μια συνάρτηση για τη λήψη μιας τιμής χαρακτηριστικού. Το fset είναι μια συνάρτηση για τον ορισμό μιας τιμής χαρακτηριστικού. Το fdel είναι μια συνάρτηση για τη διαγραφή μιας τιμής χαρακτηριστικού. Και το doc δημιουργεί μια συμβολοσειρά εγγράφων για το χαρακτηριστικό.
Μια τυπική χρήση είναι ο ορισμός ενός διαχειριζόμενου χαρακτηριστικού
x
:class C: def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.")
Εάν το c είναι ένα instance του C, το
c.x
θα καλέσει τον λήπτη, τοc.x = value` θα καλέσει τον ρυθμιστή, και το ``del c.x
τον διαγραφέα.Εάν δίνεται, το doc θα είναι το docstring του χαρακτηριστικού ιδιότητας. Διαφορετικά , η ιδιότητα θα αντιγράψει τη συμβολοσειρά του fget (εάν υπάρχει). Αυτό καθιστά δυνατή τη δημιουργία ιδιοτήτων μόνο για ανάγνωση, εύκολα χρησιμοποιώντας τη
property()
ως decorator:class Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Get the current voltage.""" return self._voltage
Ο decorator
@property
μετατρέπει την μέθοδοvoltage()
σε «getter» για ένα χαρακτηριστικό μόνο για ανάγνωση με το ίδιο όνομα, και ορίζει τη συμβολοσειρά εγγράφων για voltage σε «Get the current voltage.»- @getter¶
- @setter¶
- @deleter¶
Ένα αντικείμενο ιδιότητας έχει μεθόδους
getter
,setter
, καιdeleter
που μπορούν να χρησιμοποιηθούν ως διακοσμητές που δημιουργούν ένα αντίγραφο της ιδιότητας με την αντίστοιχη συνάρτηση accessor που έχει οριστεί στον decorator. Αυτό εξηγείται καλύτερα με ένα παράδειγμα:class C: def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
Αυτός ο κώδικας είναι ακριβώς ισοδύναμος με το πρώτο παράδειγμα. Φροντίστε να δώσετε στις πρόσθετες συναρτήσεις το ίδιο όνομα με την αρχική ιδιότητα (
x
σε αυτήν την περίπτωση.)Το επιστρεφόμενο αντικείμενο ιδιότητας έχει επίσης τα χαρακτηριστικά
fget
,fset
, καιfdel
που αντιστοιχούν στα ορίσματα του κατασκευαστή.
Άλλαξε στην έκδοση 3.5: Τα docstrings των αντικειμένων ιδιότητας είναι πλέον εγγράψιμες.
- class range(stop)
- class range(start, stop, step=1)
Αντί να είναι συνάρτηση, το
range
είναι στην πραγματικότητα ένας αμετάβλητος τύπος ακολουθίας, όπως τεκμηριώνεται στα Εύρη (Ranges) και Τύποι Ακολουθίας (Sequence) — list, tuple, range.
- repr(object)¶
Επιστρέφει μια συμβολοσειρά που περιέχει μια εκτυπώσιμη αναπαράσταση ενός αντικειμένου. Για πολλούς τύπους, αυτή η συνάρτηση κάνει μια προσπάθεια να επιστρέψει μια συμβολοσειρά που θα απέδιδε ένα αντικείμενο με την ίδια τιμή όταν μεταβιβαζόταν στο
eval()
∙ διαφορετικά, η αναπαράσταση είναι μια συμβολοσειρά που περικλείεται σε αγκύλες που περιέχει το όνομα του τύπου του αντικειμένου μαζί με πρόσθετες πληροφορίες που συχνά περιλαμβάνουν το όνομα και τη διεύθυνση του αντικειμένου. Μια κλάση μπορεί να ελέγξει τι επιστρέφει αυτή η συνάρτηση για τις οντότητες της ορίζοντας μια μέθοδο__repr__()
. Εάν ηsys.displayhook()
δεν είναι προσβάσιμη, αυτή η συνάρτηση θα κάνει raise τοRuntimeError
.Αυτή η κλάση έχει μια προσαρμοσμένη αναπαράσταση που μπορεί να αξιολογηθεί:
class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f"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.Για ένα γενικό αντικείμενο Python
number
,round
εκχωρεί στοnumber.__round__
.Σημείωση
Η συμπεριφορά του
round()
για floats μπορεί να είναι εκπληκτική: για παράδειγμα, τοround(2.675, 2)
δίνει2.67
αντί για το αναμενόμενο2.68
. Αυτό δεν είναι bug: είναι αποτέλεσμα του γεγονότος ότι τα περισσότερα δεκαδικά κλάσματα δεν μπορούν να αναπαρασταθούν ακριβώς ως float. Δείτε το Floating Point Arithmetic: Issues and Limitations για περισσότερες πληροφορίες.
- class set
- class set(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()
.
- class slice(stop)¶
- class slice(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.
- 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 HOW TO.
- @staticmethod¶
Μετατροπή μιας μεθόδου σε στατική μέθοδο.
Μια στατική μέθοδος δεν λαμβάνει ένα σιωπηρό πρώτο όρισμα. Για να δηλώσετε μια στατική μέθοδο, χρησιμοποιήστε αυτό το ιδίωμα:
class C: @staticmethod def f(arg1, arg2, argN): ...
Η φόρμα
@staticmethod
είναι μια συνάρτηση decorator – δείτε Function definitions για λεπτομέρειες.A static method can be called either on the class (such as
C.f()
) or on an instance (such asC().f()
). Moreover, they can be called as regular functions (such asf()
).Οι στατικές μέθοδοι στην Python είναι παρόμοιες με αυτές που βρίσκονται στην Java ή στη C++. Επίσης, ανατρέξτε στη
classmethod()
για μια παραλλαγή που είναι χρήσιμη για τη δημιουργία εναλλακτικών κατασκευαστών κλάσεων.Όπως όλοι οι διακοσμητές, είναι επίσης δυνατό να καλέσετε την
staticmethod
ως κανονική συνάρτηση και να κάνετε κάτι με το αποτέλεσμά της. Αυτό είναι απαραίτητο σε ορισμένες περιπτώσεις όπου χρειάζεστε μια αναφορά σε μια συνάρτηση από ένα σώμα κλάσης και θέλετε να αποφύγετε την αυτόματη μετατροπή σε instance μέθοδο. Για αυτές τις περιπτώσεις, χρησιμοποιήστε αυτό το ιδίωμα:def regular_function(): ... class C: method = staticmethod(regular_function)
Για περισσότερες πληροφορίες σχετικά με τις στατικές μεθόδους, δείτε το The standard type hierarchy.
Άλλαξε στην έκδοση 3.10: Static methods now inherit the method attributes (
__module__
,__name__
,__qualname__
,__doc__
and__annotations__
), have a new__wrapped__
attribute, and are now callable as regular functions.
- class str(object='')
- class str(object=b'', encoding='utf-8', errors='strict')
Επιστρέφει μια έκδοση
str
του object. Δείτεstr()
για λεπτομέρειες.Το
str
είναι η ενσωματωμένη συμβολοσειρά class. Για γενικές πληροφορίες σχετικά με τις συμβολοσειρές, ανατρέξτε Τύπος Ακολουθίας (Sequence) Κειμένου — str.
- sum(iterable, /, start=0)¶
Αθροίζει το start και τα στοιχεία ενός iterable από αριστερά προς δεξιά και επιστρέφει το σύνολο. Τα στοιχεία του iterable είναι συνήθως αριθμοί και η τιμή έναρξης δεν επιτρέπεται να είναι συμβολοσειρά.
For some use cases, there are good alternatives to
sum()
. The preferred, fast way to concatenate a sequence of strings is by calling''.join(sequence)
. To add floating point values with extended precision, seemath.fsum()
. To concatenate a series of iterables, consider usingitertools.chain()
.Άλλαξε στην έκδοση 3.8: Η παράμετρος start μπορεί να καθοριστεί ως όρισμα keyword.
- class super¶
- class super(type, object_or_type=None)
Επιστρέφει ένα αντικείμενο διακομιστή μεσολάβησης που εκχωρεί κλήσεις μεθόδου σε μια γονική ή αδερφή κλάση type. Αυτό είναι χρήσιμο για την πρόσβαση σε μεταβιβασμένες μεθόδους που έχουν παρακαμφθεί σε μια κλάση.
Το object_or_type καθορίζει το method resolution order που θα αναζητηθεί. Η αναζήτηση ξεκινά από την κλάση αμέσως μετά τον type.
For example, if
__mro__
of object_or_type isD -> B -> C -> A -> object
and the value of type isB
, thensuper()
searchesC -> A -> object
.The
__mro__
attribute of the object_or_type lists the method resolution search order used by bothgetattr()
andsuper()
. The attribute is dynamic and can change whenever the inheritance hierarchy is updated.Εάν το δεύτερο όρισμα παραλειφθεί, το υπεραντικείμενο που επιστράφηκε δεν είναι δεσμευμένο. Εάν το δεύτερο όρισμα είναι αντικείμενο,
isinstance(obj, type)
πρέπει να είναι αληθές. Εάν το δεύτερο όρισμα είναι ένας τύπος, τοissubclass(type2, type)
πρέπει να είναι αληθές (αυτό είναι χρήσιμο για μεθόδους κλάσης).Υπάρχουν δύο τυπικές περιπτώσεις χρήσης για το super. Σε μια ιεραρχία κλάσεων με ενιαία κληρονομικότητα, το super μπορεί να χρησιμοποιηθεί για να αναφέρεται σε γονικές κλάσεις χωρίς να τις ονομάζει ρητά, καθιστώντας έτσι τον κώδικα πιο διατηρήσιμο. Αυτή η χρήση είναι πολύ παράλληλη με τη χρήση του super σε άλλες γλώσσες προγραμματισμού.
Η δεύτερη περίπτωση χρήσης είναι η υποστήριξη πολλαπλής κληρονομικότητας συνεργασίας σε ένα δυναμικό περιβάλλον εκτέλεσης. Αυτή η περίπτωση χρήσης είναι μοναδική για την Python και δεν βρίσκεται σε στατικά μεταγλωττισμένες γλώσσες ή γλώσσες που υποστηρίζουν μόνο μεμονωμένη κληρονομικότητα. Αυτό καθιστά δυνατή την υλοποίηση «διαγραμμάτων διαμαντιών» όπου πολλές βασικές κλάσεις υλοποιούν την ίδια μέθοδο. Ο καλός σχεδιασμός υπαγορεύει ότι τέτοιες υλοποιήσεις έχουν την ίδια υπογραφή κλήσης σε κάθε περίπτωση (επειδή η σειρά των κλήσεων καθορίζεται κατά τον χρόνο εκτέλεσης, επειδή αυτή η σειρά προσαρμόζεται στις αλλαγές στην ιεραρχία κλάσεων και επειδή αυτή η διάταξη μπορεί να περιλαμβάνει αδερφικές κλάσεις πριν από τον χρόνο εκτέλεσης).
Και για τις δύο περιπτώσεις χρήσης, μια τυπική κλήση υπερκλάσης μοιάζει με αυτό:
class C(B): def method(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().
- class tuple
- class tuple(iterable)
Αντί να είναι συνάρτηση, το
tuple
είναι στην πραγματικότητα ένα αμετάβλητος τύπος ακολουθίας, όπως τεκμηριώνεται στα Πλειάδες (Tuples) και Τύποι Ακολουθίας (Sequence) — list, tuple, range.
- class type(object)¶
- class type(name, bases, dict, **kwds)
With one argument, return the type of an object. The return value is a type object and generally the same object as returned by
object.__class__
.Η ενσωματωμένη συνάρτηση
isinstance()
συνίσταται για τη δοκιμή του τύπου ενός αντικειμένου, επειδή λαμβάνει υπόψη τις υποκλάσεις.With three arguments, return a new type object. This is essentially a dynamic form of the
class
statement. The name string is the class name and becomes the__name__
attribute. The bases tuple contains the base classes and becomes the__bases__
attribute; if empty,object
, the ultimate base of all classes, is added. The dict dictionary contains attribute and method definitions for the class body; it may be copied or wrapped before becoming the__dict__
attribute. The following two statements create identicaltype
objects:>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))
See also Τύποι Αντικειμένων.
Τα ορίσματα λέξεων-κλειδιών που παρέχονται στη φόρμα τριών ορισμάτων μεταβιβάζονται στον κατάλληλο μηχανισμό μετακλάσης (συνήθως
__init_subclass__()
) με τον ίδιο τρόπο που θα έκαναν οι λέξεις-κλειδιά στον ορισμό μιας κλάσης (εκτός από το metaclass).Δείτε επίσης Customizing class creation.
Άλλαξε στην έκδοση 3.6: Subclasses of
type
which don’t overridetype.__new__
may no longer use the one-argument form to get the type of an object.
- vars()¶
- vars(object)
Return the
__dict__
attribute for a module, class, instance, or any other object with a__dict__
attribute.Objects such as modules and instances have an updateable
__dict__
attribute; however, other objects may have write restrictions on their__dict__
attributes (for example, classes use atypes.MappingProxyType
to prevent direct dictionary updates).Χωρίς ένα όρισμα, το
vars()
λειτουργεί όπωςlocals()
. Σημειώστε, ότι το λεξικό των τοπικών είναι χρήσιμο μόνο για ανάγνωση, καθώς οι ενημερώσεις στο λεξικό των τοπικών αγνοούνται.Μια εξαίρεση
TypeError
γίνεται raise εάν ένα αντικείμενο έχει καθοριστεί αλλά δεν έχει ένα χαρακτηριστικό__dict__
(για παράδειγμα, εάν η κλάση του ορίζει το__slots__
χαρακτηριστικό).
- zip(*iterables, strict=False)¶
Επανάληψη σε πολλούς iterables παράλληλα, δημιουργώντας πλειάδες με ένα αντικείμενο από το καθένα.
Παράδειγμα:
>>> for item in zip([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 εξαντληθεί πριν από τα άλλα:>>> for item in zip(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) and y == 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()
.Η συνάρτηση εισάγει το module name, χρησιμοποιώντας πιθανώς τα δεδομένα globals και locals για να καθορίσει τον τρόπο ερμηνείας του ονόματος σε ένα πλαίσιο πακέτου. Η fromlist δίνει τα ονόματα των αντικειμένων ή των υπομονάδων που θα πρέπει να εισαχθούν από το module που δίνεται από το name. Η τυπική υλοποίηση δεν χρησιμοποιεί καθόλου το όρισμα locals και χρησιμοποιεί τα globals της μόνο για να προσδιορίσει το πλαίσιο του πακέτου της δήλωσης
import
.Το level καθορίζει εάν θα χρησιμοποιηθούν απόλυτες ή σχετικές εισαγωγές. Το
0
(η προεπιλογή) σημαίνει μόνο απόλυτες εισαγωγές. Οι θετικές τιμές για το level υποδεικνύουν τον αριθμό των γονικών καταλόγων προς αναζήτηση σε σχέση με τον κατάλογο του module που καλεί την__import__()
(δείτε το PEP 328 για λεπτομέρειες).Όταν η μεταβλητή name είναι της μορφής
package.module
, κανονικά, επιστρέφεται το πακέτο ανωτάτου επιπέδου (το όνομα μέχρι την πρώτη κουκκίδα), όχι το module που ονομάζεται name. Ωστόσο, όταν δίνεται ένα μη κενό όρισμα fromlist, επιστρέφεται το module με το όνομα name.Για παράδειγμα, η δήλωση
import spam
καταλήγει σε bytecode που μοιάζει με τον ακόλουθο κώδικα:spam = __import__('spam', globals(), locals(), [], 0)
Η δήλωση
import spam.ham
καταλήγει σε αυτήν την κλήση:spam = __import__('spam.ham', globals(), locals(), [], 0)
Σημειώστε πως το
__import__()
επιστρέφει το ανωτάτου επιπέδου module εδώ, επειδή αυτό είναι το αντικείμενο που συνδέεται με ένα όνομα με τη δήλωσηimport
.Από την άλλη πλευρά, η δήλωση
from spam.ham import eggs, sausage as saus
καταλήγει σε_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausage
Εδώ, το module
spam.ham
επιστρέφεται από τη__import__()
. Από αυτό το αντικείμενο, τα ονόματα προς εισαγωγή ανακτώνται και εκχωρούνται στα αντίστοιχα ονόματά τους.Εάν θέλετε απλώς να εισάγετε ένα module (ενδεχομένως μέσα σε ένα πακέτο) με το όνομα, χρησιμοποιήστε το
importlib.import_module()
.Άλλαξε στην έκδοση 3.3: Αρνητικές τιμές για το level δεν υποστηρίζονται πλέον (το οποίο επίσης αλλάζει την προεπιλεγμένη τιμή σε 0).
Άλλαξε στην έκδοση 3.9: Όταν χρησιμοποιούνται επιλογές της γραμμής εντολών
-E
ή-I
, τότε η μεταβλητή περιβάλλοντοςPYTHONCASEOK
δεν λαμβάνεται υπόψιν.
Υποσημειώσεις