Inbyggda funktioner¶
Python-tolken har ett antal inbyggda funktioner och typer som alltid är tillgängliga. De listas här i alfabetisk ordning.
Inbyggda funktioner |
|||
---|---|---|---|
E
uppräkna() F
flöde() G
globaler() H
harattr() I
inmatning() |
- abs(number, /)¶
Returnerar det absoluta värdet av ett tal. Argumentet kan vara ett heltal, ett flyttal eller ett objekt som implementerar
__abs__()
. Om argumentet är ett komplext tal returneras dess magnitud.
- aiter(async_iterable, /)¶
Returnerar en asynkron iterator för en asynkron iterabel. Motsvarar anrop av
x.__aiter__()
.Notera: Till skillnad från
iter()
haraiter()
ingen variant med 2 argument.Tillagd i version 3.10.
- all(iterable, /)¶
Returnerar
True
om alla element i iterabeln är sanna (eller om iterabeln är tom). Likvärdig med:def all(iterabel): för element i iterabel: if inte element: returnera False returnera sant
- awaitable anext(async_iterator, /)¶
- awaitable anext(async_iterator, default, /)
När den är väntad returneras nästa objekt från den angivna asynchronous iterator, eller standard om den är angiven och iteratorn är uttömd.
Detta är den asynkrona varianten av
next()
-byggstenen och fungerar på samma sätt.Detta anropar
__anext__()
-metoden för async_iterator och returnerar en awaitable. Awaiting detta returnerar nästa värde i iteratorn. Om default anges returneras det om iteratorn är uttömd, annars uppstårStopAsyncIteration
.Tillagd i version 3.10.
- any(iterable, /)¶
Returnerar
True
om något element i iterabeln är sant. Om iterabeln är tom returnerasFalse
. Likvärdig med:def any(iterable): för element i iterabel: if element: returnera True returnera Falskt
- ascii(object, /)¶
Som
repr()
, returnera en sträng som innehåller en utskrivbar representation av ett objekt, men escape icke-ASCII-tecken i strängen som returneras avrepr()
med hjälp av\x
,\u
ellerU\
escapes. Detta genererar en sträng som liknar den som returneras avrepr()
i Python 2.
- bin(integer, /)¶
Konvertera ett heltal till en binär sträng med prefixet ”0b”. Resultatet är ett giltigt Python-uttryck. Om integer inte är ett Python
int
-objekt måste det definiera en__index__()
-metod som returnerar ett heltal. Några exempel:>>> bin(3) '0b11' >>> bin(-10) '-0b1010'
Om prefixet ”0b” önskas eller inte, kan du använda något av följande sätt.
>>> format(14, '#b'), format(14, 'b') ('0b1110', '1110') >>> f'{14:#b}', f'{14:b}' ('0b1110', '1110')
Se även
format()
för mer information.
- class bool(object=False, /)¶
Returnerar ett booleskt värde, dvs. antingen
True
ellerFalse
. Argumentet konverteras med hjälp av standardproceduren sanningsprövning. Om argumentet är falskt eller utelämnat returnerasFalse
, annars returnerasTrue
. Klassenbool
är en underklass tillint
(se Numeriska typer — int, float, complex). Den kan inte delas upp i ytterligare underklasser. Dess enda instanser ärFalse
ochTrue
(se Booleansk typ - bool).Ändrad i version 3.7: Parametern är nu endast positionsbestämd.
- breakpoint(*args, **kws)¶
Den här funktionen släpper in dig i felsökaren på anropsplatsen. Specifikt anropar den
sys.breakpointhook()
och skickarargs
ochkws
rakt igenom. Som standard anroparsys.breakpointhook()
pdb.set_trace()
och förväntar sig inga argument. I det här fallet är det en ren bekvämlighetsfunktion så att du inte uttryckligen behöver importerapdb
eller skriva så mycket kod för att komma in i felsökaren. Mensys.breakpointhook()
kan sättas till någon annan funktion ochbreakpoint()
kommer automatiskt att anropa den, så att du kan hoppa in i den debugger du väljer. Omsys.breakpointhook()
inte är tillgänglig kommer denna funktion att ge upphov tillRuntimeError
.Som standard kan beteendet hos
breakpoint()
ändras med miljövariabelnPYTHONBREAKPOINT
. Sesys.breakpointhook()
för användningsdetaljer.Observera att detta inte är garanterat om
sys.breakpointhook()
har ersatts.Utlöser en auditing event
builtins.breakpoint
med argumentetbreakpointhook
.Tillagd i version 3.7.
- class bytearray(source=b'')
- class bytearray(source, encoding, errors='strict')
Returnerar en ny array av bytes. Klassen
bytearray
är en föränderlig sekvens av heltal i intervallet 0 <= x < 256. Den har de flesta av de vanliga metoderna för muterbara sekvenser, beskrivna i Mutabla sekvenstyper, samt de flesta metoder som typenbytes
har, se Bytes- och bytearrayoperationer.Den valfria parametern source kan användas för att initiera matrisen på några olika sätt:
Om det är en sträng måste du också ange parametrarna encoding (och eventuellt errors);
bytearray()
konverterar sedan strängen till bytes medstr.encode()
.Om det är ett integer kommer arrayen att ha den storleken och initialiseras med null-bytes.
Om det är ett objekt som överensstämmer med buffer interface, kommer en skrivskyddad buffert av objektet att användas för att initiera bytesmatrisen.
Om det är en iterabel måste det vara en iterabel av heltal i intervallet
0 <= x < 256
, som används som det ursprungliga innehållet i matrisen.
Utan argument skapas en array av storleken 0.
Se även Binära sekvenstyper — bytes, bytearray, memoryview och Bytearray-objekt.
- class bytes(source=b'')
- class bytes(source, encoding, errors='strict')
Returnerar ett nytt ”bytes”-objekt som är en oföränderlig sekvens av heltal i intervallet
0 <= x < 256
.bytes
är en oföränderlig version avbytearray
– den har samma icke-muterande metoder och samma indexerings- och skivningsbeteende.Följaktligen tolkas konstruktörsargument som för
bytearray()
.Bytesobjekt kan också skapas med literaler, se Sträng- och Bytes-litteraler.
Se även Binära sekvenstyper — bytes, bytearray, memoryview, Bytes-objekt och Bytes- och bytearrayoperationer.
- callable(object, /)¶
Returnerar
True
om argumentet object verkar anropbart,False
om inte. Om detta returnerarTrue
är det fortfarande möjligt att ett anrop misslyckas, men om det ärFalse
kommer anropet av object aldrig att lyckas. Observera att klasser är anropsbara (anrop av en klass returnerar en ny instans); instanser är anropsbara om deras klass har en__call__()
-metod.Tillagd i version 3.2: Denna funktion togs först bort i Python 3.0 och återinfördes sedan i Python 3.2.
- chr(codepoint, /)¶
Returnerar strängen som representerar ett tecken med den angivna Unicode-kodpunkten. Till exempel, vid
chr(97)
, returneras strängen'a'
, medan vidchr(8364)
returneras strängen'€'
. Detta är motsatsen tillord()
.Det giltiga intervallet för argumentet är från 0 till 1 114 111 (0x10FFFF i bas 16).
ValueError
kommer att genereras om det ligger utanför detta intervall.
- @classmethod¶
Omvandla en metod till en klassmetod.
En klassmetod tar emot klassen som ett implicit första argument, precis som en instansmetod tar emot instansen. För att deklarera en klassmetod använder du detta idiom:
klass C: @klassmetod def f(cls, arg1, arg2): ...
Formuläret
@classmethod
är en funktion decorator – se Definitioner av funktioner för detaljer.En klassmetod kan anropas antingen på klassen (t.ex.
C.f()
) eller på en instans (t.ex.C().f()
). Instansen ignoreras med undantag för dess klass. Om en klassmetod anropas för en härledd klass, skickas det härledda klassobjektet som det underförstådda första argumentet.Klassmetoder är annorlunda än statiska metoder i C++ eller Java. Om du vill ha sådana, se
staticmethod()
i detta avsnitt. För mer information om klassmetoder, se Standardtypens hierarki.Ändrad i version 3.9: Klassmetoder kan nu omsluta andra deskriptorer såsom
property()
.Ändrad i version 3.10: Klassmetoder ärver nu metodattributen (
__module__
,__name__
,__qualname__
,__doc__
och__annotations__
) och har ett nytt attribut__wrapped__
.Deprecated since version 3.11, removed in version 3.13: Klassmetoder kan inte längre omsluta andra deskriptorer såsom
property()
.
- compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)¶
Kompilera källan till ett kod- eller AST-objekt. Kodobjekt kan exekveras med
exec()
ellereval()
. source kan antingen vara en normal sträng, en byte-sträng eller ett AST-objekt. Se dokumentationen för modulenast
för information om hur du arbetar med AST-objekt.Argumentet filnamn ska ange den fil som koden lästes från; skicka något igenkännbart värde om den inte lästes från en fil (
'<string>'
används ofta).Argumentet mode anger vilken typ av kod som ska kompileras; det kan vara
'exec'
om källan består av en sekvens av satser,'eval'
om den består av ett enda uttryck, eller'single'
om den består av en enda interaktiv sats (i det senare fallet skrivs satser som utvärderas till något annat änNone
ut).De valfria argumenten flags och dont_inherit styr vilka compiler options som ska aktiveras och vilka future features som ska tillåtas. Om ingen av dessa är närvarande (eller om båda är noll) kompileras koden med samma flaggor som påverkar koden som anropar
compile()
. Om argumentet flags anges och dont_inherit inte anges (eller är noll) används de kompilatoralternativ och framtida uttalanden som anges i argumentet flags utöver de som ändå skulle ha använts. Om dont_inherit är ett heltal som inte är noll så är flags-argumentet det - flaggorna (framtida funktioner och kompilatoralternativ) i den omgivande koden ignoreras.Kompilatoralternativ och framtidssatser specificeras av bitar som kan kombineras bitvis för att specificera flera alternativ. Bitfältet som krävs för att specificera en given framtida funktion kan hittas som attributet
compiler_flag
på_Feature
instansen i__future__
modulen. Compiler flags kan hittas iast
modulen, medPyCF_
prefix.Argumentet optimize anger kompilatorns optimeringsnivå; standardvärdet
-1
väljer tolkens optimeringsnivå som anges i-O
-alternativen. Explicita nivåer är0
(ingen optimering;__debug__
är sant),1
(asserts tas bort,__debug__
är falskt) eller2
(docstrings tas också bort).Denna funktion ger upphov till
SyntaxError
om den kompilerade källan är ogiltig, ochValueError
om källan innehåller null bytes.Om du vill analysera Python-kod till dess AST-representation, se
ast.parse()
.Utlöser en auditing-händelse
compile
med argumentensource
ochfilename
. Denna händelse kan också utlösas av implicit kompilering.Anteckning
När en sträng med flerradig kod kompileras i läget
'single'
eller'eval'
måste inmatningen avslutas med minst ett tecken för ny rad. Detta för att underlätta upptäckten av ofullständiga och fullständiga satser i modulencode
.Varning
Det är möjligt att krascha Python-tolken med en tillräckligt stor/komplex sträng när den kompileras till ett AST-objekt på grund av begränsningar i stackdjupet i Pythons AST-kompilator.
Ändrad i version 3.2: Tillåtet att använda Windows och Mac newlines. Dessutom behöver inmatning i
'exec'
-läge inte längre avslutas med en ny rad. Parametern optimize har lagts till.Ändrad i version 3.5: Tidigare skapades
TypeError
när null bytes påträffades i source.Tillagd i version 3.8:
ast.PyCF_ALLOW_TOP_LEVEL_AWAIT
kan nu skickas i flaggor för att aktivera stöd för toppnivåawait
,async for
ochasync with
.
- class complex(number=0, /)¶
- class complex(string, /)
- class complex(real=0, imag=0)
Konvertera en enskild sträng eller ett tal till ett komplext tal, eller skapa ett komplext tal från reella och imaginära delar.
Exempel:
>>> complex('+1.23') (1.23+0j) >>> complex('-4.5j') -4.5j >>> complex('-1.23+4.5j') (-1.23+4.5j) >>> complex('\t( -1.23+4.5J )\n') (-1.23+4.5j) >>> complex('-Infinity+NaNj') (-inf+nanj) >>> complex(1.23) (1.23+0j) >>> complex(imag=-4.5) -4.5j >>> complex(-1.23, 4.5) (-1.23+4.5j)
Om argumentet är en sträng måste den innehålla antingen en reell del (i samma format som för
float()
) eller en imaginär del (i samma format men med suffixet'j'
eller'J'
), eller både en reell del och en imaginär del (tecknet för den imaginära delen är obligatoriskt i detta fall). Strängen kan eventuellt omges av blanksteg och de runda parenteserna'('
och')'
, som ignoreras. Strängen får inte innehålla blanksteg mellan'+'
,'-'
, suffixet'j'
eller'J'
och decimaltalet. Till exempel,komplex('1+2j')
är bra, menkomplex('1 + 2j')
ger upphov tillValueError
. Mer exakt måste indata överensstämma med produktionsregelncomplexvalue
i följande grammatik, efter att parenteser och inledande och avslutande blankstegstecken har tagits bort:complexvalue:
floatvalue
|floatvalue
("j" | "J") |floatvalue
sign
absfloatvalue
("j" | "J")Om argumentet är ett tal fungerar konstruktorn som en numerisk konvertering som
int
ochfloat
. För ett allmänt Python-objektx
delegerarcomplex(x)
tillx.__complex__()
. Om__complex__()
inte är definierad faller den tillbaka till__float__()
. Om__float__()
inte är definierat faller det tillbaka till__index__()
.Om två argument anges eller om nyckelordsargument används kan varje argument vara vilken numerisk typ som helst (inklusive komplex). Om båda argumenten är reella tal, returneras ett komplext tal med den reella komponenten real och den imaginära komponenten imag. Om båda argumenten är komplexa tal returneras ett komplext tal med den reella komponenten
real.real-imag.imag
och den imaginära komponentenreal.imag+imag.real
. Om ett av argumenten är ett reellt tal används endast dess reella komponent i ovanstående uttryck.Se även
complex.from_number()
som bara accepterar ett enda numeriskt argument.Om alla argument utelämnas returneras
0j
.Den komplexa typen beskrivs i Numeriska typer — int, float, complex.
Ändrad i version 3.6: Det är tillåtet att gruppera siffror med understrykningstecken som i kodbokstäver.
Ändrad i version 3.8: Faller tillbaka till
__index__()
om__complex__()
och__float__()
inte är definierade.Föråldrad sedan version 3.14: Att skicka ett komplext tal som real- eller imag-argument är nu föråldrat; det ska bara skickas som ett enda positionellt argument.
- delattr(object, name, /)¶
Detta är en relativ av
setattr()
. Argumenten är ett objekt och en sträng. Strängen måste vara namnet på ett av objektets attribut. Funktionen raderar det namngivna attributet, förutsatt att objektet tillåter det. Till exempel,delattr(x, 'foobar')
är likvärdigt meddel x.foobar
. name behöver inte vara en Python-identifierare (sesetattr()
).
- class dict(**kwargs)
- class dict(mapping, /, **kwargs)
- class dict(iterable, /, **kwargs)
Skapa en ny ordbok. Objektet
dict
är klassen för ordboken. Sedict
och Mappningstyper — dict för dokumentation om denna klass.För andra behållare se de inbyggda klasserna
list
,set
ochtuple
samt modulencollections
.
- dir()¶
- dir(object, /)
Utan argument returneras listan med namn i det aktuella lokala omfånget. Med ett argument, försök att returnera en lista över giltiga attribut för det objektet.
Om objektet har en metod som heter
__dir__()
, kommer denna metod att anropas och måste returnera listan med attribut. Detta gör att objekt som implementerar en egen__getattr__()
eller__getattribute__()
funktion kan anpassa hurdir()
rapporterar deras attribut.Om objektet inte tillhandahåller
__dir__()
försöker funktionen göra sitt bästa för att samla in information från objektets__dict__
-attribut, om det är definierat, och från dess typobjekt. Den resulterande listan är inte nödvändigtvis fullständig och kan vara felaktig om objektet har en anpassad__getattr__()
.Standardmekanismen
dir()
beter sig olika med olika typer av objekt, eftersom den försöker ta fram den mest relevanta informationen snarare än fullständig information:Om objektet är ett modulobjekt innehåller listan namnen på modulens attribut.
Om objektet är ett typ- eller klassobjekt innehåller listan namnen på dess attribut och rekursivt på attributen för dess baser.
Annars innehåller listan namnen på objektets attribut, namnen på klassens attribut och rekursivt på attributen för klassens basklasser.
Den resulterande listan är sorterad i alfabetisk ordning. Till exempel
>>> 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']
Anteckning
Eftersom
dir()
främst tillhandahålls som en bekvämlighet för användning vid en interaktiv prompt, försöker den tillhandahålla en intressant uppsättning namn mer än den försöker tillhandahålla en rigoröst eller konsekvent definierad uppsättning namn, och dess detaljerade beteende kan ändras mellan olika versioner. Metaklassattribut finns t.ex. inte med i resultatlistan när argumentet är en klass.
- divmod(a, b, /)¶
Tar två (icke-komplexa) tal som argument och returnerar ett talpar som består av deras kvot och rest vid användning av heltalsdivision. Med blandade operandtyper gäller reglerna för binära aritmetiska operatorer. För heltal är resultatet detsamma som
(a // b, a % b)
. För flyttal är resultatet(q, a % b)
, där q vanligtvis ärmath.floor(a / b)
men kan vara 1 mindre än så. I vilket fall som helst ärq * b + a % b
mycket nära a, oma % b
inte är noll har det samma tecken som b, och0 <= abs(a % b) < abs(b)
.
- enumerate(iterable, start=0)¶
Returnerar ett uppräkningsobjekt. iterable måste vara en sekvens, en iterator, eller något annat objekt som stöder iteration. Metoden
__next__()
för den iterator som returneras avenumerate()
returnerar en tupel som innehåller ett antal (från start som standard är 0) och de värden som erhålls genom att iterera över 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')]
Motsvarar:
def enumerate(iterabel, start=0): n = start för elem i iterabel: avkastning n, elem n += 1
- eval(source, /, globals=None, locals=None)¶
- Parametrar:
source (
str
| code object) – Ett Python-uttryck.globals (
dict
|None
) – Den globala namnrymden (standard:None
).locals (mapping |
None
) – Den lokala namnrymden (standard:None
).
- Returer:
Resultatet av det utvärderade uttrycket.
- höjer:
Syntaxfel rapporteras som undantag.
Varning
Denna funktion exekverar godtycklig kod. Om den anropas med indata från användaren kan det leda till säkerhetsproblem.
Argumentet expression analyseras och utvärderas som ett Python-uttryck (tekniskt sett en villkorslista) med hjälp av mappningarna globals och locals som globala och lokala namnrymder. Om ordlistan globals finns och inte innehåller ett värde för nyckeln
__builtins__
, infogas en referens till ordlistan för den inbyggda modulenbuiltins
under den nyckeln innan expression analyseras. På så sätt kan du kontrollera vilka inbyggda moduler som är tillgängliga för den exekverade koden genom att infoga din egen__builtins__
-ordbok i globals innan du skickar den tilleval()
. Om locals-mappningen utelämnas används globals-ordlistan som standard. Om båda mappningarna utelämnas, exekveras uttrycket med globals och locals i den miljö däreval()
anropas. Observera att eval() endast kommer att ha tillgång till nested scopes (non-locals) i den omgivande miljön om de redan är refererade i det scope som anropareval()
(t.ex. via ennonlocal
-sats).Exempel:
>>> x = 1 >>> eval('x+1') 2
Denna funktion kan också användas för att exekvera godtyckliga kodobjekt (t.ex. de som skapats av
compile()
). I detta fall ska du skicka ett kodobjekt i stället för en sträng. Om kodobjektet har kompilerats med'exec
som mode-argument, kommereval`()
:s returvärde att varaNone
.Tips: dynamisk exekvering av satser stöds av funktionen
exec()
. Funktionernaglobals()
ochlocals()
returnerar den aktuella globala respektive lokala ordlistan, som kan vara användbar att skicka runt för användning aveval()
ellerexec()
.Om den angivna källan är en sträng tas inledande och avslutande mellanslag och tabbar bort.
Se
ast.literal_eval()
för en funktion som på ett säkert sätt kan utvärdera strängar med uttryck som bara innehåller bokstavstecken.Utlöser en auditing event
exec
med kodobjektet som argument. Händelser för kodkompilering kan också uppstå.Ändrad i version 3.13: Argumenten globals och locals kan nu skickas som nyckelord.
Ändrad i version 3.13: Semantiken för standardnamnrymden locals har justerats enligt beskrivningen för
locals()
-byggstenen.
- exec(source, /, globals=None, locals=None, *, closure=None)¶
Varning
Denna funktion exekverar godtycklig kod. Om den anropas med indata från användaren kan det leda till säkerhetsproblem.
Denna funktion stöder dynamisk exekvering av Python-kod. source måste vara antingen en sträng eller ett kodobjekt. Om det är en sträng analyseras strängen som en serie Python-satser som sedan exekveras (om inte ett syntaxfel uppstår). [1] Om det är ett kodobjekt exekveras det helt enkelt. I samtliga fall förväntas koden som exekveras vara giltig som filinmatning (se avsnittet Filinmatning i referenshandboken). Tänk på att
nonlocal
,yield
ochreturn
inte får användas utanför funktionsdefinitioner, inte ens i samband med kod som skickas till funktionenexec()
. Returvärdet ärNone
.I samtliga fall, om de valfria delarna utelämnas, exekveras koden i det aktuella omfånget. Om endast globals anges måste det vara en dictionary (och inte en subklass av dictionary), som används för både de globala och de lokala variablerna. Om globals och locals anges används de för de globala respektive lokala variablerna. Om locals anges kan det vara vilket mappningsobjekt som helst. Kom ihåg att på modulnivå är globals och locals samma ordbok.
Anteckning
När
exec
får två separata objekt som globals och locals kommer koden att exekveras som om den var inbäddad i en klassdefinition. Detta innebär att funktioner och klasser som definieras i den exekverade koden inte kommer att kunna komma åt variabler som tilldelats på den översta nivån (eftersom variablerna på ”översta nivån” behandlas som klassvariabler i en klassdefinition).Om ordlistan globals inte innehåller något värde för nyckeln
__builtins__
, läggs en referens till ordlistan för den inbyggda modulenbuiltins
in under den nyckeln. På så sätt kan du kontrollera vilka inbyggda moduler som är tillgängliga för den exekverade koden genom att infoga din egen__builtins__
-ordbok i globals innan du skickar den tillexec()
.Argumentet closure anger en closure - en tupel av cellvarianter. Det är endast giltigt när object är ett kodobjekt som innehåller free (closure) variables. Längden på tupeln måste exakt matcha längden på kodobjektets
co_freevars
-attribut.Utlöser en auditing event
exec
med kodobjektet som argument. Händelser för kodkompilering kan också uppstå.Anteckning
De inbyggda funktionerna
globals()
ochlocals()
returnerar den aktuella globala respektive lokala namnrymden, som kan vara användbar att skicka runt för att användas som det andra och tredje argumentet tillexec()
.Anteckning
Standard locals fungerar enligt beskrivningen för funktionen
locals()
nedan. Skicka en explicit locals-ordbok om du vill se effekterna av koden på locals efter att funktionenexec()
har returnerats.Ändrad i version 3.11: Parametern closure har lagts till.
Ändrad i version 3.13: Argumenten globals och locals kan nu skickas som nyckelord.
Ändrad i version 3.13: Semantiken för standardnamnrymden locals har justerats enligt beskrivningen för
locals()
-byggstenen.
- filter(function, iterable, /)¶
Konstruera en iterator från de element i iterable för vilka function är sann. iterable kan vara antingen en sekvens, en behållare som stöder iteration eller en iterator. Om function är
None
antas identitetsfunktionen, det vill säga alla element i iterable som är falska tas bort.Observera att
filter(function, iterable)
är ekvivalent med generatoruttrycket(item for item in iterable if function(item))
om funktionen inte ärNone
och(item for item in iterable if item)
om funktionen ärNone
.Se
itertools.filterfalse()
för den kompletterande funktionen som returnerar element i iterable för vilka function är false.
- class float(number=0.0, /)¶
- class float(string, /)
Returnerar ett flyttal konstruerat från ett tal eller en sträng.
Exempel:
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
Om argumentet är en sträng ska den innehålla ett decimaltal, eventuellt föregånget av ett tecken och eventuellt inbäddat i blanksteg. Det valfria tecknet kan vara
'+'
eller'-'
; ett'+'
-tecken har ingen effekt på det värde som produceras. Argumentet kan också vara en sträng som representerar ett NaN (not-a-number), eller positiv eller negativ oändlighet. Mer exakt måste indata överensstämma med produktionsregelnfloatvalue
i följande grammatik, efter att inledande och avslutande blankstegstecken har tagits bort: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
]digitpart
floatnumber:number
[exponent
] absfloatvalue:floatnumber
|infinity
|nan
floatvalue: [sign
]absfloatvalue
Bokstavering har ingen betydelse, så till exempel ”inf”, ”Inf”, ”INFINITY” och ”iNfINity” är alla acceptabla stavningar för positiv oändlighet.
Annars, om argumentet är ett heltal eller ett flyttal, returneras ett flyttal med samma värde (inom Pythons flyttalsprecision). Om argumentet ligger utanför intervallet för en Python float, kommer ett
OverflowError
att uppstå.För ett allmänt Python-objekt
x
delegerarfloat(x)
tillx.__float__()
. Om__float__()
inte är definierad faller den tillbaka till__index__()
.Se även
float.from_number()
som endast accepterar ett numeriskt argument.Om inget argument anges returneras
0.0
.Typen float beskrivs i Numeriska typer — int, float, complex.
Ändrad i version 3.6: Det är tillåtet att gruppera siffror med understrykningstecken som i kodbokstäver.
Ändrad i version 3.7: Parametern är nu endast positionsbestämd.
Ändrad i version 3.8: Faller tillbaka till
__index__()
om__float__()
inte är definierad.
- format(value, format_spec='', /)¶
Konverterar ett värde till en ”formaterad” representation, som styrs av format_spec. Tolkningen av format_spec beror på typen av value-argumentet; det finns dock en standardformateringssyntax som används av de flesta inbyggda typer: Formatspecifikation Mini-språk.
Standard format_spec är en tom sträng, vilket vanligtvis ger samma effekt som att anropa
str(value)
.Ett anrop till
format(värde, format_spec)
översätts tilltype(värde).__format__(värde, format_spec)
vilket förbigår instansordboken vid sökning efter värdets__format__()
-metod. EttTypeError
-undantag uppstår om metodsökningen nårobject
och format_spec inte är tom, eller om antingen format_spec eller returvärdet inte är strängar.Ändrad i version 3.4:
object().__format__(format_spec)
ger upphov tillTypeError
om format_spec inte är en tom sträng.
- class frozenset(iterable=(), /)
Returnerar ett nytt
frozenset
-objekt, eventuellt med element hämtade från iterable.frozenset
är en inbyggd klass. Sefrozenset
och Set-typer — set, frozenset för dokumentation om denna klass.För andra behållare se de inbyggda klasserna
set
,list
,tuple
ochdict
, samt modulencollections
.
- getattr(object, name, /)¶
- getattr(object, name, default, /)
Returnerar värdet för det namngivna attributet för objekt. name måste vara en sträng. Om strängen är namnet på ett av objektets attribut, blir resultatet värdet på det attributet. Till exempel motsvarar
getattr(x, 'foobar')
x.foobar
. Om det namngivna attributet inte finns, returneras default om det anges, annarsAttributeError
. name behöver inte vara en Python-identifierare (sesetattr()
).Anteckning
Eftersom private name mangling sker vid kompilering måste man manuellt mangla ett privat attributs (attribut med två inledande understreck) namn för att kunna hämta det med
getattr()
.
- globals()¶
Returnerar den ordbok som implementerar den aktuella modulens namnrymd. För kod inom funktioner ställs detta in när funktionen definieras och förblir detsamma oavsett var funktionen anropas.
- hasattr(object, name, /)¶
Argumenten är ett objekt och en sträng. Resultatet är
True
om strängen är namnet på ett av objektets attribut,False
om inte. (Detta implementeras genom att anropagetattr(object, name)
och se om det ger upphov till ettAttributeError
eller inte)
- hash(object, /)¶
Returnerar objektets hashvärde (om det har ett sådant). Hashvärden är heltal. De används för att snabbt jämföra nycklar i en ordbok under en ordboksuppslagning. Numeriska värden som jämförs lika har samma hashvärde (även om de är av olika typer, vilket är fallet för 1 och 1.0).
Anteckning
För objekt med anpassade
__hash__()
-metoder, observera atthash()
trunkerar returvärdet baserat på bitbredden i värdmaskinen.
- help()¶
- help(request)
Anropar det inbyggda hjälpsystemet. (Denna funktion är avsedd för interaktiv användning.) Om inget argument anges, startas det interaktiva hjälpsystemet på tolkens konsol. Om argumentet är en sträng, söks strängen upp som namnet på en modul, funktion, klass, metod, nyckelord eller dokumentationsämne, och en hjälpsida skrivs ut på konsolen. Om argumentet är någon annan typ av objekt genereras en hjälpsida om objektet.
Observera att om ett snedstreck (/) visas i parameterlistan för en funktion vid anrop av
help()
, betyder det att parametrarna före snedstrecket är enbart positionella. För mer information, se FAQ-posten om endast positionella parametrar.Denna funktion läggs till i den inbyggda namnrymden av modulen
site
.
- hex(integer, /)¶
Konvertera ett heltal till en hexadecimal sträng med små bokstäver och prefixet ”0x”. Om heltal inte är ett Python
int
-objekt måste det definiera en__index__`()
-metod som returnerar ett heltal. Några exempel:>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
Om du vill konvertera ett heltal till en hexadecimalsträng med versaler eller gemener, med eller utan prefix, kan du använda något av följande sätt:
>>> '%#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')
Se även
format()
för mer information.Se även
int()
för konvertering av en hexadecimal sträng till ett heltal med bas 16.Anteckning
För att få en hexadecimal strängrepresentation för en float, använd metoden
float.hex()
.
- id(object, /)¶
Returnerar ”identiteten” för ett objekt. Detta är ett heltal som garanterat är unikt och konstant för detta objekt under dess livstid. Två objekt med icke-överlappande livstider kan ha samma
id()
-värde.Detta är adressen till objektet i minnet.
Utlöser en auditing event
builtins.id
med argumentetid
.
- input()¶
- input(prompt, /)
Om argumentet prompt finns med skrivs det till standardutdata utan efterföljande ny rad. Funktionen läser sedan en rad från indata, konverterar den till en sträng (utan efterföljande ny rad) och returnerar den. När EOF läses ut,
EOFError
. Exempel:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Om modulen
readline
laddades, kommerinput()
att använda den för att tillhandahålla detaljerade funktioner för radredigering och historik.Utlöser en auditing event
builtins.input
med argumentetprompt
innan inmatningen läsesUtlöser en auditing event
builtins.input/result
med resultatet efter att ha lyckats läsa inmatning.
- class int(number=0, /)¶
- class int(string, /, base=10)
Returnerar ett heltalsobjekt konstruerat från ett tal eller en sträng, eller returnerar
0
om inga argument anges.Exempel:
>>> int(123.45) 123 >>> int('123') 123 >>> int(' -12_345\n') -12345 >>> int('FACE', 16) 64206 >>> int('0xface', 0) 64206 >>> int('01110011', base=2) 115
Om argumentet definierar
__int__()
, returnerarint(x)
x.__int__()
. Om argumentet definierar__index__()
, returnerar detx.__index__()
. För flyttal trunkeras detta mot noll.Om argumentet inte är ett tal eller om base anges, måste det vara en sträng,
bytes
ellerbytearray
-instans som representerar ett heltal i radix base. Eventuellt kan strängen föregås av+
eller-
(utan mellanslag), ha inledande nollor, omges av blanksteg och ha enkla understrykningar mellan siffrorna.En bas-n heltalssträng innehåller siffror som var och en representerar ett värde från 0 till n-1. Värdena 0–9 kan representeras av vilken Unicode-decimalsiffra som helst. Värdena 10–35 kan representeras av
a
tillz
(ellerA
tillZ
). Standardvärdet för bas är 10. De tillåtna baserna är 0 och 2–36. Strängar i bas 2, 8 och 16 kan eventuellt prefixeras med0b
/0B
,0o
/0O
eller0x
/0X
, precis som med heltalslitteraler i kod. För bas 0 tolkas strängen på ett liknande sätt som en integer literal i kod, i det att den faktiska basen är 2, 8, 10 eller 16 som bestäms av prefixet. Bas 0 tillåter inte heller ledande nollor:int('010', 0)
är inte lagligt, medanint('010')
ochint('010', 8)
är det.Typen integer beskrivs i Numeriska typer — int, float, complex.
Ändrad i version 3.4: Om base inte är en instans av
int
och base-objektet har en metodbase.__index__
, anropas den metoden för att erhålla ett heltal för basen. Tidigare versioner användebase.__int__
istället förbase.__index__
.Ändrad i version 3.6: Det är tillåtet att gruppera siffror med understrykningstecken som i kodbokstäver.
Ändrad i version 3.7: Den första parametern är nu endast positionsbestämd.
Ändrad i version 3.8: Faller tillbaka till
__index__()
om__int__()
inte är definierad.Ändrad i version 3.11:
int
-stränginmatningar och strängrepresentationer kan begränsas för att undvika överbelastningsattacker. EttValueError
uppstår när gränsen överskrids vid konvertering av en sträng till enint
eller när konvertering av enint
till en sträng skulle överskrida gränsen. Se dokumentationen Längdsbegränsning för konvertering av heltalssträngar.Ändrad i version 3.14:
int()
delegerar inte längre till metoden__trunc__()
.
- isinstance(object, classinfo, /)¶
Returnera
True
om argumentet object är en instans av argumentet classinfo eller av en (direct, indirect eller virtual) underklass därav. Om object inte är ett objekt av den angivna typen returnerar funktionen alltidFalse
. Om classinfo är en tupel av typobjekt (eller rekursivt, andra sådana tupel) eller en Typ av fackförening av flera typer, returneraTrue
om object är en instans av någon av typerna. Om classinfo inte är en typ eller tupel av typer och sådana tupler, genereras ettTypeError
-undantag.TypeError
får inte genereras för en ogiltig typ om en tidigare kontroll lyckas.Ändrad i version 3.10: classinfo kan vara en Typ av fackförening.
- issubclass(class, classinfo, /)¶
Returnera
True
om class är en underklass (direkt, indirekt eller virtual) av classinfo. En klass betraktas som en underklass av sig själv. classinfo kan vara en tupel av klassobjekt (eller rekursivt, andra sådana tupler) eller en Typ av fackförening, i vilket fall returneraTrue
om class är en underklass till någon post i classinfo. I alla andra fall genereras ettTypeError
-undantag.Ändrad i version 3.10: classinfo kan vara en Typ av fackförening.
- iter(iterable, /)¶
- iter(callable, sentinel, /)
Returnera ett iterator-objekt. Det första argumentet tolkas mycket olika beroende på förekomsten av det andra argumentet. Utan ett andra argument måste det enda argumentet vara ett samlingsobjekt som stöder protokollet iterable (metoden
__iter__()
), eller så måste det stödja sekvensprotokollet (metoden__getitem__()
med heltalargument som börjar på0
). Om det inte stöder något av dessa protokoll, genererasTypeError
. Om det andra argumentet, sentinel, anges, måste det första argumentet vara ett anropbart objekt. Iteratorn som skapas i detta fall kommer att anropa callable utan argument för varje anrop till dess__next__()
-metod; om det returnerade värdet är lika med sentinel kommerStopIteration
att genereras, annars kommer värdet att returneras.Se även Iterator-typer.
En användbar tillämpning av den andra formen av
iter()
är att bygga en blockläsare. Till exempel, läsa block med fast bredd från en binär databasfil tills slutet av filen nås:from functools import partial med open('mydata.db', 'rb') som f: for block in iter(partial(f.read, 64), b''): process_block(block)
- len(object, /)¶
Returnerar längden (antalet poster) för ett objekt. Argumentet kan vara en sekvens (t.ex. en sträng, bytes, tuple, list eller range) eller en samling (t.ex. en dictionary, set eller frozen set).
len
ger upphov tillOverflowError
på längder som är större änsys.maxsize
, till exempelrange(2 ** 100)
.
- class list(iterable=(), /)
I stället för att vara en funktion är
list
faktiskt en muterbar sekvenstyp, vilket dokumenteras i Listor och Sekvenstyper — list, tuple, range.
- locals()¶
Returnerar ett mappningsobjekt som representerar den aktuella lokala symboltabellen, med variabelnamn som nycklar och deras aktuella bundna referenser som värden.
I modulomfång, samt vid användning av
exec()
ellereval()
med en enda namnrymd, returnerar denna funktion samma namnrymd somglobals()
.I klassomfånget returnerar den namnrymden som kommer att skickas till metaklasskonstruktören.
När
exec()
ellereval()
används med separata lokala och globala argument, returneras den lokala namnrymden som skickas till funktionsanropet.I alla ovanstående fall kommer varje anrop till
locals()
i en viss exekveringsram att returnera samma mappningsobjekt. Ändringar som görs genom det mappningsobjekt som returneras frånlocals()
kommer att synas som tilldelade, omtilldelade eller borttagna lokala variabler, och tilldelning, omtilldelning eller borttagning av lokala variabler kommer omedelbart att påverka innehållet i det returnerade mappningsobjektet.I ett optimized scope (inklusive funktioner, generatorer och coroutines) returnerar varje anrop till
locals()
i stället en ny ordbok som innehåller de aktuella bindningarna för funktionens lokala variabler och eventuella icke-lokala cellreferenser. I det här fallet skrivs namnbindningsändringar som görs via den returnerade dict inte tillbaka till motsvarande lokala variabler eller icke-lokala cellreferenser, och tilldelning, omtilldelning eller borttagning av lokala variabler och icke-lokala cellreferenser påverkar inte innehållet i tidigare returnerade lexikon.Att anropa
locals()
som en del av en förståelse i en funktion, generator eller coroutine är likvärdigt med att anropa den i det innehållande scopet, förutom att förståelsens initialiserade iterationsvariabler kommer att inkluderas. I andra scopes beter det sig som om förståelsen kördes som en nästlad funktion.Att anropa
locals()
som en del av ett generatoruttryck är likvärdigt med att anropa det i en nästlad generatorfunktion.Ändrad i version 3.12: Beteendet för
locals()
i en comprehension har uppdaterats enligt beskrivningen i PEP 709.Ändrad i version 3.13: Som en del av PEP 667 definieras nu semantiken för att mutera de mappningsobjekt som returneras från denna funktion. Beteendet i optimized scopes är nu som beskrivet ovan. Bortsett från definitionen är beteendet i andra scopes oförändrat jämfört med tidigare versioner.
- map(function, iterable, /, *iterables, strict=False)¶
Returnerar en iterator som tillämpar function på varje objekt i iterable, vilket ger resultatet. Om ytterligare iterables-argument skickas, måste function ta lika många argument och tillämpas på objekten från alla iterables parallellt. Med flera iterabler stannar iteratorn när den kortaste iterabeln är uttömd. Om strict är
True
och en av iteratorerna är uttömd före de andra, uppstår ettValueError
. För fall där funktionsingångarna redan är ordnade i argumenttuplar, seitertools.starmap()
.Ändrad i version 3.14: Parametern strict har lagts till.
- max(iterable, *, key=None)¶
- max(iterable, *, default, key=None)
- max(arg1, arg2, *args, key=None)
Returnerar det största objektet i en iterabel eller det största av två eller flera argument.
Om ett positionellt argument anges bör det vara en iterable. Det största objektet i iterabeln returneras. Om två eller flera positionsargument anges, returneras det största av positionsargumenten.
Det finns två valfria argument som endast innehåller nyckelord. Argumentet key anger en ordningsfunktion med ett argument, som den som används för
list.sort()
. Argumentet default anger ett objekt som ska returneras om den angivna iterabeln är tom. Om iterabeln är tom och default inte anges, uppstår ettValueError
.Om flera objekt är maximala returnerar funktionen det första som påträffas. Detta är förenligt med andra verktyg som bevarar sorteringsstabiliteten, t.ex.
sorted(iterable, key=keyfunc, reverse=True)[0]
ochheapq.nlargest(1, iterable, key=keyfunc)
.Ändrad i version 3.4: Lagt till parametern default keyword-only.
Ändrad i version 3.8: Nyckeln kan vara
Ingen
.
- class memoryview(object)
Returnerar ett ”minnesvy”-objekt som skapats från det angivna argumentet. Se Minnesvy för mer information.
- min(iterable, *, key=None)¶
- min(iterable, *, default, key=None)
- min(arg1, arg2, *args, key=None)
Returnerar det minsta objektet i en iterabel eller det minsta av två eller flera argument.
Om ett positionellt argument anges bör det vara en iterable. Det minsta objektet i iterabeln returneras. Om två eller flera positionsargument anges, returneras det minsta av positionsargumenten.
Det finns två valfria argument som endast innehåller nyckelord. Argumentet key anger en ordningsfunktion med ett argument, som den som används för
list.sort()
. Argumentet default anger ett objekt som ska returneras om den angivna iterabeln är tom. Om iterabeln är tom och default inte anges, uppstår ettValueError
.Om flera objekt är minimala returnerar funktionen det första som påträffas. Detta är förenligt med andra verktyg som bevarar sorteringsstabiliteten, t.ex.
sorted(iterable, key=keyfunc)[0]
ochheapq.nsmallest(1, iterable, key=keyfunc)
.Ändrad i version 3.4: Lagt till parametern default keyword-only.
Ändrad i version 3.8: Nyckeln kan vara
Ingen
.
- next(iterator, /)¶
- next(iterator, default, /)
Hämtar nästa objekt från iterator genom att anropa dess
__next__()
-metod. Om default anges returneras den om iteratorn är uttömd, annars aktiverasStopIteration
.
- class object¶
Detta är den ultimata basklassen för alla andra klasser. Den har metoder som är gemensamma för alla instanser av Python-klasser. När konstruktören anropas returnerar den ett nytt funktionslöst objekt. Konstruktören accepterar inga argument.
- oct(integer, /)¶
Konvertera ett heltal till en oktal sträng med prefixet ”0o”. Resultatet är ett giltigt Python-uttryck. Om integer inte är ett Python
int
-objekt måste det definiera en__index__()
-metod som returnerar ett heltal. Till exempel:>>> oct(8) '0o10' >>> oct(-56) '-0o70'
Om du vill konvertera ett heltal till en oktalsträng, antingen med prefixet ”0o” eller inte, kan du använda något av följande sätt.
>>> '%#o' % 10, '%o' % 10 ('0o12', '12') >>> format(10, '#o'), format(10, 'o') ('0o12', '12') >>> f'{10:#o}', f'{10:o}' ('0o12', '12')
Se även
format()
för mer information.
- open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)¶
Öppnar fil och returnerar ett motsvarande filobjekt. Om filen inte kan öppnas genereras ett
OSError
. Se Läsa och skriva filer för fler exempel på hur denna funktion kan användas.file är ett path-like object som anger sökvägen (absolut eller relativt till den aktuella arbetskatalogen) för den fil som ska öppnas eller en heltalsfilbeskrivning för den fil som ska omslutas. (Om en filbeskrivare anges stängs den när det returnerade I/O-objektet stängs, såvida inte closefd är satt till
False
)mode är en valfri sträng som anger i vilket läge filen ska öppnas. Standardvärdet är
'r'
, vilket innebär att filen öppnas för läsning i textläge. Andra vanliga värden är'w'
för att skriva (avkorta filen om den redan finns),'x'
för exklusivt skapande och'a'
för att lägga till (vilket på vissa Unix-system innebär att alla skrivningar läggs till i slutet av filen oavsett aktuell sökposition). I textläge, om encoding inte anges, är den kodning som används plattformsberoende:locale.getencoding()
anropas för att hämta den aktuella locale-kodningen. (För läsning och skrivning av råbytes används binärt läge och encoding anges inte) De tillgängliga lägena är:Tecken
Betydelse
'r'
öppen för läsning (standard)
'w'
öppna för skrivning, avkorta filen först
'x'
öppen för exklusiv skapelse, misslyckas om filen redan finns
'a'
öppen för skrivning, läggs till i slutet av filen om den finns
'b'
binärt läge
't'
textläge (standard)
'+'
öppen för uppdatering (läsning och skrivning)
Standardläget är
'r'
(öppen för läsning av text, en synonym till'rt'
). Lägena'w+'
och'w+b'
öppnar och trunkerar filen. Lägena'r+'
och'r+b'
öppnar filen utan trunkering.Som nämndes i Översikt skiljer Python mellan binär och text I/O. Filer som öppnas i binärt läge (inklusive
'b'
i mode-argumentet) returnerar innehållet sombytes
-objekt utan någon avkodning. I textläge (standard, eller när't'
ingår i mode-argumentet) returneras filens innehåll somstr
, där bytena först har avkodats med en plattformsberoende kodning eller med den angivna kodningen om den anges.Anteckning
Python är inte beroende av det underliggande operativsystemets uppfattning om textfiler; all bearbetning görs av Python självt och är därför plattformsoberoende.
buffering är ett valfritt heltal som används för att ställa in buffringspolicyn. Ange 0 för att stänga av buffring (endast tillåtet i binärt läge), 1 för att välja linjebuffring (endast användbart när du skriver i textläge) och ett heltal > 1 för att ange storleken i byte på en buffert med fast storlek. Observera att om du anger en buffertstorlek på det här sättet gäller det för binärt buffrad I/O, men
TextIOWrapper
(dvs. filer som öppnas medmode='r+'
) skulle ha en annan buffring. För att inaktivera buffring iTextIOWrapper
, överväg att användawrite_through
flaggan förio.TextIOWrapper.reconfigure()
. När inget buffering-argument anges fungerar standardpolicyn för buffring på följande sätt:Binära filer buffras i bitar av fast storlek; storleken på bufferten är
max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE)
när enhetens blockstorlek är tillgänglig. På de flesta system är bufferten vanligtvis 128 kilobyte lång.”Interaktiva” textfiler (filer för vilka
isatty()
returnerarTrue
) använder radbuffring. Andra textfiler använder den policy som beskrivs ovan för binära filer.
encoding är namnet på den kodning som används för att avkoda eller koda filen. Detta bör endast användas i textläge. Standardkodningen är plattformsberoende (oavsett vad
locale.getencoding()
returnerar), men alla text encoding som stöds av Python kan användas. Se modulencodecs
för en lista över kodningar som stöds.errors är en valfri sträng som anger hur kodnings- och avkodningsfel ska hanteras - detta kan inte användas i binärt läge. En mängd olika standardfelhanterare finns tillgängliga (listade under Felhanterare), men alla felhanteringsnamn som har registrerats med
codecs.register_error()
är också giltiga. Standardnamnen inkluderar:'strict'
för att skapa ettValueError
undantag om det finns ett kodningsfel. StandardvärdetNone
har samma effekt.'ignore'
ignorerar fel. Observera att om du ignorerar kodningsfel kan det leda till dataförlust.'replace'
gör att en ersättningsmarkör (t.ex.'?'
) infogas där det finns felaktiga data.'surrogateescape'
kommer att representera alla felaktiga byte som låga surrogatkodsenheter från U+DC80 till U+DCFF. Dessa surrogatkodsenheter kommer sedan att omvandlas tillbaka till samma byte när felhanterarensurrogateescape
används vid skrivning av data. Detta är användbart för att bearbeta filer i en okänd kodning.'xmlcharrefreplace'
stöds endast när du skriver till en fil. Tecken som inte stöds av kodningen ersätts med lämplig XML-teckenreferens&#nnn;
.'backslashreplace'
ersätter missbildade data med Pythons bakåtstreckade escape-sekvenser.'namereplace'
(stöds också endast vid skrivning) ersätter tecken som inte stöds medN{...}
escape-sekvenser.
newline bestämmer hur man analyserar nya radtecken från flödet. Det kan vara
None
,''
,'\n'
,'\r'
och'\r\n'
. Det fungerar på följande sätt:Om newline är
None
aktiveras universal newlines-läget när indata läses från strömmen. Rader i inmatningen kan sluta på'\n'
,'\r'
eller'\r\n'
, och dessa översätts till'\n'
innan de returneras till den som anropar. Om det är''
aktiveras universal newlines mode, men radavslut returneras till uppringaren oöversatta. Om det har något av de andra lagliga värdena avslutas inmatningsraderna endast med den angivna strängen, och radavslutningen returneras till den som ringer upp oöversatt.Om newline är
None
när utdata skrivs till strömmen, översätts alla'\n'
-tecken som skrivs till systemets standardradavgränsare,os.linesep
. Om newline är''
eller'\n'
sker ingen översättning. Om newline är något av de andra lagliga värdena översätts alla'\n'
-tecken som skrivs till den angivna strängen.
Om closefd är
False
och en filbeskrivare istället för ett filnamn har angetts, kommer den underliggande filbeskrivaren att hållas öppen när filen stängs. Om ett filnamn anges måste closefd varaTrue
(standard), annars kommer ett fel att uppstå.En anpassad öppnare kan användas genom att skicka en anropsbar som opener. Den underliggande filbeskrivaren för filobjektet erhålls sedan genom att anropa opener med (file, flags). opener måste returnera en öppen filbeskrivare (att skicka
os.open
som opener resulterar i funktionalitet som liknar att skickaNone
).Den nyskapade filen är icke-ärftlig.
I följande exempel används parametern dir_fd i funktionen
os.open()
för att öppna en fil i förhållande till en viss katalog:>>> 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
Typen av file object som returneras av funktionen
open()
beror på läget. Näropen()
används för att öppna en fil i textläge ('w'
,'r'
,'wt'
,'rt'
, etc.) returneras en underklass avio.TextIOBase
(specifiktio.TextIOWrapper
). När den används för att öppna en fil i binärt läge med buffring är den returnerade klassen en underklass tillio.BufferedIOBase
. Den exakta klassen varierar: i binärt läsläge returneras enio.BufferedReader
, i binärt skrivläge och binärt append-läge returneras enio.BufferedWriter
och i läs-/skrivläge returneras enio.BufferedRandom
. När buffringen är inaktiverad returneras råströmmen, en underklass tillio.RawIOBase
,io.FileIO
.Se även filhanteringsmodulerna, till exempel
fileinput
,io
(däropen()
deklareras),os
,os.path
,tempfile
ochshutil
.Skapar en auditing event
open
med argumentenpath
,mode
,flags
.Argumenten
mode
ochflags
kan ha ändrats eller härletts från det ursprungliga anropet.Ändrad i version 3.3:
Parametern opener har lagts till.
Läget
'x'
lades till.FileExistsError
visas nu om filen som öppnades i exklusivt skapande-läge ('x'
) redan existerar.
Ändrad i version 3.4:
Filen är nu inte ärftlig.
Ändrad i version 3.5:
Om systemanropet avbryts och signalhanteraren inte ger upphov till ett undantag, försöker funktionen nu göra om systemanropet istället för att ge upphov till ett
InterruptedError
-undantag (se PEP 475 för förklaringen).Felhanteraren
'namereplace'
har lagts till.
Ändrad i version 3.6:
Stöd har lagts till för att acceptera objekt som implementerar
os.PathLike
.I Windows kan öppnandet av en konsolbuffert returnera en annan underklass av
io.RawIOBase
änio.FileIO
.
Ändrad i version 3.11: Läget
'U
har tagits bort.
- ord(c)¶
Givet en sträng som representerar ett Unicode-tecken, returnerar ett heltal som representerar Unicode-kodpunkten för det tecknet. Till exempel,
ord('a')
returnerar heltalet97
ochord('€')
(Euro-tecken) returnerar8364
. Detta är inversen avchr()
.
- pow(base, exp, mod=None)¶
Returnerar bas till potensen exp; om mod finns, returneras bas till potensen exp, modulo mod (beräknas effektivare än
pow(bas, exp) % mod
). Formenpow(base, exp)
med två argument är likvärdig med att använda potensoperatorn:base**exp
.Argumenten måste vara av numerisk typ. Med blandade operandtyper gäller koercitionsreglerna för binära aritmetiska operatorer. För
int
-operander har resultatet samma typ som operanderna (efter coercion) om inte det andra argumentet är negativt; i så fall konverteras alla argument till float och ett float-resultat levereras. Till exempel gerpow(10, 2)
100
, menpow(10, -2)
ger0,01
. För en negativ bas av typenint
ellerfloat
och en icke-integral exponent, levereras ett komplext resultat. Till exempel gerpow(-9, 0,5)
ett värde nära3j
. För en negativ bas av typenint
ellerfloat
med en integrerad exponent levereras däremot ett float-resultat. Till exempel,pow(-9, 2.0)
returnerar81.0
.För
int
-operanderna base och exp gäller att om mod förekommer måste mod också vara av heltalstyp och mod måste vara icke-noll. Om mod finns och exp är negativ, måste base vara relativt primtal till mod. I så fall returneraspow(inv_base, -exp, mod)
, där inv_base är en invers till base modulo mod.Här är ett exempel på att beräkna en invers för
38
modulo97
:>>> pow(38, -1, mod=97) 23 >>> 23 * 38 % 97 == 1 True
Ändrad i version 3.8: För
int
-operander tillåter nu treargumentformen avpow
att det andra argumentet är negativt, vilket möjliggör beräkning av modulära inverser.Ändrad i version 3.8: Tillåt nyckelordsargument. Tidigare stöddes endast positionella argument.
- print(*objects, sep=' ', end='\n', file=None, flush=False)¶
Skriver ut objekt till textflödet file, separerade med sep och följda av end. sep, end, file och flush, om de finns, måste anges som nyckelordsargument.
Alla argument som inte är nyckelord konverteras till strängar som
str()
gör och skrivs till strömmen, separerade med sep och följda av end. Både sep och end måste vara strängar; de kan också varaNone
, vilket innebär att standardvärdena används. Om inga objekt anges kommerprint()
bara att skriva end.Argumentet file måste vara ett objekt med en
write(string)
-metod; om det inte finns eller om det ärNone
, kommersys.stdout
att användas. Eftersom utskrivna argument konverteras till textsträngar kanprint()
inte användas med filobjekt i binärt läge. För dessa används iställetfile.write(...)
.Buffring av utdata bestäms vanligtvis av file. Men om flush är true, spolas strömmen med våld.
Ändrad i version 3.3: Lagt till nyckelordsargumentet flush.
- class property(fget=None, fset=None, fdel=None, doc=None)¶
Returnerar ett egenskapsattribut.
fget är en funktion för att hämta ett attributvärde. fset är en funktion för att ställa in ett attributvärde. fdel är en funktion för att ta bort ett attributvärde. Och doc skapar en docstring för attributet.
En typisk användning är att definiera ett hanterat attribut
x
:klass C: def __init__(self): self._x = Ingen def getx(self): returnera self._x def setx(self, värde): self._x = värde def delx(self): del self._x x = property(getx, setx, delx, "Jag är egenskapen 'x'.")
Om c är en instans av C, kommer
c.x
att anropa getter,c.x = value
kommer att anropa setter ochdel c.x
deleter.Om den anges kommer doc att vara docstring för egenskapens attribut. Annars kommer egenskapen att kopiera fgets docstring (om den finns). Detta gör det möjligt att skapa skrivskyddade egenskaper enkelt genom att använda
property()
som en decorator:klass Papegoja: def __init__(self): self._voltage = 100000 @egenskap def voltage(self): """Hämta den aktuella spänningen.""" returnera self._voltage
Dekoratorn
@property
förvandlar metodenvoltage()
till en ”getter” för ett skrivskyddat attribut med samma namn och sätter docstring för voltage till ”Get the current voltage”- @getter¶
- @setter¶
- @deleter¶
Ett egenskapsobjekt har metoderna
getter
,etter
ochdeleter
som kan användas som dekoratorer som skapar en kopia av egenskapen med motsvarande accessorfunktion inställd på den dekorerade funktionen. Detta förklaras bäst med ett exempel:klass C: def __init__(self): self._x = Ingen @egenskap def x(self): """Jag är egenskapen 'x'.""" returnera self._x @x.inställare def x(self, värde): self._x = värde @x.borttagare def x(self): del self._x
Denna kod är exakt likvärdig med det första exemplet. Var noga med att ge de ytterligare funktionerna samma namn som den ursprungliga egenskapen (
x
i det här fallet.)Det returnerade egenskapsobjektet har också attributen
fget
,fset
ochfdel
som motsvarar konstruktörens argument.
Ändrad i version 3.5: Dokumentationen av property-objekt är nu skrivbar.
- __name__¶
Attribut som innehåller namnet på egenskapen. Namnet på egenskapen kan ändras vid körning.
Tillagd i version 3.13.
- class range(stop)
- class range(start, stop, step=1)
I stället för att vara en funktion är
range
faktiskt en oföränderlig sekvenstyp, vilket dokumenteras i Intervaller och Sekvenstyper — list, tuple, range.
- repr(object, /)¶
Returnerar en sträng som innehåller en utskriftsvänlig representation av ett objekt. För många typer försöker denna funktion returnera en sträng som skulle ge ett objekt med samma värde när den skickas till
eval()
; annars är representationen en sträng inom hakparenteser som innehåller namnet på objektets typ tillsammans med ytterligare information, ofta inklusive objektets namn och adress. En klass kan styra vad denna funktion returnerar för sina instanser genom att definiera en__repr__()
-metod. Omsys.displayhook()
inte är tillgänglig kommer denna funktion att ge upphov tillRuntimeError
.Denna klass har en anpassad representation som kan utvärderas:
klass Person: def __init__(self, namn, ålder): self.name = namn self.age = ålder def __repr__(self): return f"Person('{self.name}', {self.age})"
- reversed(object, /)¶
Returnera en omvänd iterator. Argumentet måste vara ett objekt som har en
__reversed__()
-metod eller stöder sekvensprotokollet (metoden__len__()
och metoden__getitem__()
med heltal som argument som börjar på0
).
- round(number, ndigits=None)¶
Returnerar tal avrundat till siffrors precision efter decimaltecknet. Om ndigits utelämnas eller är
None
, returneras det närmaste heltalet till indata.För de inbyggda typer som stöder
round()
avrundas värden till närmaste multipel av 10 i potens minus ndigits; om två multiplar är lika nära avrundas till det jämna valet (så till exempel är båderound(0.5)
ochround(-0.5)
0
, ochround(1.5)
är2
). Alla heltalsvärden är giltiga för siffror (positiva, noll eller negativa). Returvärdet är ett heltal om ndigits utelämnas ellerNone
. I annat fall har returvärdet samma typ som number.För ett allmänt Python-objekt
number
delegerarround
tillnumber.__round__
.Anteckning
Beteendet hos
round()
för flyttal kan vara överraskande: till exempel gerround(2,675, 2)
2,67
istället för det förväntade2,68
. Detta är inte en bugg: det är ett resultat av det faktum att de flesta decimalfraktioner inte kan representeras exakt som ett flyttal. Se Aritmetik med flyttal: problem och begränsningar för mer information.
- class set(iterable=(), /)
Returnerar ett nytt
set
-objekt, eventuellt med element hämtade från iterable.set
är en inbyggd klass. Seset
och Set-typer — set, frozenset för dokumentation om denna klass.För andra behållare se de inbyggda klasserna
frozenset
,list
,tuple
ochdict
, samt modulencollections
.
- setattr(object, name, value, /)¶
Detta är motsvarigheten till
getattr()
. Argumenten är ett objekt, en sträng och ett godtyckligt värde. Strängen kan namnge ett befintligt attribut eller ett nytt attribut. Funktionen tilldelar värdet till attributet, förutsatt att objektet tillåter det. Exempelvis ärsetattr(x, 'foobar', 123)
likvärdigt medx.foobar = 123
.name behöver inte vara en Python-identifierare enligt definitionen i Namn (identifierare och nyckelord) om inte objektet väljer att tillämpa detta, t.ex. i en anpassad
__getattribute__()
eller via__slots__
. Ett attribut vars namn inte är en identifierare kommer inte att vara tillgängligt med hjälp av punktnotationen, men är tillgängligt viagetattr()
etc.Anteckning
Eftersom private name mangling sker vid kompilering måste man manuellt mangla ett privat attributs (attribut med två inledande understreck) namn för att kunna ställa in det med
setattr()
.
- class slice(stop, /)¶
- class slice(start, stop, step=None, /)
Returnerar ett slice-objekt som representerar den uppsättning index som anges av
range(start, stop, step)
. Argumenten start och step är som standardNone
.Slice-objekt har skrivskyddade dataattribut
start
,stop
ochstep
som bara returnerar argumentvärdena (eller deras standardvärden). De har ingen annan explicit funktionalitet, men de används av NumPy och andra tredjepartspaket.- start¶
- stop¶
- step¶
Slice-objekt genereras också när syntaxen för utökad indexering används. Till exempel:
a[start:stop:step]
ellera[start:stop, i]
. Seitertools.islice()
för en alternativ version som returnerar en iterator.
- sorted(iterable, /, *, key=None, reverse=False)¶
Returnerar en ny sorterad lista från objekten i iterable.
Har två valfria argument som måste anges som nyckelordsargument.
key anger en funktion med ett argument som används för att extrahera en jämförelsenyckel från varje element i iterable (t.ex.
key=str.lower
). Standardvärdet ärNone
(jämför elementen direkt).reverse är ett booleanskt värde. Om värdet är satt till
True
sorteras listelementen som om varje jämförelse vore omvänd.Använd
functools.cmp_to_key()
för att konvertera en gammaldags cmp-funktion till en key-funktion.Den inbyggda funktionen
sorted()
är garanterat stabil. En sortering är stabil om den garanterar att den inte ändrar den relativa ordningen för element som jämförs lika — detta är användbart för sortering i flera omgångar (t.ex. sortera efter avdelning, sedan efter lönegrad).Sorteringsalgoritmen använder endast
<
jämförelser mellan objekt. Även om det räcker att definiera en__lt__()
-metod för sortering, rekommenderar PEP 8 att alla sex rich comparisons implementeras. Detta hjälper till att undvika buggar när samma data används med andra sorteringsverktyg sommax()
som förlitar sig på en annan underliggande metod. Implementering av alla sex jämförelser hjälper också till att undvika förvirring för jämförelser av blandade typer som kan anropa reflekterade__gt__()
-metoden.För sorteringsexempel och en kort sorteringshandledning, se Sorteringstekniker.
- @staticmethod¶
Omvandla en metod till en statisk metod.
En statisk metod får inte något implicit första argument. För att deklarera en statisk metod, använd detta idiom:
klass C: @statiskmetod def f(arg1, arg2, argN): ...
Formen
@staticmethod
är en funktion decorator – se Definitioner av funktioner för detaljer.En statisk metod kan anropas antingen på klassen (t.ex.
C.f()
) eller på en instans (t.ex.C().f()
). Dessutom är den statiska metoden descriptor också anropsbar, så den kan användas i klassdefinitionen (t.ex.f()
).Statiska metoder i Python liknar dem som finns i Java eller C++. Se även
classmethod()
för en variant som är användbar för att skapa alternativa klasskonstruktörer.Som alla dekoratorer är det också möjligt att anropa
staticmethod
som en vanlig funktion och göra något med dess resultat. Detta behövs i vissa fall där du behöver en referens till en funktion från en klass och du vill undvika den automatiska omvandlingen till instansmetod. För dessa fall, använd detta idiom:def vanlig_funktion(): ... klass C: method = staticmethod(regular_function)
För mer information om statiska metoder, se Standardtypens hierarki.
Ändrad i version 3.10: Statiska metoder ärver nu metodattributen (
__module__
,__name__
,__qualname__
,__doc__
och__annotations__
), har ett nytt attribut__wrapped__
och kan nu anropas som vanliga funktioner.
- class str(*, encoding='utf-8', errors='strict')
- class str(object)
- class str(object, encoding, errors='strict')
- class str(object, *, errors)
Returnerar en
str
-version av object. Sestr()
för detaljer.str
är den inbyggda strängen class. För allmän information om strängar, se Textsekvenstyp — str.
- sum(iterable, /, start=0)¶
Summerar start och posterna i en iterabel från vänster till höger och returnerar totalsumman. Posterna i iterabeln är normalt tal och startvärdet får inte vara en sträng.
För vissa användningsfall finns det bra alternativ till
sum()
. Det föredragna, snabba sättet att sammanfoga en sekvens av strängar är genom att anropa''.join(sequence)
. För att lägga till flyttalsvärden med utökad precision, semath.fsum()
. För att konkatenera en serie iterabler, överväg att användaitertools.chain()
.Ändrad i version 3.8: Parametern start kan anges som ett nyckelordsargument.
Ändrad i version 3.12: Summering av flyttal har bytts till en algoritm som ger högre noggrannhet och bättre kommutativitet på de flesta byggen.
Ändrad i version 3.14: Lagt till specialisering för summering av komplex, med samma algoritm som för summering av flyttal.
- class super¶
- class super(type, object_or_type=None, /)
Returnerar ett proxyobjekt som delegerar metodanrop till en överordnad eller syskonklass av typ. Detta är användbart för att komma åt ärvda metoder som har åsidosatts i en klass.
Object_or_type bestämmer vilken method resolution order som ska sökas. Sökningen börjar från klassen direkt efter typ.
Till exempel, om
__mro__
av object_or_type ärD -> B -> C -> A -> object
och värdet av type ärB
, då sökersuper()
C -> A -> object
.Attributet
__mro__
i den klass som motsvarar object_or_type listar den sökordning för metodupplösning som används av bådegetattr()
ochsuper()
. Attributet är dynamiskt och kan ändras när arvshierarkin uppdateras.Om det andra argumentet utelämnas är det superobjekt som returneras obundet. Om det andra argumentet är ett objekt måste
isinstance(obj, type)
vara true. Om det andra argumentet är en typ måsteissubclass(type2, type)
vara true (detta är användbart för classmethods).Vid anrop direkt inom en vanlig metod i en klass kan båda argumenten utelämnas (”zero-argument
super()
”). I detta fall kommer type att vara den inneslutande klassen och obj kommer att vara det första argumentet i den omedelbart inneslutande funktionen (vanligtvisself
). (Detta innebär att nollargumentetsuper()
inte fungerar som förväntat inom nästlade funktioner, inklusive generatoruttryck, som implicit skapar nästlade funktioner)Det finns två typiska användningsområden för super. I en klasshierarki med enkel nedärvning kan super användas för att hänvisa till överordnade klasser utan att namnge dem explicit, vilket gör koden mer lätthanterlig. Denna användning är nära parallell med användningen av super i andra programmeringsspråk.
Det andra användningsfallet är att stödja kooperativ multipel nedärvning i en dynamisk exekveringsmiljö. Detta användningsfall är unikt för Python och finns inte i statiskt kompilerade språk eller språk som bara stöder enkel arvbarhet. Detta gör det möjligt att implementera ”diamantdiagram” där flera basklasser implementerar samma metod. God design kräver att sådana implementationer har samma anropssignatur i samtliga fall (eftersom anropsordningen bestäms vid körning, eftersom denna ordning anpassas till förändringar i klasshierarkin och eftersom denna ordning kan omfatta syskonklasser som är okända före körning).
För båda användningsfallen ser ett typiskt superklassanrop ut så här:
klass C(B): def method(self, arg): super().method(arg) # Detta gör samma sak som: # super(C, self).method(arg)
Förutom metoduppslagningar fungerar
super()
också för attributuppslagningar. Ett möjligt användningsfall för detta är att anropa descriptors i en överordnad eller syskonklass.Observera att
super()
implementeras som en del av bindningsprocessen för uttryckliga prickade attributuppslagningar somsuper().__getitem__(name)
. Den gör detta genom att implementera sin egen__getattribute__()
-metod för att söka klasser i en förutsägbar ordning som stöder kooperativ multipel nedärvning. Följaktligen ärsuper()
odefinierad för implicita uppslagningar med satser eller operatorer somsuper()[name]
.Observera också att
super()
, bortsett från formen med noll argument, inte är begränsad till att användas inuti metoder. Formen med två argument specificerar argumenten exakt och gör lämpliga referenser. Formen med nollargument fungerar bara inuti en klassdefinition, eftersom kompilatorn fyller i de nödvändiga detaljerna för att korrekt hämta den klass som definieras, samt för att komma åt den aktuella instansen för vanliga metoder.För praktiska förslag på hur man utformar kooperativa klasser med hjälp av
super()
, se guide to using super().Ändrad i version 3.14:
super
-objekt är nupickleable
ochcopyable
.
- class tuple(iterable=(), /)
I stället för att vara en funktion är
tuple
faktiskt en oföränderlig sekvenstyp, vilket dokumenteras i Tupler och Sekvenstyper — list, tuple, range.
- class type(object, /)¶
- class type(name, bases, dict, /, **kwargs)
Returnerar typen av ett objekt med ett argument. Returvärdet är ett typobjekt och i allmänhet samma objekt som returneras av
object.__class__
.Den inbyggda funktionen
isinstance()
rekommenderas för att testa typen av ett objekt, eftersom den tar hänsyn till underklasser.Med tre argument, returnerar ett nytt typobjekt. Detta är i huvudsak en dynamisk form av
class
-satsen. Strängen name är klassnamnet och blir attributet__name__
. Tupeln bases innehåller basklasserna och blir attributet__bases__
; om den är tom läggsobject
, den yttersta basen för alla klasser, till. Dictionariet dict innehåller attribut- och metoddefinitioner för klassens kropp; det kan kopieras eller omslutas innan det blir attributet__dict__
. Följande två satser skapar identiskatype
-objekt:>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))
Se även nedan:
Nyckelordsargument som anges i formuläret med tre argument skickas till lämplig metaklassmekanism (vanligtvis
__init_subclass__()
) på samma sätt som nyckelord i en klassdefinition (förutom metaklass).Se även Anpassa skapandet av klasser.
Ändrad i version 3.6: Underklasser till
type
som inte åsidosättertype.__new__
får inte längre använda ett-argument-formuläret för att få fram typen av ett objekt.
- vars()¶
- vars(object, /)
Returnerar attributet
__dict__
för en modul, klass, instans eller något annat objekt med attributet__dict__
.Objekt som moduler och instanser har ett uppdaterbart attribut
__dict__
, men andra objekt kan ha skrivbegränsningar på sina attribut__dict__
(klasser använder t.ex. entypes.MappingProxyType
för att förhindra direkta uppdateringar av ordlistan).Utan ett argument fungerar
vars()
somlocals()
.Ett undantag av typen
TypeError
uppstår om ett objekt anges men det inte har något attribut__dict__
(t.ex. om dess klass definierar attributet__slots__
).Ändrad i version 3.13: Resultatet av att anropa denna funktion utan ett argument har uppdaterats enligt beskrivningen för
locals()
builtin.
- zip(*iterables, strict=False)¶
Iterera över flera iterabler parallellt och producera tuples med ett objekt från var och en.
Exempel:
>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']): ... print(item) ... (1, 'sugar') (2, 'spice') (3, 'everything nice')
Mer formellt:
zip()
returnerar en iterator av tupler, där den i:e tupeln innehåller det i:e elementet från var och en av argumentets iterabler.Ett annat sätt att tänka på
zip()
är att den förvandlar rader till kolumner och kolumner till rader. Detta liknar transponering av en matris.zip()
är lat: Elementen kommer inte att bearbetas förrän iterabeln itereras, t.ex. genom enfor
-loop eller genom att packas in i enlist
.En sak att tänka på är att de iterabler som skickas till
zip()
kan ha olika längd; ibland på grund av design, och ibland på grund av en bugg i koden som förberedde dessa iterabler. Python erbjuder tre olika sätt att hantera detta problem:Som standard stoppar
zip()
när den kortaste iterabeln är uttömd. Den ignorerar de återstående objekten i de längre iterationerna och skär av resultatet till längden på den kortaste iterationen:>>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'])) [(0, 'fee'), (1, 'fi'), (2, 'fo')]
zip()
används ofta i fall där iterablerna antas vara lika långa. I sådana fall rekommenderas det att använda alternativetstrict=True
. Dess utdata är samma som vanligazip()
:>>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2), ('c', 3)]
Till skillnad från standardbeteendet ger det upphov till ett
ValueError
om en iterabel är uttömd före de andra:>>> 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
Utan argumentet
strict=True
kommer alla buggar som resulterar i iterabler av olika längd att tystas ner och eventuellt manifesteras som en svårfunnen bugg i en annan del av programmet.Kortare iterabler kan fyllas på med ett konstant värde så att alla iterabler blir lika långa. Detta görs med
itertools.zip_longest()
.
Gränsfall: Med ett enda iterabelt argument returnerar
zip()
en iterator av 1-tupler. Utan argument returnerar den en tom iterator.Tips och tricks:
Utvärderingsordningen från vänster till höger för iterablerna är garanterad. Detta möjliggör ett idiom för att klustra en dataserie i grupper med n längder med hjälp av
zip(*[iter(s)]*n, strict=True)
. Detta upprepar samma iteratorn
gånger så att varje utmatad tupel har resultatet avn
anrop till iteratorn. Detta har effekten att inmatningen delas upp i n-långa bitar.zip()
i kombination med operatorn*
kan användas för att packa upp en lista:>>> 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
Ändrad i version 3.10: Lagt till argumentet
strict
.
- __import__(name, globals=None, locals=None, fromlist=(), level=0)¶
Anteckning
Detta är en avancerad funktion som inte behövs i vardaglig Python-programmering, till skillnad från
importlib.import_module()
.Denna funktion anropas av
import
-satsen. Den kan ersättas (genom att importerabuiltins
-modulen och tilldela denbuiltins.__import__
) för att ändra semantiken iimport
-satsen, men att göra det är starkt avrått eftersom det vanligtvis är enklare att använda import-hooks (se PEP 302) för att uppnå samma mål och inte orsakar problem med kod som antar att standardimplementeringen av import används. Direkt användning av__import__()
avråds också till förmån förimportlib.import_module()
.Funktionen importerar modulen name, eventuellt med hjälp av de angivna globals och locals för att avgöra hur namnet ska tolkas i en paketkontext. fromlist anger namnen på de objekt eller undermoduler som ska importeras från den modul som anges med name. Standardimplementeringen använder inte locals-argumentet alls och använder globals endast för att bestämma paketkontexten för
import
-satsen.level anger om absolut eller relativ import ska användas.
0
(standard) innebär att endast absolut import utförs. Positiva värden för level anger antalet överordnade kataloger som ska sökas i förhållande till katalogen för den modul som anropar__import__()
(se PEP 328 för detaljer).När variabeln name är av formen
package.module
returneras normalt paketet på högsta nivån (namnet fram till första punkten), inte den modul som namnges av name. Men när ett icke-tomt fromlist-argument anges, returneras den modul som namnges av name.Till exempel resulterar uttalandet
import spam
i bytekod som liknar följande kod:spam = __import__('spam', globals(), locals(), [], 0)
Satsen
import spam.ham
resulterar i detta anrop:spam = __import__('spam.ham', globals(), locals(), [], 0)
Observera att
__import__()
returnerar toplevel-modulen här, eftersom det är det objekt som är bundet till ett namn avimport
-satsen.Å andra sidan resulterar uttalandet
from spam.ham import eggs, sausage as saus
i_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) ägg = _temp.ägg korv = _temp.korv
Här returneras modulen
spam.ham
från__import__()
. Från detta objekt hämtas de namn som ska importeras och tilldelas sina respektive namn.Om du bara vill importera en modul (eventuellt inom ett paket) med namn, använd
importlib.import_module()
.Ändrad i version 3.3: Negativa värden för level stöds inte längre (vilket också innebär att standardvärdet ändras till 0).
Ändrad i version 3.9: När kommandoradsalternativen
-E
eller-I
används, ignoreras nu miljövariabelnPYTHONCASEOK
.
Fotnoter