Anda di halaman 1dari 93

Built-in Types (Tipe Bawaan)

Bagian berikut menjelaskan tipe standar yang dibangun ke dalam interpreter.

Tipe bawaan utama adalah numerik, urutan, pemetaan, kelas, instance, dan pengecualian.

Beberapa kelas koleksi bisa berubah. Metode yang menambah, mengurangi, atau mengatur ulang
anggotanya di tempatnya, dan tidak mengembalikan item tertentu, tidak pernah mengembalikan
instance koleksi itu sendiri tetapi None.

Beberapa operasi didukung oleh beberapa tipe objek; secara khusus, hampir semua objek dapat
dibandingkan untuk kesetaraan, diuji nilai kebenarannya, dan diubah menjadi string (dengan repr()fungsi
atau fungsi yang sedikit berbeda str()). Fungsi terakhir secara implisit digunakan ketika sebuah objek
ditulis oleh print()fungsi tersebut.

Kebenaran Nilai Pengujian


Objek apa pun dapat diuji nilai kebenarannya, untuk digunakan dalam suatu ifatau whilekondisi atau
sebagai operan dari operasi Boolean di bawah ini.

Secara default, sebuah objek dianggap benar kecuali kelasnya mendefinisikan __bool__()metode yang
mengembalikan Falseatau __len__()metode yang mengembalikan nol, saat dipanggil dengan
objek. 1 Berikut adalah sebagian besar objek bawaan yang dianggap salah:

 konstanta yang didefinisikan salah: Nonedan False.


 nol dari semua jenis numerik: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
 barisan dan koleksi kosong: '', (), [], {}, set(), range(0)

Operasi dan fungsi bawaan yang memiliki hasil Boolean selalu mengembalikan 0 atau Falsesalah
dan 1atau Truebenar, kecuali dinyatakan lain. (Pengecualian penting: operasi Boolean ordan andselalu
mengembalikan salah satu operan mereka.)

Boolean Operasi - and, or, not


Ini adalah operasi Boolean, diurutkan berdasarkan prioritas menaik:

Operasi Hasil Catatan


x or y jika x salah, maka y , else x (1)

x and y jika x salah, maka x , jika tidak y (2)

not x jika x salah, maka True, elseFalse (3)


Catatan:

1. Ini adalah operator hubung singkat, sehingga hanya mengevaluasi argumen kedua jika yang
pertama salah.
2. Ini adalah operator hubung singkat, sehingga hanya mengevaluasi argumen kedua jika yang
pertama benar.
3. notmemiliki prioritas lebih rendah daripada operator non-Boolean, sehingga ditafsirkan sebagai ,
dan merupakan kesalahan sintaksis.not a == bnot (a == b)a == not b

perbandingan
Ada delapan operasi perbandingan di Python. Mereka semua memiliki prioritas yang sama (yang lebih
tinggi dari operasi Boolean). Perbandingan dapat dirantai secara sewenang-wenang; misalnya, setara
dengan , kecuali bahwa y dievaluasi hanya sekali (tetapi dalam kedua kasus z tidak dievaluasi sama
sekali ketika ditemukan salah).x < y <= zx < y and y <= zx < y

Tabel ini merangkum operasi perbandingan:

Operasi Berarti

< benar-benar kurang dari

<= kurang dari atau sama

> benar-benar lebih besar dari

>= lebih besar dari atau sama

== sama

!= tidak sama

is identitas objek

is not identitas objek yang dinegasikan

Objek dari tipe yang berbeda, kecuali tipe numerik yang berbeda, tidak pernah membandingkan
sama. The ==operator selalu didefinisikan tetapi untuk beberapa jenis objek (misalnya, objek kelas)
setara dengan is. Operator <, <=, >dan >= hanya didefinisikan di tempat yang masuk akal; misalnya,
mereka memunculkan TypeErrorpengecualian ketika salah satu argumen adalah bilangan kompleks.

Instance non-identik dari suatu kelas biasanya dibandingkan sebagai tidak sama kecuali kelas tersebut
mendefinisikan __eq__()metode.

Instance dari suatu kelas tidak dapat diurutkan sehubungan dengan instance lain dari kelas yang sama,
atau jenis objek lainnya, kecuali jika kelas tersebut cukup mendefinisikan
metode __lt__(), __le__(), __gt__(), dan __ge__()(secara umum, __lt__()dan __eq__()cukup, jika Anda
menginginkan makna konvensional dari operator pembanding).

Perilaku isdan operator tidak dapat disesuaikan; juga mereka dapat diterapkan ke dua objek apa pun
dan tidak pernah memunculkan pengecualian.is not

Dua operasi lagi dengan prioritas sintaksis yang sama, indan , didukung oleh tipe yang
dapat diubah atau diimplementasikan metodenya.not in__contains__()

Jenis numerik - int, float, complex


Ada tiga jenis numerik yang berbeda: bilangan bulat , bilangan floating point , dan bilangan
kompleks . Selain itu, Boolean adalah subtipe bilangan bulat. Bilangan bulat memiliki presisi tak
terbatas. Angka floating point biasanya diimplementasikan menggunakan doubledi C; informasi tentang
presisi dan representasi internal angka floating point untuk mesin tempat program Anda berjalan
tersedia di sys.float_info. Bilangan kompleks memiliki bagian real dan imajiner, yang masing-masing
merupakan bilangan floating point. Untuk mengekstrak bagian ini dari bilangan kompleks z ,
gunakan z.realdan z.imag. (Perpustakaan standar menyertakan tipe numerik tambahan fractions.Fraction,
untuk rasional, dandecimal.Decimal, untuk bilangan floating-point dengan presisi yang dapat ditentukan
pengguna.)

Angka dibuat oleh literal numerik atau sebagai hasil dari fungsi dan operator bawaan. Literal bilangan
bulat tanpa hiasan (termasuk bilangan hex, oktal dan biner) menghasilkan bilangan bulat. Literal
numerik yang mengandung titik desimal atau tanda eksponen menghasilkan angka titik
mengambang. Menambahkan 'j'atau 'J'ke literal numerik menghasilkan bilangan imajiner (bilangan
kompleks dengan bagian real nol) yang dapat Anda tambahkan ke bilangan bulat atau float untuk
mendapatkan bilangan kompleks dengan bagian real dan imajiner.

Python sepenuhnya mendukung aritmatika campuran: ketika operator aritmatika biner memiliki operan
dari tipe numerik yang berbeda, operan dengan tipe "lebih sempit" melebar ke yang lain, di mana integer
lebih sempit daripada floating point, yang lebih sempit daripada kompleks. Perbandingan antara
sejumlah jenis yang berbeda berperilaku seolah-olah nilai yang tepat dari angka-angka itu sedang
dibandingkan. 2

Konstruktor int(), float(), dan complex()dapat digunakan untuk menghasilkan angka dari tipe tertentu.

Semua tipe numerik (kecuali kompleks) mendukung operasi berikut (untuk prioritas operasi, lihat
Prioritas operator ):

Dokumentasi
Operasi Hasil Catatan
lengkap

x + y jumlah x dan y

x - y selisih x dan y
Dokumentasi
Operasi Hasil Catatan
lengkap

x * y hasil kali x dan y

x / y hasil bagi x dan y

x // y hasil bagi berlantai dari x dan y (1)

x % y sisa dari x / y (2)

-x x dinegasikan

+x x tidak berubah

abs(x) nilai mutlak atau besaran x abs()

int(x) x diubah menjadi bilangan bulat (3)(6) int()

float(x) x dikonversi ke floating point (4)(6) float()

bilangan kompleks dengan bagian real re , bagian


complex(re, im) (6) complex()
imajiner im . saya default ke nol.

c.conjugate() konjugasi bilangan kompleks c

divmod(x, y) pasangan (x // y, x % y) (2) divmod()

pow(x, y) x pangkat y (5) pow()

x ** y x pangkat y (5)

Catatan:

1. Disebut juga sebagai pembagian bilangan bulat. Nilai yang dihasilkan adalah bilangan bulat utuh,
meskipun tipe hasil belum tentu int. Hasilnya selalu dibulatkan ke arah minus tak
terhingga: 1//2adalah 0, (-1)//2adalah -1, 1//(-2)adalah -1, dan (-1)//(-2)adalah 0.
2. Bukan untuk bilangan kompleks. Alih-alih, konversikan ke pelampung menggunakan abs()jika
sesuai.
3. Konversi dari floating point ke integer dapat membulatkan atau memotong seperti pada C; lihat
fungsi math.floor()dan math.ceil()untuk konversi yang terdefinisi dengan baik.
4. float juga menerima string "nan" dan "inf" dengan awalan opsional "+" atau "-" untuk Not a
Number (NaN) dan infinity positif atau negatif.
5. Python mendefinisikan dan menjadi , seperti yang umum untuk bahasa
pemrograman.pow(0, 0)0 ** 01
6. Literal numerik diterima meliputi digit 0ke 9atau setara Unicode (kode poin dengan Ndproperti).

Lihat https://www.unicode.org/Public/13.0.0/ucd/extracted/DerivedNumericType.txt untuk daftar


lengkap poin kode dengan Ndproperti.
Semua numbers.Realjenis ( intdan float) juga mencakup operasi berikut:

Operasi Hasil

math.trunc(x) x dipotong menjadiIntegral

x dibulatkan menjadi n angka, dibulatkan setengah menjadi genap. Jika n dihilangkan, defaultnya
round(x[, n])
adalah 0.

math.floor(x) terbesar Integral <= x

math.ceil(x) terkecil Integral>= x

Untuk operasi numerik tambahan, lihat modul mathand cmath.

Bitwise Operasi pada Jenis Integer

Operasi bitwise hanya masuk akal untuk bilangan bulat. Hasil operasi bitwise dihitung seolah-olah
dilakukan dalam dua komplemen dengan jumlah bit tanda yang tak terbatas.

Prioritas operasi bitwise biner semuanya lebih rendah dari operasi numerik dan lebih tinggi dari
perbandingan; operasi unary ~memiliki prioritas yang sama dengan operasi numerik unary lainnya
( +dan -).

Tabel ini mencantumkan operasi bitwise yang diurutkan dalam prioritas menaik:

Operasi Hasil Catatan


x | y bitwise atau dari x dan y (4)

x ^ y bitwise eksklusif atau dari x dan y (4)

x & y bitwise dan dari x dan y (4)

x << n x digeser ke kiri sebanyak n bit (1)(2)

x >> n x digeser ke kanan sebesar n bit (1)(3)

~x bit dari x terbalik

Catatan:

1. Hitungan shift negatif adalah ilegal dan menyebabkan a ValueErrordinaikkan.


2. Pergeseran ke kiri sebesar n bit sama dengan perkalian dengan .pow(2, n)
3. Pergeseran ke kanan sebesar n bit setara dengan pembagian lantai dengan .pow(2, n)
4. Melakukan perhitungan ini dengan setidaknya satu bit ekstensi tanda tambahan dalam
representasi komplemen dua yang terbatas (lebar bit yang berfungsi atau lebih) sudah cukup
untuk mendapatkan hasil yang sama seolah-olah ada jumlah bit tanda yang tidak
terbatas.1 + max(x.bit_length(), y.bit_length())
Metode tambahan tentang Jenis Integer

Tipe int mengimplementasikan kelas dasar abstrak . Selain itu, ini menyediakan beberapa metode
lagi:numbers.Integral

int.bit_length( )

Kembalikan jumlah bit yang diperlukan untuk mewakili bilangan bulat dalam biner, tidak termasuk
tanda dan nol di depan:

>>>

>>> n = -37
>>> bin(n)
'-0b100101'
>>> n.bit_length()
6

Lebih tepatnya, jika xbukan nol, maka x.bit_length()adalah bilangan bulat positif
unik ksehingga . Setara, ketika cukup kecil untuk memiliki logaritma yang dibulatkan dengan
benar, maka . Jika nol, maka kembali .2**(k-
1) <= abs(x) < 2**kabs(x)k = 1 + int(log(abs(x), 2))xx.bit_length()0

Setara dengan:

def bit_length(self):
s = bin(self) # binary representation: bin(-37) --> '-0b100101'
s = s.lstrip('-0b') # remove leading zeros and minus sign
return len(s) # len('100101') --> 6

Baru di versi 3.1.

int.to_bytes( Panjang , byteorder , * , ditandatangani = False )

Kembalikan array byte yang mewakili bilangan bulat.

>>>

>>> (1024).to_bytes(2, byteorder='big')


b'\x04\x00'
>>> (1024).to_bytes(10, byteorder='big')
b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'
>>> (-1024).to_bytes(10, byteorder='big', signed=True)
b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'
>>> x = 1000
>>> x.to_bytes((x.bit_length() + 7) // 8, byteorder='little')
b'\xe8\x03'

Integer diwakili menggunakan byte panjang . An OverflowError dinaikkan jika bilangan bulat tidak
dapat direpresentasikan dengan jumlah byte yang diberikan.

The byteorder argumen menentukan urutan byte yang digunakan untuk mewakili
integer. Jika byteorder adalah "big", byte paling signifikan berada di awal array
byte. Jika byteorder adalah "little", byte paling signifikan berada di akhir array byte. Untuk
meminta urutan byte asli dari sistem host, gunakan sys.byteordersebagai nilai urutan byte.

The menandatangani Argumen menentukan apakah dua komplemen digunakan untuk mewakili
integer. Jika ditandatangani adalah Falsedan bilangan bulat negatif diberikan,
an OverflowErrordinaikkan. Nilai default untuk ditandatangani adalah False.

Baru di versi 3.2.

classmethod int.from_bytes( bytes , byteorder , * , ditandatangani = False )

Kembalikan bilangan bulat yang diwakili oleh larik byte yang diberikan.

>>>

>>> int.from_bytes(b'\x00\x10', byteorder='big')


16
>>> int.from_bytes(b'\x00\x10', byteorder='little')
4096
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)
-1024
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False)
64512
>>> int.from_bytes([255, 0, 0], byteorder='big')
16711680

Bytes argumen harus berupa objek seperti byte atau byte penghasil yang dapat diubah.

The byteorder argumen menentukan urutan byte yang digunakan untuk mewakili
integer. Jika byteorder adalah "big", byte paling signifikan berada di awal array
byte. Jika byteorder adalah "little", byte paling signifikan berada di akhir array byte. Untuk
meminta urutan byte asli dari sistem host, gunakan sys.byteordersebagai nilai urutan byte.

The menandatangani Argumen menunjukkan apakah dua komplemen digunakan untuk mewakili
integer.
Baru di versi 3.2.

int.as_integer_ratio( )

Kembalikan sepasang bilangan bulat yang rasionya sama persis dengan bilangan bulat asli dan
dengan penyebut positif. Rasio bilangan bulat bilangan bulat (bilangan bulat) selalu bilangan
bulat sebagai pembilang dan 1sebagai penyebut.

Baru di versi 3.8.

Metode tambahan pada Lampung

Tipe float mengimplementasikan kelas dasar abstrak . float juga memiliki metode tambahan
berikut.numbers.Real

float.as_integer_ratio( )

Kembalikan sepasang bilangan bulat yang rasionya sama persis dengan float asli dan dengan
penyebut positif. Meningkatkan pada tak terhingga OverflowErrordan ValueErrorpada NaNs.

float.is_integer( )

Kembalikan Truejika instance float terbatas dengan nilai integral, dan Falsesebaliknya:

>>>

>>> (-2.0).is_integer()
True
>>> (3.2).is_integer()
False

Dua metode mendukung konversi ke dan dari string heksadesimal. Karena float Python disimpan
secara internal sebagai angka biner, mengonversi float ke atau dari string desimal biasanya
melibatkan kesalahan pembulatan kecil. Sebaliknya, string heksadesimal memungkinkan
representasi dan spesifikasi angka floating-point yang tepat. Ini dapat berguna saat debugging,
dan dalam pekerjaan numerik.

float.hex( )

Mengembalikan representasi angka floating-point sebagai string heksadesimal. Untuk bilangan


floating-point berhingga, representasi ini akan selalu menyertakan awalan 0xdan akhiran pdan
eksponen.

classmethod float.fromhex( s )
Metode kelas untuk mengembalikan float yang diwakili oleh string
heksadesimal s . String s mungkin memiliki spasi putih awal dan akhir.

Perhatikan bahwa itu float.hex()adalah metode instan, sedangkan float.fromhex()adalah metode kelas.

Sebuah string heksadesimal mengambil bentuk:

[sign] ['0x'] integer ['.' fraction] ['p' exponent]

di mana opsional signdapat dengan salah satu +atau -, integer dan fractionadalah string digit
heksadesimal, dan exponent merupakan bilangan bulat desimal dengan tanda depan opsional. Kasus
tidak signifikan, dan harus ada setidaknya satu digit heksadesimal baik dalam bilangan bulat atau
pecahan. Sintaks ini mirip dengan sintaks yang ditentukan di bagian 6.4.4.2 dari standar C99, dan juga
dengan sintaks yang digunakan di Java 1.5 dan seterusnya. Secara khusus, output dari float.hex()dapat
digunakan sebagai literal floating-point heksadesimal dalam kode C atau Java, dan string heksadesimal
yang dihasilkan oleh %akarakter format C atau Java Double.toHexStringditerima oleh float.fromhex().

Perhatikan bahwa eksponen ditulis dalam desimal daripada heksadesimal, dan eksponen memberikan
kekuatan 2 untuk mengalikan koefisien. Misalnya, string heksadesimal 0x3.a7p10mewakili angka titik-
mengambang , atau :(3 + 10./16 + 7./16**2) * 2.0**103740.0

>>>

>>> float.fromhex('0x3.a7p10')
3740.0

Menerapkan konversi terbalik untuk 3740.0memberikan string heksadesimal berbeda yang mewakili
nomor yang sama:

>>>

>>> float.hex(3740.0)
'0x1.d380000000000p+11'

Hashing jenis numerik

Untuk angka xdan y, mungkin dari jenis yang berbeda, itu adalah persyaratan kapan
saja (lihat dokumentasi metode untuk lebih jelasnya). Untuk kemudahan implementasi dan efisiensi di
berbagai tipe numerik (termasuk , , dan ) hash Python untuk tipe numerik didasarkan pada fungsi
matematika tunggal yang didefinisikan untuk bilangan rasional apa pun, dan karenanya berlaku untuk
semua instance dan , dan semua instance terbatas dari dan . Pada dasarnya, fungsi ini diberikan oleh
modulo reduksi untuk bilangan prima tetap . Nilai dari tersedia untuk Python sebagai atribut
dari .hash(x) == hash(y)x == y__hash__()intfloatdecimal.Decimalfractions.Fractionintfractions.Fractionfloatdecima
l.DecimalPPPmodulussys.hash_info
Detail implementasi CPython: Saat ini, prime yang digunakan adalah pada mesin dengan long C 32-
bit dan pada mesin dengan long C 64-bit.P = 2**31 - 1P = 2**61 - 1

Berikut aturannya secara detail:

 Jika adalah bilangan rasional nonnegatif dan tidak habis dibagi , Didefinisikan sebagai ,
Dimana memberikan invers
dari modulo .x = m / nnPhash(x)m * invmod(n, P) % Pinvmod(n, P)nP
 Jika adalah bilangan rasional nonnegatif dan habis dibagi (tetapi tidak) maka tidak memiliki
modulo invers dan aturan di atas tidak berlaku; dalam hal ini mendefinisikan menjadi nilai
konstan .x = m / nnPmnPhash(x)sys.hash_info.inf
 Jika adalah bilangan rasional negatif didefinisikan sebagai . Jika hash yang dihasilkan adalah ,
ganti dengan .x = m / nhash(x)-hash(-x)-1-2
 Nilai tertentu sys.hash_info.inf, -sys.hash_info.inf dan sys.hash_info.nandigunakan sebagai nilai hash
untuk infinity positif, infinity negatif, atau nans (masing-masing). (Semua nan hashable memiliki
nilai hash yang sama.)
 Untuk suatu complexbilangan z, nilai hash dari bagian real dan imajiner digabungkan dengan
komputasi , dikurangi modulo sehingga terletak di . Sekali lagi, jika hasilnya , diganti
dengan .hash(z.real) + sys.hash_info.imag * hash(z.imag)2**sys.hash_info.widthrange(-
2**(sys.hash_info.width - 1), 2**(sys.hash_info.width - 1))-1-2

Untuk memperjelas aturan di atas, berikut beberapa contoh kode Python, setara dengan hash bawaan,
untuk menghitung hash dari bilangan rasional, float, atau complex:

import sys, math

def hash_fraction(m, n):


"""Compute the hash of a rational number m / n.

Assumes m and n are integers, with n positive.


Equivalent to hash(fractions.Fraction(m, n)).

"""
P = sys.hash_info.modulus
# Remove common factors of P. (Unnecessary if m and n already coprime.)
while m % P == n % P == 0:
m, n = m // P, n // P

if n % P == 0:
hash_value = sys.hash_info.inf
else:
# Fermat's Little Theorem: pow(n, P-1, P) is 1, so

# pow(n, P-2, P) gives the inverse of n modulo P.


hash_value = (abs(m) % P) * pow(n, P - 2, P) % P
if m < 0:
hash_value = -hash_value
if hash_value == -1:
hash_value = -2
return hash_value

def hash_float(x):
"""Compute the hash of a float x."""

if math.isnan(x):
return sys.hash_info.nan
elif math.isinf(x):
return sys.hash_info.inf if x > 0 else -sys.hash_info.inf
else:
return hash_fraction(*x.as_integer_ratio())

def hash_complex(z):
"""Compute the hash of a complex number z."""

hash_value = hash_float(z.real) + sys.hash_info.imag * hash_float(z.imag)


# do a signed reduction modulo 2**sys.hash_info.width
M = 2**(sys.hash_info.width - 1)
hash_value = (hash_value & (M - 1)) - (hash_value & M)
if hash_value == -1:
hash_value = -2
return hash_value

Jenis Iterator
Python mendukung konsep iterasi di atas wadah. Ini diimplementasikan dengan menggunakan dua
metode berbeda; ini digunakan untuk memungkinkan kelas yang ditentukan pengguna untuk
mendukung iterasi. Urutan, dijelaskan di bawah ini secara lebih rinci, selalu mendukung metode iterasi.

Satu metode perlu didefinisikan untuk objek kontainer untuk memberikan dukungan iterasi:

container.__iter__( )

Kembalikan objek iterator. Objek diperlukan untuk mendukung protokol iterator yang dijelaskan di
bawah ini. Jika wadah mendukung berbagai jenis iterasi, metode tambahan dapat disediakan
untuk secara khusus meminta iterator untuk jenis iterasi tersebut. (Contoh objek yang
mendukung berbagai bentuk iterasi adalah struktur pohon yang mendukung traversal pertama
dan kedalaman pertama.) Metode ini sesuai dengan tp_iterslot struktur tipe untuk objek Python di
API Python/C.

Objek iterator itu sendiri diperlukan untuk mendukung dua metode berikut, yang bersama-sama
membentuk protokol iterator :

iterator.__iter__( )
Kembalikan objek iterator itu sendiri. Ini diperlukan untuk memungkinkan wadah dan iterator
digunakan dengan pernyataan forand in. Metode ini sesuai dengan tp_iterslot struktur tipe untuk
objek Python di API Python/C.

iterator.__next__( )

Kembalikan item berikutnya dari wadah. Jika tidak ada item lebih lanjut,
naikkan StopIterationpengecualian. Metode ini sesuai dengan tp_iternextslot struktur tipe untuk
objek Python di API Python/C.

Python mendefinisikan beberapa objek iterator untuk mendukung iterasi pada jenis urutan umum dan
khusus, kamus, dan bentuk lain yang lebih khusus. Tipe spesifik tidak penting di luar implementasi
protokol iteratornya.

Setelah metode iterator __next__()memunculkan StopIteration, ia harus terus melakukannya pada


panggilan berikutnya. Implementasi yang tidak mematuhi properti ini dianggap rusak.

Jenis Generator

Generator Python menyediakan cara mudah untuk mengimplementasikan protokol


iterator. Jika __iter__()metode objek container diimplementasikan sebagai generator, maka secara
otomatis akan mengembalikan objek iterator (secara teknis, objek generator) yang
memasok metode __iter__()and __next__(). Informasi lebih lanjut tentang generator dapat ditemukan
di dokumentasi untuk ekspresi hasil .

Jenis urut - list, tuple, range


Ada tiga jenis urutan dasar: daftar, tupel, dan objek jangkauan. Jenis urutan tambahan yang disesuaikan
untuk pemrosesan data biner dan string teks dijelaskan di bagian khusus.

Umum Urutan Operasi

Operasi dalam tabel berikut didukung oleh sebagian besar jenis urutan, baik yang dapat diubah maupun
yang tidak dapat diubah. The collections.abc.SequenceABC disediakan untuk membuatnya lebih mudah
untuk benar menerapkan operasi ini pada urutan kustom jenis.

Tabel ini mencantumkan operasi urutan yang diurutkan dalam prioritas menaik. Dalam
tabel, s dan t adalah barisan dengan tipe yang sama, n , i , j dan k adalah bilangan bulat dan x adalah
objek arbitrer yang memenuhi semua jenis dan batasan nilai yang diberlakukan oleh s .

The indan operasi memiliki prioritas yang sama dengan perbandingan operasi. Operasi (penggabungan)
dan (pengulangan) memiliki prioritas yang sama dengan operasi numerik yang sesuai. 3not in+*

Operasi Hasil Catatan


Operasi Hasil Catatan

x in s Truejika item dari s sama dengan x , elseFalse (1)

x not in s Falsejika item dari s sama dengan x , elseTrue (1)

s + t penggabungan s dan t (6)(7)

s * n atau n * s setara dengan menambahkan s ke dirinya sendiri n kali (2)(7)

s[i] item ke- i dari s , asal 0 (3)

s[i:j] potongan s dari i ke j (3)(4)

s[i:j:k] irisan s dari i ke j dengan langkah k (3)(5)

len(s) panjang s

min(s) item terkecil dari s

max(s) item terbesar dari s

indeks kemunculan pertama x dalam s (pada atau setelah indeks i dan


s.index(x[, i[, j]]) (8)
sebelum indeks j )

s.count(x) jumlah kemunculan x dalam s

Urutan dari jenis yang sama juga mendukung perbandingan. Secara khusus, tupel dan daftar
dibandingkan secara leksikografis dengan membandingkan elemen yang sesuai. Artinya, untuk
membandingkan sama, setiap elemen harus membandingkan sama dan kedua barisan harus berjenis
sama dan memiliki panjang yang sama. (Untuk detail lengkap lihat Perbandingan dalam referensi
bahasa.)

Catatan:

1. Sementara operasi inand hanya digunakan untuk pengujian penahanan sederhana dalam kasus
umum, beberapa urutan khusus (seperti , dan ) juga menggunakannya untuk pengujian
berikutnya:not instrbytesbytearray

>>>

>>> "gg" in "eggs"


True

2. Nilai n kurang dari 0diperlakukan sebagai 0(yang menghasilkan urutan kosong dari jenis yang
sama dengan s ). Perhatikan bahwa item dalam urutan s tidak disalin; mereka dirujuk beberapa
kali. Ini sering menghantui programmer Python baru; mempertimbangkan:
>>>

>>> lists = [[]] * 3


>>> lists
[[], [], []]
>>> lists[0].append(3)
>>> lists
[[3], [3], [3]]

3. Apa yang terjadi adalah [[]]daftar satu elemen yang berisi daftar kosong, jadi ketiga
elemen adalah referensi ke daftar kosong tunggal ini. Memodifikasi salah satu
elemen memodifikasi daftar tunggal ini. Anda dapat membuat daftar daftar yang berbeda dengan
cara ini:[[]] * 3lists

>>>

>>> lists = [[] for i in range(3)]


>>> lists[0].append(3)
>>> lists[1].append(5)
>>> lists[2].append(7)
>>> lists
[[3], [5], [7]]

Penjelasan lebih lanjut tersedia di entri FAQ Bagaimana cara membuat daftar multidimensi? .
1. Jika i atau j negatif, indeks relatif terhadap akhirderet s : atau tersubstitusi. Tapi perhatikan
bahwa masih .len(s) + ilen(s) + j-00
2. Irisan s dari i ke j didefinisikan sebagai urutan item dengan indeks k sedemikian rupa
sehingga . Jika i atau j lebih besar dari , gunakan . Jika saya dihilangkan atau ,
gunakan . Jika j dihilangkan atau , gunakan . Jika i lebih besar dari atau sama dengan j , irisan
kosong.i <= k < jlen(s)len(s)None0Nonelen(s)
3. Irisan s dari i ke j dengan langkah k didefinisikan sebagai urutan item dengan indeks sedemikian
rupa sehingga . Dengan kata lain, indeks adalah , , , dan seterusnya, berhenti ketika j tercapai
(tetapi tidak pernah termasuk j ). Ketika k positif, i dan j direduksi menjadi jika lebih
besar. Ketika k negatif, i dan j direduksi menjadi jika lebih besar. Jika i atau j dihilangkan
ataux = i + n*k0 <= n < (j-i)/kii+ki+2*ki+3*klen(s)len(s) - 1None, mereka menjadi nilai "akhir"
(yang ujungnya tergantung pada tanda k ). Catatan, k tidak boleh nol. Jika k adalah None, itu
diperlakukan seperti 1.
4. Menggabungkan urutan yang tidak dapat diubah selalu menghasilkan objek baru. Ini berarti
bahwa membangun urutan dengan penggabungan berulang akan memiliki biaya runtime kuadrat
dalam total panjang urutan. Untuk mendapatkan biaya runtime linier, Anda harus beralih ke salah
satu alternatif di bawah ini:

a) jika menggabungkan strobjek, Anda dapat membuat daftar dan menggunakan str.join()di
akhir atau menulis ke io.StringIO instance dan mengambil nilainya saat selesai
b) jika menggabungkan bytesobjek, Anda juga dapat menggunakan bytes.join()or io.BytesIO, atau
Anda dapat melakukan penggabungan di tempat dengan bytearrayobjek. bytearray objek bisa
berubah dan memiliki mekanisme alokasi berlebih yang efisien
c) jika menggabungkan tupleobjek, perpanjang a listsebagai gantinya
d) untuk tipe lain, selidiki dokumentasi kelas yang relevan
5. Beberapa jenis urutan (seperti range) hanya mendukung urutan item yang mengikuti pola tertentu,
dan karenanya tidak mendukung rangkaian atau pengulangan urutan.
6. indexmeningkat ValueErrorketika x tidak ditemukan di s . Tidak semua implementasi mendukung
melewati argumen tambahan i dan j . Argumen ini memungkinkan pencarian subbagian dari
urutan yang efisien. Melewati argumen tambahan kira-kira setara dengan
menggunakan s[i:j].index(x), hanya tanpa menyalin data apa pun dan dengan indeks yang
dikembalikan relatif terhadap awal urutan daripada awal irisan.
Jenis Urutan yang Tidak Dapat

Satu-satunya operasi yang umumnya diimplementasikan oleh tipe urutan yang tidak dapat diubah yang
tidak juga diimplementasikan oleh tipe urutan yang dapat diubah adalah dukungan untuk hash() built-in.

Dukungan ini memungkinkan urutan yang tidak dapat diubah, seperti tupleinstans, untuk digunakan
sebagai dictkunci dan disimpan di dalam setdan frozenset instans.

Mencoba hash urutan abadi yang berisi nilai-nilai unhashable akan menghasilkan TypeError.

Jenis Urutan bisa berubah

Operasi dalam tabel berikut didefinisikan pada tipe urutan yang dapat
diubah. The collections.abc.MutableSequenceABC disediakan untuk membuatnya lebih mudah untuk benar
menerapkan operasi ini pada urutan kustom jenis.

Dalam tabel s adalah turunan dari tipe urutan yang dapat diubah, t adalah objek yang dapat
diubah dan x adalah objek arbitrer yang memenuhi batasan tipe dan nilai apa pun yang dikenakan
oleh s (misalnya, bytearrayhanya menerima bilangan bulat yang memenuhi batasan
nilai ).0 <= x <= 255

Operasi Hasil Catatan

s[i] = x item i dari s diganti dengan x

s[i:j] = t irisan s dari i ke j diganti dengan isi iterable t

del s[i:j] sama dengan s[i:j] = []

s[i:j:k] = t unsur-unsurnya s[i:j:k] diganti dengan unsur-unsur t (1)

del s[i:j:k] menghapus elemen dari s[i:j:k]daftar

s.append(x) menambahkan x ke akhir urutan (sama dengan )s[len(s):len(s)] = [x]


Operasi Hasil Catatan

s.clear() menghapus semua item dari s (sama seperti )del s[:] (5)

s.copy() membuat salinan dangkal s (sama dengan s[:]) (5)

s.extend(t) atau s += t meluas s dengan isi t (sebagian besar sama dengan )s[len(s):len(s)] = t

s *= n memperbarui s dengan isinya berulang n kali (6)

menyisipkan x ke s pada indeks yang diberikan oleh i (sama


s.insert(i, x)
seperti )s[i:i] = [x]

s.pop([i]) mengambil item di i dan juga menghapusnya dari s (2)

s.remove(x) hapus item pertama dari s di mana s[i]sama dengan x (3)

s.reverse() membalikkan item s di tempat (4)

Catatan:

 t harus memiliki panjang yang sama dengan irisan yang diganti.


 Argumen opsional i default ke -1, sehingga secara default item terakhir dihapus dan
dikembalikan.
 remove()meningkat ValueErrorketika x tidak ditemukan di s .
 The reverse()Metode memodifikasi urutan di tempat bagi perekonomian ruang ketika membalikkan
urutan besar. Untuk mengingatkan pengguna bahwa itu beroperasi dengan efek samping, itu
tidak mengembalikan urutan terbalik.
 clear()dan copy()disertakan untuk konsistensi dengan antarmuka wadah yang bisa berubah yang
tidak mendukung operasi pemotongan (seperti dictdan set). copy()bukan bagian
dari collections.abc.MutableSequenceABC, tetapi sebagian besar kelas urutan yang dapat diubah
menyediakannya.
 Baru di versi 3.3:clear() dan copy()metode.
 Nilai n adalah bilangan bulat, atau objek yang mengimplementasikan __index__(). Nilai nol dan
negatif dari n menghapus urutan. Item dalam urutan tidak disalin; mereka direferensikan
beberapa kali, seperti yang dijelaskan di bawah Operasi Urutan Umum .s * n
list

list (Daftar) adalah urutan yang dapat diubah, biasanya digunakan untuk menyimpan koleksi item
homogen (di mana tingkat kesamaan yang tepat akan bervariasi berdasarkan aplikasi).

kelas list( [ iterable ] )

Daftar dapat dibuat dengan beberapa cara:

 Menggunakan sepasang tanda kurung siku untuk menunjukkan daftar kosong: []


 Menggunakan tanda kurung siku, pisahkan item dengan koma: [a],[a, b, c]
 Menggunakan pemahaman daftar: [x for x in iterable]
 Menggunakan konstruktor tipe: list()orlist(iterable)

Konstruktor membuat daftar yang itemnya sama dan dalam urutan yang sama
dengan item iterable . iterable dapat berupa urutan, wadah yang mendukung iterasi, atau objek
iterator. Jika iterable sudah menjadi daftar, salinan dibuat dan dikembalikan, mirip
dengan iterable[:]. Misalnya, list('abc')pengembalian dan pengembalian . Jika tidak ada argumen
yang diberikan, konstruktor membuat daftar kosong baru, .['a', 'b', 'c']list( (1, 2, 3) )[1, 2, 3][]

Banyak operasi lain juga menghasilkan daftar, termasuk sorted() built-in.

Daftar mengimplementasikan semua operasi urutan yang umum dan dapat diubah . Daftar juga
menyediakan metode tambahan berikut:

sort( * , Kunci = Tidak , membalikkan = False )

Metode ini mengurutkan daftar di tempat, hanya menggunakan <perbandingan antar


item. Pengecualian tidak ditekan - jika ada operasi perbandingan yang gagal, seluruh operasi
pengurutan akan gagal (dan daftar kemungkinan akan dibiarkan dalam keadaan termodifikasi
sebagian).

sort()menerima dua argumen yang hanya dapat diteruskan oleh kata kunci ( argumentasi kata
kunci saja ):

key menentukan fungsi dari satu argumen yang digunakan untuk mengekstrak kunci
perbandingan dari setiap elemen daftar (misalnya, key=str.lower). Kunci yang terkait dengan setiap
item dalam daftar dihitung sekali dan kemudian digunakan untuk seluruh proses penyortiran. Nilai
default None berarti bahwa item daftar diurutkan secara langsung tanpa menghitung nilai kunci
yang terpisah.

The functools.cmp_to_key()utilitas yang tersedia untuk mengkonversi gaya 2.x CMP fungsi untuk
sebuah kunci fungsi.

sebaliknya adalah nilai boolean. Jika disetel ke True, maka elemen daftar diurutkan seolah-olah
setiap perbandingan dibalik.

Metode ini memodifikasi urutan di tempat untuk penghematan ruang saat menyortir urutan
besar. Untuk mengingatkan pengguna bahwa itu beroperasi dengan efek samping, itu tidak
mengembalikan urutan yang diurutkan (gunakan sorted()untuk secara eksplisit meminta contoh
daftar baru yang diurutkan).

The sort()Metode dijamin akan stabil. Penyortiran stabil jika menjamin untuk tidak mengubah
urutan relatif elemen yang membandingkan sama — ini berguna untuk menyortir dalam beberapa
lintasan (misalnya, mengurutkan berdasarkan departemen, lalu berdasarkan tingkat gaji).

Untuk contoh pengurutan dan tutorial penyortiran singkat, lihat CARA menyortir .
Detail implementasi CPython: Saat daftar sedang diurutkan, efek dari upaya untuk mengubah,
atau bahkan memeriksa, daftar tidak ditentukan. Implementasi C Python membuat daftar tampak
kosong selama durasi, dan muncul ValueErrorjika dapat mendeteksi bahwa daftar telah bermutasi
selama penyortiran.
tuple

Tuple adalah urutan yang tidak dapat diubah, biasanya digunakan untuk menyimpan koleksi data
heterogen (seperti 2-tupel yang dihasilkan oleh enumerate() built-in). Tuple juga digunakan untuk kasus di
mana urutan data homogen yang tidak dapat diubah diperlukan (seperti memungkinkan penyimpanan
dalam setatau dictinstance).

kelas tuple( [ iterable ] )

Tuples dapat dibangun dalam beberapa cara:

 Menggunakan sepasang tanda kurung untuk menunjukkan tupel kosong: ()


 Menggunakan tanda koma untuk tupel tunggal: a,atau(a,)
 Memisahkan item dengan koma: ora, b, c(a, b, c)
 Menggunakan tuple()bawaan: tuple()atautuple(iterable)

Konstruktor membangun tuple yang itemnya sama dan dalam urutan yang sama
dengan item iterable . iterable dapat berupa urutan, wadah yang mendukung iterasi, atau objek
iterator. Jika iterable sudah menjadi Tuple, itu dikembalikan tidak
berubah. Misalnya, tuple('abc')pengembalian dan pengembalian . Jika tidak ada argumen yang
diberikan, konstruktor membuat tupel kosong baru, .('a', 'b', 'c')tuple( [1, 2, 3] )(1, 2, 3)()

Perhatikan bahwa sebenarnya koma yang membuat Tuple, bukan tanda kurung. Tanda kurung
adalah opsional, kecuali dalam kasus tuple kosong, atau bila diperlukan untuk menghindari
ambiguitas sintaksis. Misalnya, adalah pemanggilan fungsi dengan tiga argumen,
sedangkan pemanggilan fungsi dengan tupel 3-sebagai argumen tunggal. f(a, b, c)f((a, b, c))

Tuple mengimplementasikan semua operasi urutan umum .

Untuk kumpulan data yang heterogen di mana akses berdasarkan nama lebih jelas daripada akses
berdasarkan indeks, collections.namedtuple()mungkin merupakan pilihan yang lebih tepat daripada objek
tuple sederhana.

range

The rangeTipe mewakili urutan berubah dari angka dan umumnya digunakan untuk perulangan jumlah
tertentu kali dalam for loop.

kelas range( berhenti )


kelas range( mulai , berhenti [ , langkah ] )

Argumen ke konstruktor rentang harus berupa bilangan bulat (baik built-in intatau objek apa pun
yang mengimplementasikan __index__metode khusus). Jika argumen step dihilangkan, defaultnya
adalah 1. Jika argumen start dihilangkan, defaultnya adalah 0. Jika langkah adalah
nol, ValueErrordinaikkan.

Untuk langkah positif , isi suatu range rditentukan oleh


rumus dimana dan .r[i] = start + step*ii >= 0r[i] < stop

Untuk langkah negatif , isi range masih ditentukan oleh rumus , tetapi kendalanya
adalah dan .r[i] = start + step*ii >= 0r[i] > stop

Objek rentang akan kosong jika r[0]tidak memenuhi batasan nilai. Rentang memang mendukung
indeks negatif, tetapi ini ditafsirkan sebagai pengindeksan dari akhir urutan yang ditentukan oleh
indeks positif.

Rentang yang berisi nilai absolut lebih besar dari sys.maxsizeyang diizinkan tetapi beberapa fitur
(seperti len()) mungkin meningkat OverflowError.

Contoh rentang:

>>>

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0))
[]
>>> list(range(1, 0))
[]

Rentang mengimplementasikan semua operasi urutan umum kecuali penggabungan dan


pengulangan (karena fakta bahwa objek rentang hanya dapat mewakili urutan yang mengikuti
pola yang ketat dan pengulangan dan penggabungan biasanya akan melanggar pola itu).

start
Nilai parameter awal (atau 0jika parameter tidak diberikan)
stop
Nilai parameter berhenti

step
Nilai parameter langkah (atau 1jika parameter tidak diberikan)

Keuntungan dari rangetipe ini daripada yang biasa listatau tupleadalah bahwa suatu rangeobjek akan
selalu mengambil jumlah memori (kecil) yang sama, tidak peduli ukuran rentang yang diwakilinya
(karena hanya menyimpan start, stopdan stepnilai, menghitung masing-masing item dan subrentang
sebagai dibutuhkan).

Objek rentang mengimplementasikan collections.abc.SequenceABC, dan menyediakan fitur seperti uji


penahanan, pencarian indeks elemen, pengirisan, dan dukungan untuk indeks negatif (lihat Jenis Urutan
— daftar, tupel, rentang ):

>>>

>>> r = range(0, 20, 2)


>>> r
range(0, 20, 2)
>>> 11 in r
False
>>> 10 in r
True
>>> r.index(10)
5
>>> r[5]
10
>>> r[:5]
range(0, 10, 2)
>>> r[-1]
18

Menguji objek rentang untuk kesetaraan dengan ==dan !=membandingkannya sebagai urutan. Artinya,
dua objek rentang dianggap sama jika mereka mewakili urutan nilai yang sama. (Perhatikan bahwa dua
objek rentang yang membandingkan sama mungkin memiliki start, stopdan stepatribut
yang berbeda , misalnya atau .)range(0) == range(2, 1, 3)range(0, 3, 2) == range(0, 4, 2)

Berubah di versi 3.2: Menerapkan Urutan ABC. Mendukung slicing dan indeks negatif. Uji intobjek untuk
keanggotaan dalam waktu yang konstan alih-alih mengulangi semua item.

Diubah di versi 3.3: Tentukan '==' dan '!=' untuk membandingkan objek rentang berdasarkan urutan nilai
yang mereka tentukan (bukan membandingkan berdasarkan identitas objek).

Baru di versi 3.3: The start, stopdan step atribut.


Lihat juga
 The linspace resep menunjukkan bagaimana menerapkan versi malas kisaran cocok untuk
floating aplikasi point.

Teks Urutan Jenis - str


Data tekstual dalam Python ditangani dengan strobjek, atau string . String adalah urutan poin kode
Unicode yang tidak dapat diubah . String literal ditulis dalam berbagai cara:

 Kutipan tunggal: 'allows embedded "double" quotes'


 Kutipan ganda: ."allows embedded 'single' quotes"
 Dikutip tiga kali: ,'''Three single quotes'''"""Three double quotes"""

String yang dikutip tiga kali dapat menjangkau beberapa baris - semua spasi terkait akan disertakan
dalam literal string.

Literal string yang merupakan bagian dari ekspresi tunggal dan hanya memiliki spasi kosong di
antaranya akan secara implisit dikonversi menjadi literal string
tunggal. Yaitu, .("spam " "eggs") == "spam eggs"

Lihat literal String dan Bytes untuk mengetahui lebih lanjut tentang berbagai bentuk literal string,
termasuk urutan escape yang didukung, dan rawalan (―raw‖) yang menonaktifkan sebagian besar
pemrosesan urutan escape.

String juga dapat dibuat dari objek lain menggunakan str konstruktor.

Karena tidak ada tipe "karakter" yang terpisah, pengindeksan string menghasilkan string dengan
panjang 1. Artinya, untuk string yang tidak kosong s , .s[0] == s[0:1]

Juga tidak ada tipe string yang dapat diubah, tetapi str.join()atau io.StringIOdapat digunakan untuk
membuat string secara efisien dari beberapa fragmen.

Diubah di versi 3.3: Untuk kompatibilitas mundur dengan seri Python 2, uawalan sekali lagi diizinkan
pada literal string. Ini tidak berpengaruh pada arti literal string dan tidak dapat digabungkan
dengan rawalan.

class str( object = '' )

kelas str( objek=b'' , encoding='utf-8' , error='strict' )

Kembalikan versi string dari objek . Jika objek tidak disediakan, kembalikan string kosong. Jika tidak,
perilaku str() tergantung pada apakah penyandian atau kesalahan diberikan, sebagai berikut.

Jika tidak ada penyandian atau kesalahan yang diberikan, str(object)kembalikan object.__str__(), yang
merupakan representasi string objek yang "informal" atau dapat dicetak dengan baik . Untuk objek
string, ini adalah string itu sendiri. Jika objek tidak memiliki __str__() metode, maka str()kembali ke
return repr(object).

Jika setidaknya satu pengkodean atau kesalahan diberikan, objek harus berupa objek seperti
byte (mis. bytesatau bytearray). Dalam hal ini, jika objek adalah objekbytes (atau bytearray), maka setara
dengan . Jika tidak, objek byte yang mendasari objek buffer diperoleh sebelum memanggil . Lihat Jenis
Urutan Biner — byte, bytearray, memoryview, dan Protokol Penyangga untuk informasi tentang objek
penyangga.str(bytes, encoding, errors)bytes.decode(encoding, errors)bytes.decode()

Melewati bytesobjek str()tanpa pengkodean atau argumen kesalahan termasuk dalam kasus pertama
mengembalikan representasi string informal (lihat juga -bopsi baris perintah ke Python). Sebagai contoh:

>>>

>>> str(b'Zoot!')
"b'Zoot!'"

Untuk informasi selengkapnya tentang strkelas dan metodenya, lihat Jenis Urutan Teks — str dan
bagian Metode String di bawah ini. Untuk menampilkan string yang diformat, lihat bagian Literal
string terformat dan Sintaks Format String . Selain itu, lihat bagian Layanan Pemrosesan Teks .

String Metode

String mengimplementasikan semua operasi urutan umum , bersama dengan metode tambahan yang
dijelaskan di bawah ini.

String juga mendukung dua gaya pemformatan string, satu memberikan tingkat fleksibilitas dan
penyesuaian yang besar (lihat str.format(), Format String Syntax dan Custom String Formatting ) dan
yang lainnya berdasarkan printfpemformatan gaya C yang menangani rentang jenis yang lebih sempit
dan sedikit lebih sulit untuk digunakan dengan benar, tetapi seringkali lebih cepat untuk kasus yang
dapat ditanganinya ( printf-style String Formatting ).

Bagian Layanan Pemrosesan Teks dari pustaka standar mencakup sejumlah modul lain yang
menyediakan berbagai utilitas terkait teks (termasuk dukungan ekspresi reguler dalam remodul).

str.capitalize( )

Kembalikan salinan string dengan huruf kapital pertama dan sisanya huruf kecil.

Berubah di versi 3.8: Karakter pertama sekarang dimasukkan ke dalam huruf besar, bukan huruf
besar. Ini berarti bahwa karakter seperti digraf hanya akan memiliki huruf pertama yang dikapitalisasi,
bukan karakter penuh.

str.casefold( )
Kembalikan salinan string yang dilipat. String casefolded dapat digunakan untuk pencocokan caseless.

Casefolding mirip dengan huruf kecil tetapi lebih agresif karena dimaksudkan untuk menghapus semua
perbedaan huruf besar/kecil dalam sebuah string. Misalnya, huruf kecil Jerman 'ß'setara
dengan "ss". Karena sudah huruf kecil, lower()tidak akan melakukan apa pun
untuk 'ß'; casefold() mengubahnya menjadi "ss".

Algoritma casefolding dijelaskan di bagian 3.13 dari Standar Unicode.

Baru di versi 3.3.

tr.center( Lebar [ , fillchar ] )

Kembali berpusat di string panjang lebar . Padding dilakukan dengan menggunakan fillchar
yang ditentukan (default adalah ruang ASCII). String asli dikembalikan jika lebarnya kurang dari atau
sama dengan len(s).

str.count( Sub [ , mulai [ , akhir ] ] )


Kembali jumlah non-tumpang tindih kejadian substring sub dalam rentang [ mulai , akhir ]. Argumen
opsional mulai dan berakhir ditafsirkan seperti dalam notasi irisan.

str.encode( Encoding = "utf-8" , kesalahan = "ketat" )

Kembalikan versi string yang disandikan sebagai objek byte. Pengkodean default adalah 'utf-
8'. kesalahan dapat diberikan untuk mengatur skema penanganan kesalahan yang berbeda. Default
untuk kesalahan adalah 'strict', yang berarti bahwa kesalahan penyandian meningkatkan
a UnicodeError. Nilai lain yang mungkin adalah 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace'dan
nama lain yang terdaftar melalui codecs.register_error(), lihat bagian Penanganan Kesalahan . Untuk daftar
kemungkinan penyandian, lihat bagian Pengodean Standar .

Secara default, argumen kesalahan tidak diperiksa untuk kinerja terbaik, tetapi hanya digunakan pada
kesalahan penyandian pertama. Aktifkan Mode Pengembangan Python , atau gunakan build debug
untuk memeriksa kesalahan .

Berubah di versi 3.1: Dukungan untuk argumen kata kunci ditambahkan.

Berubah dalam versi 3.9: The kesalahan sekarang diperiksa dalam mode pembangunan dan dalam
mode debug.

str.endswith( Akhiran [ , mulai [ , akhir ] ] )

Kembali Truejika string diakhiri dengan akhiran yang ditentukan , jika tidak
kembali False. sufiks juga bisa menjadi tupel sufiks yang harus dicari. Dengan start opsional , tes
dimulai pada posisi itu. Dengan opsional end , berhenti membandingkan pada posisi itu.
str.expandtabs( Tabsize = 8 )

Kembalikan salinan string tempat semua karakter tab diganti dengan satu spasi atau lebih,
bergantung pada kolom saat ini dan ukuran tab yang diberikan. Posisi tab terjadi
setiap karakter ukuran tab (defaultnya adalah 8, memberikan posisi tab pada kolom 0, 8, 16 dan
seterusnya). Untuk memperluas string, kolom saat ini disetel ke nol dan string diperiksa karakter
demi karakter. Jika karakternya adalah tab ( \t), satu atau lebih karakter spasi dimasukkan ke
dalam hasil hingga kolom saat ini sama dengan posisi tab berikutnya. (Karakter tab itu sendiri
tidak disalin.) Jika karakternya adalah baris baru ( \n) atau kembali (\r), itu disalin dan kolom saat
ini diatur ulang ke nol. Setiap karakter lain disalin tidak berubah dan kolom saat ini bertambah
satu terlepas dari bagaimana karakter diwakili saat dicetak.

>>>

>>> '01\t012\t0123\t01234'.expandtabs()
'01 012 0123 01234'
>>> '01\t012\t0123\t01234'.expandtabs(4)
'01 012 0123 01234'
str.find( Sub [ , mulai [ , akhir ] ] )
Kembali indeks terendah dalam string mana substring sub ditemukan dalam
potongan s[start:end]. Argumen opsional mulai dan berakhir ditafsirkan seperti dalam notasi
irisan. Kembali -1jika sub tidak ditemukan.

Catatan : The find() metode harus digunakan hanya jika Anda perlu tahu posisi sub . Untuk
memeriksa apakah sub adalah substring atau bukan, gunakan inoperator:
>>>

>>> 'Py' in 'Python'


True

str.format( * Args , kwargs ** )

Lakukan operasi pemformatan string. String yang memanggil metode ini dapat berisi teks literal
atau bidang pengganti yang dibatasi oleh kurung kurawal {}. Setiap bidang pengganti berisi
indeks numerik argumen posisi, atau nama argumen kata kunci. Mengembalikan salinan string di
mana setiap bidang pengganti diganti dengan nilai string dari argumen yang sesuai.

>>>

>>> "The sum of 1 + 2 is {0}".format(1+2)


'The sum of 1 + 2 is 3'

Lihat Format String Syntax untuk deskripsi berbagai opsi pemformatan yang dapat ditentukan
dalam format string.
Catatan : Saat memformat angka ( int, float, complex, decimal.Decimaldan subclass) dengan ntipe
(mis: '{:n}'.format(1234)), fungsi untuk sementara menetapkan LC_CTYPElokal
ke LC_NUMERIClokal untuk didekode decimal_pointdan thousands_sepbidang localeconv()jika
mereka non-ASCII atau lebih dari 1 byte, dan LC_NUMERIClokal berbeda
daripada LC_CTYPElokal. Perubahan sementara ini memengaruhi utas lainnya.

Diubah di versi 3.7: Saat memformat angka dengan ntipe, fungsi menetapkan
sementara LC_CTYPElokal ke LC_NUMERIClokal dalam beberapa kasus.

str.format_map( Pemetaan )

Mirip dengan str.format(**mapping), kecuali yang mappingdigunakan secara langsung dan tidak
disalin ke file dict. Ini berguna jika misalnya mappingadalah subkelas dict:

>>>

>>> class Default(dict):


... def __missing__(self, key):
... return key
...
>>> '{name} was born in {country}'.format_map(Default(name='Guido'))
'Guido was born in country'

Baru di versi 3.2.

str.index( Sub [ , mulai [ , akhir ] ] )


Suka find(), tetapi naikkan ValueErrorketika substring tidak ditemukan.

str.isalnum( )

Kembali Truejika semua karakter dalam string adalah alfanumerik dan setidaknya ada satu
karakter, Falsejika tidak. Sebuah karakter cadalah alfanumerik jika salah satu dari berikut
kembali True: c.isalpha(), c.isdecimal(), c.isdigit(), atau c.isnumeric().

str.isalpha( )

Kembali Truejika semua karakter dalam string adalah alfabet dan setidaknya ada satu
karakter, Falsejika tidak. Karakter abjad adalah karakter yang didefinisikan dalam basis data
karakter Unicode sebagai "Surat", yaitu, karakter dengan kategori umum properti menjadi salah
satu dari "Lm", "Lt", "Lu", "Ll", atau "Lo". Perhatikan bahwa ini berbeda dari properti "Alphabetic"
yang didefinisikan dalam Standar Unicode.

str.isascii( )
Kembalikan Truejika string kosong atau semua karakter dalam string adalah ASCII, Falsejika
tidak. Karakter ASCII memiliki titik kode dalam rentang U+0000-U+007F.

Baru di versi 3.7.

str.isdecimal( )

Kembali Truejika semua karakter dalam string adalah karakter desimal dan setidaknya ada satu
karakter, False jika tidak. Karakter desimal adalah karakter yang dapat digunakan untuk
membentuk bilangan pada basis 10, misalnya U+0660, ARAB-INDIC DIGIT ZERO. Secara formal
karakter desimal adalah karakter dalam Kategori Umum Unicode ―Nd‖.

str.isdigit( )

Kembali Truejika semua karakter dalam string adalah angka dan setidaknya ada satu
karakter, Falsejika tidak. Digit termasuk karakter desimal dan digit yang memerlukan penanganan
khusus, seperti digit superskrip kompatibilitas. Ini mencakup angka yang tidak dapat digunakan
untuk membentuk angka di basis 10, seperti angka Kharosthi. Secara formal, digit adalah
karakter yang memiliki nilai properti Numeric_Type=Digit atau Numeric_Type=Desimal.

str.isidentifier( )

Kembali Truejika string adalah pengidentifikasi yang valid menurut definisi


bahasa, pengidentifikasi bagian, dan kata kunci .

Panggil keyword.iskeyword()untuk menguji apakah string sadalah pengidentifikasi yang


dicadangkan, seperti defdan class.

Contoh:

>>>

>>> from keyword import iskeyword

>>> 'hello'.isidentifier(), iskeyword('hello')


True, False
>>> 'def'.isidentifier(), iskeyword('def')
True, True
str.islower( )
Kembalikan Truejika semua karakter dengan huruf 4 dalam string adalah huruf kecil dan
setidaknya ada satu karakter dengan huruf besar, Falsejika tidak.

str.isnumeric( )

Kembali Truejika semua karakter dalam string adalah karakter numerik, dan setidaknya ada satu
karakter, False jika tidak. Karakter numerik mencakup karakter digit, dan semua karakter yang
memiliki properti nilai numerik Unicode, misalnya U+2155, VULGAR FRACTION ONE
FIFTH. Secara formal, karakter numerik adalah karakter dengan nilai properti
Numeric_Type=Digit, Numeric_Type=Decimal atau Numeric_Type=Numeric.

str.isprintable( )

Kembalikan Truejika semua karakter dalam string dapat dicetak atau string kosong, Falsejika
tidak. Karakter yang tidak dapat dicetak adalah karakter yang didefinisikan dalam basis data
karakter Unicode sebagai "Lainnya" atau "Pemisah", kecuali spasi ASCII (0x20) yang dianggap
dapat dicetak. (Perhatikan bahwa karakter yang dapat dicetak dalam konteks ini adalah karakter
yang tidak boleh diloloskan saat repr()dipanggil pada string. Ini tidak ada hubungannya dengan
penanganan string yang ditulis ke sys.stdoutatau sys.stderr.)

str.isspace( )

Kembali Truejika hanya ada karakter spasi putih dalam string dan setidaknya ada satu
karakter, Falsejika tidak.

Karakter adalah spasi putih jika dalam basis data karakter Unicode (lihat unicodedata), baik
kategori umumnya adalah Zs (―Pemisah, spasi‖), atau kelas dua arahnya adalah salah satu
dari WS, B, atau S.

str.istitle( )

Kembali Truejika string adalah string dengan judul dan setidaknya ada satu karakter, misalnya
karakter huruf besar hanya dapat mengikuti karakter tanpa huruf besar dan karakter huruf kecil
hanya huruf besar. Kembali Falsesebaliknya.

str.isupper( )

Kembalikan Truejika semua karakter berselubung 4 dalam string adalah huruf besar dan
setidaknya ada satu karakter berhuruf besar, Falsejika tidak.

>>>

>>> 'BANANA'.isupper()
True
>>> 'banana'.isupper()
False
>>> 'baNana'.isupper()
False
>>> ' '.isupper()
False

str.join( Iterable )
Kembalikan string yang merupakan gabungan dari string dalam iterable . A TypeErrorakan
dimunculkan jika ada nilai non-string di iterable , termasuk bytesobjek. Pemisah antar elemen
adalah string yang menyediakan metode ini.

str.ljust( Lebar [ , fillchar ] )

Kembalikan string yang diluruskan ke kiri dalam string dengan panjang lebar . Padding dilakukan
dengan menggunakan fillchar yang ditentukan (default adalah ruang ASCII). String asli
dikembalikan jika lebarnya kurang dari atau sama dengan len(s).

str.lower( )

Kembalikan salinan string dengan semua karakter berselubung 4 dikonversi ke huruf kecil.

Algoritma huruf kecil yang digunakan dijelaskan di bagian 3.13 dari Standar Unicode.

str.lstrip( [ Karakter ] )

Kembalikan salinan string dengan karakter utama dihapus. The chars argumen adalah string
menentukan set karakter yang akan dihapus. Jika dihilangkan
atau None, argumen karakter default untuk menghapus spasi. The chars Argumen tidak
awalan; alih-alih, semua kombinasi nilainya dihilangkan:

>>>

>>> ' spacious '.lstrip()


'spacious '
>>> 'www.example.com'.lstrip('cmowz.')
'example.com'

Lihat str.removeprefix()metode yang akan menghapus string awalan tunggal daripada semua set
karakter. Sebagai contoh:

>>>

>>> 'Arthur: three!'.lstrip('Arthur: ')


'ee!'
>>> 'Arthur: three!'.removeprefix('Arthur: ')
'three!'

statis str.maketrans( x [,y [,z ] ] )


Metode statis ini mengembalikan tabel terjemahan yang dapat digunakan untuk str.translate().

Jika hanya ada satu argumen, itu harus berupa kamus yang memetakan ordinal Unicode
(bilangan bulat) atau karakter (string dengan panjang 1) ke ordinal Unicode, string (dengan
panjang sewenang-wenang) atau None. Kunci karakter kemudian akan diubah menjadi ordinal.
Jika ada dua argumen, mereka harus berupa string dengan panjang yang sama, dan dalam
kamus yang dihasilkan, setiap karakter di x akan dipetakan ke karakter pada posisi yang sama di
y. Jika ada argumen ketiga, itu harus berupa string, yang karakternya akan dipetakan Nonedalam
hasil.

str.partition( September )

Pisahkan string pada kemunculan pertama sep , dan kembalikan 3-tupel yang berisi bagian
sebelum pemisah, pemisah itu sendiri, dan bagian setelah pemisah. Jika pemisah tidak
ditemukan, kembalikan 3-tuple yang berisi string itu sendiri, diikuti oleh dua string kosong.

str.removeprefix( Prefix , / )

Jika string dimulai dengan awalan string, return string[len(prefix):]. Jika tidak, kembalikan salinan
string asli:

>>>

>>> 'TestHook'.removeprefix('Test')
'Hook'
>>> 'BaseTestCase'.removeprefix('Test')
'BaseTestCase'

Baru di versi 3.9.

str.removesuffix( Akhiran , / )

Jika string diakhiri dengan suffix string dan suffix tersebut tidak kosong, return string[:-
len(suffix)]. Jika tidak, kembalikan salinan string asli:

>>>

>>> 'MiscTests'.removesuffix('Tests')
'Misc'
>>> 'TmpDirMixin'.removesuffix('Tests')
'TmpDirMixin'

Baru di versi 3.9.

str.replace( Tua , baru [ , count ] )

Kembalikan salinan string dengan semua kemunculan substring old diganti


dengan new . Jika jumlah argumen opsional diberikan,
hanya kemunculan hitungan pertama yang diganti.

str.rfind( Sub [ , mulai [ , akhir ] ] )


Kembali indeks tertinggi dalam string mana substring sub ditemukan, sehingga sub terkandung
dalam s[start:end]. Argumen opsional mulai dan berakhir ditafsirkan seperti dalam notasi
irisan. Kembali -1pada kegagalan.

str.rindex( Sub [ , mulai [ , akhir ] ] )

Seperti rfind()tetapi kenaikan gaji ValueErrorketika substring sub tidak ditemukan.

str.rjust( Lebar [ , fillchar ] )

Kembalikan string yang benar dibenarkan dalam string dengan panjang lebar . Padding dilakukan
dengan menggunakan fillchar yang ditentukan (default adalah ruang ASCII). String asli
dikembalikan jika lebarnya kurang dari atau sama dengan len(s).

str.rpartition( September )

Pisahkan string pada kemunculan terakhir sep , dan kembalikan 3-tupel yang berisi bagian
sebelum pemisah, pemisah itu sendiri, dan bagian setelah pemisah. Jika pemisah tidak
ditemukan, kembalikan 3-tupel yang berisi dua string kosong, diikuti oleh string itu sendiri.

str.rsplit( September = None , maxsplit = -1 )

Kembalikan daftar kata dalam string, menggunakan sep sebagai string


pembatas. Jika maxsplit diberikan, paling banyak dilakukan maxsplit split, yang paling
kanan . Jika sep tidak ditentukan atau None, string spasi putih apa pun adalah pemisah. Kecuali
membelah dari kanan, rsplit()berperilaku seperti split()yang dijelaskan secara rinci di bawah ini.

str.rstrip( [ Karakter ] )

Kembalikan salinan string dengan karakter tambahan dihapus. The chars argumen adalah string
menentukan set karakter yang akan dihapus. Jika dihilangkan
atau None, argumen karakter default untuk menghapus spasi. The chars Argumen tidak
akhiran; alih-alih, semua kombinasi nilainya dihilangkan:

>>>

>>> ' spacious '.rstrip()


' spacious'
>>> 'mississippi'.rstrip('ipz')
'mississ'

Lihat str.removesuffix()metode yang akan menghapus string sufiks tunggal daripada semua set
karakter. Sebagai contoh:

>>>
>>> 'Monty Python'.rstrip(' Python')
'M'
>>> 'Monty Python'.removesuffix(' Python')
'Monty'

str.split( September = None , maxsplit = -1 )


Kembalikan daftar kata dalam string, menggunakan sep sebagai string
pembatas. Jika maxsplit diberikan, paling banyak maxsplit split dilakukan (dengan demikian,
daftar akan memiliki paling banyak maxsplit+1elemen). Jika maxsplit tidak ditentukan atau -1,
maka tidak ada batasan jumlah split (semua kemungkinan split dibuat).

Jika sep diberikan, pembatas berurutan tidak dikelompokkan bersama dan dianggap membatasi
string kosong (misalnya, '1,,2'.split(',')return ). The September Argumen dapat terdiri dari beberapa
karakter (misalnya, pengembalian ). Memisahkan string kosong dengan pemisah yang ditentukan
akan kembali .['1', '', '2']'1<>2<>3'.split('<>')['1', '2', '3']['']

Sebagai contoh:

>>>

>>> '1,2,3'.split(',')
['1', '2', '3']
>>> '1,2,3'.split(',', maxsplit=1)
['1', '2,3']
>>> '1,2,,3,'.split(',')
['1', '2', '', '3', '']

Jika sep tidak ditentukan atau None, algoritme pemisahan yang berbeda diterapkan: menjalankan
spasi putih berurutan dianggap sebagai pemisah tunggal, dan hasilnya tidak akan berisi string
kosong di awal atau akhir jika string memiliki spasi awal atau akhir. Akibatnya, memisahkan string
kosong atau string yang hanya terdiri dari spasi putih dengan Nonepemisah akan
mengembalikan [].

Sebagai contoh:

>>>

>>> '1 2 3'.split()


['1', '2', '3']
>>> '1 2 3'.split(maxsplit=1)
['1', '2 3']
>>> ' 1 2 3 '.split()
['1', '2', '3']

str.splitlines( [ Keepends ] )
Kembalikan daftar garis dalam string, putus pada batas garis. Hentian baris tidak disertakan
dalam daftar yang dihasilkan kecuali jika keepends diberikan dan benar.

Metode ini membagi pada batas-batas garis berikut. Secara khusus, batas-batasnya adalah
superset dari baris baru universal .

Perwakilan Deskripsi

\n Umpan Baris

\r Kereta kembali

\r\n Pengembalian Kereta + Umpan Jalur

\v atau \x0b Tabulasi Garis

\f atau \x0c Umpan Formulir

\x1c Pemisah File

\x1d Pemisah Grup

\x1e Pemisah Rekaman

\x85 Baris Berikutnya (Kode Kontrol C1)

\u2028 Pemisah Garis

\u2029 Pemisah Paragraf

Diubah di versi 3.2:\v dan \fditambahkan ke daftar batas garis.

Sebagai contoh:

>>>

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()


['ab c', '', 'de fg', 'kl']
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True)
['ab c\n', '\n', 'de fg\r', 'kl\r\n']

Tidak seperti split()ketika string pembatas sep diberikan, metode ini mengembalikan daftar
kosong untuk string kosong, dan pemutusan baris terminal tidak menghasilkan baris tambahan:

>>>

>>> "".splitlines()
[]
>>> "One line\n".splitlines()
['One line']
Sebagai perbandingan, split('\n')berikan:

>>>

>>> ''.split('\n')
['']
>>> 'Two lines\n'.split('\n')
['Two lines', '']

str.startswith( Awalan [ , mulai [ , akhir ] ] )


Kembali Truejika string dimulai dengan awalan , jika tidak kembali False. awalan juga bisa menjadi
tupel awalan yang harus dicari. Dengan start opsional , uji string dimulai pada posisi itu. Dengan
opsional end , berhenti membandingkan string pada posisi itu.

str.strip( [ Karakter ] )

Kembalikan salinan string dengan karakter awal dan akhir dihapus. The chars argumen adalah
string menentukan set karakter yang akan dihapus. Jika dihilangkan
atau None, argumen karakter default untuk menghapus spasi. The chars Argumen tidak awalan
atau akhiran; alih-alih, semua kombinasi nilainya dihilangkan:

>>>

>>> ' spacious '.strip()


'spacious'
>>> 'www.example.com'.strip('cmowz.')
'example'

Nilai argumen karakter awal dan akhir terluar dihilangkan dari string. Karakter dihapus dari ujung
depan hingga mencapai karakter string yang tidak terdapat dalam kumpulan karakter
dalam karakter . Aksi serupa terjadi di trailing end. Sebagai contoh:

>>>

>>> comment_string = '#....... Section 3.2.1 Issue #32 .......'


>>> comment_string.strip('.#! ')
'Section 3.2.1 Issue #32'

str.swapcase( )

Kembalikan salinan string dengan karakter huruf besar yang dikonversi menjadi huruf kecil dan
sebaliknya. Perhatikan bahwa belum tentu benar bahwa .s.swapcase().swapcase() == s

str.title( )
Mengembalikan versi string judul dengan kata-kata dimulai dengan karakter huruf besar dan
karakter yang tersisa adalah huruf kecil.

Sebagai contoh:

>>>

>>> 'Hello world'.title()


'Hello World'

Algoritme menggunakan definisi kata yang tidak tergantung bahasa sederhana sebagai kelompok
huruf yang berurutan. Definisi ini berfungsi dalam banyak konteks tetapi itu berarti bahwa
apostrof dalam kontraksi dan posesif membentuk batas kata, yang mungkin bukan hasil yang
diinginkan:

>>>

>>> "they're bill's friends from the UK".title()


"They'Re Bill'S Friends From The Uk"

Solusi untuk apostrof dapat dibuat menggunakan ekspresi reguler:

>>>

>>> import re
>>> def titlecase(s):
... return re.sub(r"[A-Za-z]+('[A-Za-z]+)?",
... lambda mo: mo.group(0).capitalize(),
... s)
...
>>> titlecase("they're bill's friends.")
"They're Bill's Friends."

str.translate( Tabel )
Kembalikan salinan string di mana setiap karakter telah dipetakan melalui tabel terjemahan yang
diberikan. Tabel harus berupa objek yang mengimplementasikan pengindeksan
melalui __getitem__(), biasanya pemetaan atau urutan . Ketika diindeks oleh ordinal Unicode
(integer), objek tabel dapat melakukan salah satu dari berikut ini: mengembalikan ordinal Unicode
atau string, untuk memetakan karakter ke satu atau lebih karakter lain; return None, untuk
menghapus karakter dari string kembali; atau memunculkan LookupErrorpengecualian, untuk
memetakan karakter ke dirinya sendiri.

Anda dapat menggunakan str.maketrans()untuk membuat peta terjemahan dari pemetaan karakter
ke karakter dalam format yang berbeda.
Lihat juga codecsmodul untuk pendekatan yang lebih fleksibel terhadap pemetaan karakter
khusus.

str.upper( )

Kembalikan salinan string dengan semua karakter dengan huruf besar 4 dikonversi ke huruf
besar. Perhatikan bahwa s.upper().isupper()mungkin Falsejika s berisi karakter tanpa huruf besar
atau jika kategori Unicode dari karakter yang dihasilkan bukan "Lu" (Huruf, huruf besar), tetapi
misalnya "Lt" (Surat, huruf besar).

Algoritma huruf besar yang digunakan dijelaskan di bagian 3.13 dari Standar Unicode.

str.zfill( Lebar )

Kembalikan salinan string yang tersisa diisi dengan '0'digit ASCII untuk membuat string dengan
panjang lebar . Awalan tanda utama ( '+'/ '-') ditangani dengan menyisipkan
padding setelah karakter tanda dan bukan sebelumnya. String asli dikembalikan
jika lebarnya kurang dari atau sama dengan len(s).

Sebagai contoh:

>>>

>>> "42".zfill(5)
'00042'
>>> "-42".zfill(5)
'-0042'

printf-gaya String Format

Catatan
Operasi pemformatan yang dijelaskan di sini menunjukkan berbagai keanehan yang menyebabkan sejumlah kesalahan
umum (seperti gagal menampilkan tupel dan kamus dengan benar). Menggunakan string literal berformat yang lebih
baru , str.format()antarmuka, atau string template dapat membantu menghindari kesalahan ini. Masing-masing alternatif
ini memberikan trade-off dan manfaat kesederhanaan, fleksibilitas, dan/atau ekstensibilitasnya sendiri.
Objek string memiliki satu operasi %bawaan yang unik: operator (modulo). Ini juga dikenal
sebagai operator pemformatan string atau interpolasi . Diberikan (di mana format adalah
string), spesifikasi konversi dalam format diganti dengan nol atau lebih elemen nilai . Efeknya mirip
dengan menggunakan dalam bahasa C.format % values%sprintf()

Jika format memerlukan argumen tunggal, nilai dapat berupa objek non-Tuple tunggal. 5 Jika
tidak, nilai harus berupa tuple dengan jumlah item yang ditentukan oleh string format, atau objek
pemetaan tunggal (misalnya, kamus).

Penentu konversi berisi dua atau lebih karakter dan memiliki komponen berikut, yang harus terjadi
dalam urutan ini:

1. The '%'karakter, yang menandai awal dari specifier tersebut.


2. Kunci pemetaan (opsional), terdiri dari urutan karakter yang dikurung (misalnya, (somename)).
3. Tanda konversi (opsional), yang memengaruhi hasil beberapa jenis konversi.
4. Lebar bidang minimum (opsional). Jika ditentukan sebagai '*'(tanda bintang), lebar sebenarnya
dibaca dari elemen berikutnya dari tupel di values , dan objek yang akan dikonversi muncul
setelah lebar bidang minimum dan presisi opsional.
5. Presisi (opsional), diberikan sebagai '.'(titik) diikuti dengan presisi. Jika ditentukan
sebagai '*'(tanda bintang), presisi aktual dibaca dari elemen berikutnya dari tupel di values ,
dan nilai yang akan dikonversi muncul setelah presisi.
6. Pengubah panjang (opsional).
7. Jenis konversi.

Ketika argumen yang benar adalah kamus (atau tipe pemetaan lainnya), maka format dalam
string harus menyertakan kunci pemetaan yang dikurung ke dalam kamus yang disisipkan segera
setelah '%'karakter. Kunci pemetaan memilih nilai yang akan diformat dari pemetaan. Sebagai contoh:

>>>
>>> print('%(language)s has %(number)03d quote types.' %
... {'language': "Python", "number": 2})
Python has 002 quote types.

Dalam hal ini tidak ada *penentu yang dapat muncul dalam format (karena mereka memerlukan daftar
parameter berurutan).

Karakter tanda konversi adalah:

Bendera Berarti
'#' Konversi nilai akan menggunakan "bentuk alternatif" (di mana didefinisikan di bawah).
'0' Konversi akan menjadi nol empuk untuk nilai numerik.
Nilai yang dikonversi dibiarkan disesuaikan (menggantikan '0' konversi jika keduanya
'-'
diberikan).
Bendera Berarti

(spasi) Kosong harus dibiarkan sebelum angka positif (atau string kosong) yang dihasilkan
' '
oleh konversi bertanda.
'+' Karakter tanda ( '+'atau '-') akan mendahului konversi (menggantikan tanda ―spasi‖).

Pengubah panjang ( h, l, atau L) mungkin ada, tetapi diabaikan karena tidak diperlukan untuk Python –
jadi eg %ldidentik dengan %d.

Jenis konversinya adalah:

Konversi Berarti Catatan

'd' Desimal bilangan bulat bertanda.

'i' Desimal bilangan bulat bertanda.


'o' Nilai oktal bertanda. (1)

'u' Jenis usang – identik dengan 'd'. (6)


'x' Heksadesimal bertanda (huruf kecil). (2)

'X' Heksadesimal bertanda (huruf besar). (2)


'e' Format eksponensial floating point (huruf kecil). (3)

'E' Format eksponensial floating point (huruf besar). (3)


'f' Format desimal titik mengambang. (3)

'F' Format desimal titik mengambang. (3)

Format titik mengambang. Menggunakan format eksponensial huruf kecil jika


'g' (4)
eksponen kurang dari -4 atau tidak kurang dari presisi, format desimal sebaliknya.

Format titik mengambang. Menggunakan format eksponensial huruf besar jika


'G' (4)
eksponen kurang dari -4 atau tidak kurang dari presisi, format desimal sebaliknya.
'c' Karakter tunggal (menerima integer atau string karakter tunggal).

'r' String (mengonversi objek Python apa pun menggunakan repr()). (5)
's' String (mengonversi objek Python apa pun menggunakan str()). (5)

'a' String (mengonversi objek Python apa pun menggunakan ascii()). (5)
'%' Tidak ada argumen yang dikonversi, menghasilkan '%' karakter dalam hasil.

Catatan:

1. Bentuk alternatif menyebabkan penentu oktal terdepan ( '0o') disisipkan sebelum digit pertama.
2. Bentuk alternatif menyebabkan awalan '0x'atau '0X'(bergantung pada
apakah format 'x'or 'X'digunakan) untuk disisipkan sebelum digit pertama.
3. Bentuk alternatif menyebabkan hasil selalu berisi titik desimal, bahkan jika tidak ada angka yang
mengikutinya.

Presisi menentukan jumlah digit setelah titik desimal dan default ke 6.


4. Bentuk alternatif menyebabkan hasil selalu berisi titik desimal, dan angka nol yang tertinggal tidak
dihilangkan seperti yang seharusnya.

Presisi menentukan jumlah digit signifikan sebelum dan sesudah titik desimal dan default ke 6.
5. Jika presisi adalah N, output dipotong menjadi Nkarakter.
6. Lihat PP 237 .

Karena string Python memiliki panjang eksplisit, %skonversi tidak mengasumsikan bahwa
itu '\0'adalah akhir dari string.

Diubah di versi 3.1:%f konversi untuk angka yang nilai absolutnya lebih dari 1e50 tidak lagi diganti
dengan %gkonversi.

Jenis biner Urutan - bytes, bytearray, memoryview


Tipe bawaan inti untuk memanipulasi data biner adalah bytesdan bytearray. Mereka
didukung memoryviewyang menggunakan protokol buffer untuk mengakses memori objek biner lainnya
tanpa perlu membuat salinan.

The arrayModul mendukung penyimpanan yang efisien dari tipe data dasar seperti 32-bit bilangan
bulat dan IEEE754 double-presisi floating.

Byte Objek

Objek byte adalah urutan byte tunggal yang tidak dapat diubah. Karena banyak protokol biner utama
didasarkan pada pengkodean teks ASCII, objek byte menawarkan beberapa metode yang hanya valid
ketika bekerja dengan data yang kompatibel dengan ASCII dan terkait erat dengan objek string dalam
berbagai cara lain.

kelas bytes( [ sumber [ , encoding [ , kesalahan ] ] ] )

Pertama, sintaks untuk literal byte sebagian besar sama dengan sintaks untuk literal string,
kecuali bahwa bawalan ditambahkan:

 Kutipan tunggal: b'still allows embedded "double" quotes'


 Kutipan ganda: .b"still allows embedded 'single' quotes"
 Dikutip tiga kali: ,b'''3 single quotes'''b"""3 double quotes"""

Hanya karakter ASCII yang diizinkan dalam literal byte (terlepas dari penyandian kode sumber
yang dideklarasikan). Nilai biner apa pun yang lebih dari 127 harus dimasukkan ke dalam literal
byte menggunakan urutan escape yang sesuai.

Seperti literal string, literal byte juga dapat menggunakan rawalan untuk menonaktifkan
pemrosesan urutan escape. Lihat literal String dan Bytes untuk mengetahui lebih lanjut tentang
berbagai bentuk literal byte, termasuk urutan escape yang didukung.

Sementara literal byte dan representasi didasarkan pada teks ASCII, objek byte sebenarnya
berperilaku seperti urutan bilangan bulat yang tidak dapat diubah, dengan setiap nilai dalam
urutan dibatasi sedemikian rupa sehingga (usaha untuk melanggar batasan ini akan
memicu ). Hal ini dilakukan dengan sengaja untuk menekankan bahwa meskipun banyak format
biner menyertakan elemen berbasis ASCII dan dapat dimanipulasi secara berguna dengan
beberapa algoritme berorientasi teks, hal ini umumnya tidak berlaku untuk data biner arbitrer
(secara membabi buta menerapkan algoritme pemrosesan teks ke format data biner yang tidak
Kompatibel dengan ASCII biasanya akan menyebabkan korupsi
data).0 <= x < 256ValueError

Selain bentuk literal, objek byte dapat dibuat dengan beberapa cara lain:

 Objek byte yang diisi nol dengan panjang tertentu: bytes(10)


 Dari iterable bilangan bulat: bytes(range(20))
 Menyalin data biner yang ada melalui protokol buffer: bytes(obj)

Lihat juga byte bawaan.

Karena 2 digit heksadesimal sesuai dengan tepat satu byte, angka heksadesimal adalah format
yang umum digunakan untuk menggambarkan data biner. Oleh karena itu, tipe byte memiliki
metode kelas tambahan untuk membaca data dalam format tersebut:

classmethod fromhex( tali )

bytesMetode kelas ini mengembalikan objek byte, mendekode objek string yang
diberikan. String harus berisi dua digit heksadesimal per byte, dengan spasi putih ASCII
diabaikan.

>>>

>>> bytes.fromhex('2Ef0 F1f2 ')


b'.\xf0\xf1\xf2'

Berubah di versi 3.7:bytes.fromhex() sekarang melewatkan semua spasi putih ASCII dalam
string, bukan hanya spasi.
Fungsi konversi terbalik ada untuk mengubah objek byte menjadi representasi heksadesimalnya.

hex( [ September [ , bytes_per_sep ] ] )


Kembalikan objek string yang berisi dua digit heksadesimal untuk setiap byte dalam instance.

>>>

>>> b'\xf0\xf1\xf2'.hex()
'f0f1f2'

Jika Anda ingin membuat string hex lebih mudah dibaca, Anda dapat
menentukan parameter sep pemisah karakter tunggal untuk disertakan dalam output. Secara
default antara setiap byte. Parameter byte_per_sep opsional kedua mengontrol spasi. Nilai positif
menghitung posisi pemisah dari kanan, nilai negatif dari kiri.

>>>

>>> value = b'\xf0\xf1\xf2'


>>> value.hex('-')
'f0-f1-f2'
>>> value.hex('_', 2)
'f0_f1f2'
>>> b'UUDDLRLRAB'.hex(' ', -4)
'55554444 4c524c52 4142'

Baru di versi 3.5.

Berubah di versi 3.8:bytes.hex() sekarang


mendukung parameter sep dan byte_per_sep opsional untuk menyisipkan pemisah antara byte
dalam output hex.

Karena objek byte adalah urutan bilangan bulat (mirip dengan tupel), untuk objek byte b , b[0]akan
menjadi bilangan bulat, sedangkan b[0:1]akan menjadi objek byte dengan panjang 1. (Ini kontras
dengan string teks, di mana pengindeksan dan pengirisan akan menghasilkan a tali panjang 1)

Representasi objek byte menggunakan format literal ( b'...') karena seringkali lebih berguna
daripada misalnya . Anda selalu dapat mengonversi objek byte menjadi daftar bilangan bulat
menggunakan .bytes([46, 46, 46])list(b)

Catatan : Untuk pengguna Python 2.x: Dalam seri Python 2.x, berbagai konversi implisit antara
string 8-bit (hal terdekat yang ditawarkan 2.x ke tipe data biner bawaan) dan string Unicode
diizinkan. Ini adalah solusi kompatibilitas mundur untuk menjelaskan fakta bahwa Python awalnya
hanya mendukung teks 8-bit, dan teks Unicode adalah tambahan selanjutnya. Dalam Python 3.x,
konversi implisit tersebut hilang - konversi antara data biner 8-bit dan teks Unicode harus eksplisit,
dan objek byte dan string akan selalu dibandingkan secara tidak sama.
Objek bytearray

bytearrayobjek adalah mitra yang bisa berubah untuk bytes objek.

kelas bytearray( [ sumber [ , encoding [ , kesalahan ] ] ] )


Tidak ada sintaks literal khusus untuk objek bytearray, sebaliknya mereka selalu dibuat dengan
memanggil konstruktor:

 Membuat instance kosong: bytearray()


 Membuat instance yang terisi nol dengan panjang tertentu: bytearray(10)
 Dari iterable bilangan bulat: bytearray(range(20))
 Menyalin data biner yang ada melalui protokol buffer: bytearray(b'Hi!')

Karena objek bytearray dapat berubah, mereka mendukung operasi urutan yang dapat
diubah selain byte umum dan operasi bytearray yang dijelaskan dalam Operasi Bytes dan
Bytearray .

Lihat juga bytearray bawaan .

Karena 2 digit heksadesimal sesuai dengan tepat satu byte, angka heksadesimal adalah format
yang umum digunakan untuk menggambarkan data biner. Oleh karena itu, tipe bytearray memiliki
metode kelas tambahan untuk membaca data dalam format tersebut:

classmethod fromhex( tali )


bytearrayMetode kelas ini mengembalikan objek bytearray, mendekode objek string yang
diberikan. String harus berisi dua digit heksadesimal per byte, dengan spasi putih ASCII
diabaikan.

>>>
>>> bytearray.fromhex('2Ef0 F1f2 ')
bytearray(b'.\xf0\xf1\xf2')

Berubah di versi 3.7:bytearray.fromhex() sekarang melewatkan semua spasi putih ASCII


dalam string, bukan hanya spasi.

Fungsi konversi terbalik ada untuk mengubah objek bytearray menjadi representasi
heksadesimalnya.

hex( [ September [ , bytes_per_sep ] ] )


Kembalikan objek string yang berisi dua digit heksadesimal untuk setiap byte dalam instance.

>>>
>>> bytearray(b'\xf0\xf1\xf2').hex()
'f0f1f2'

Baru di versi 3.5.

Berubah di versi 3.8: Mirip dengan bytes.hex(), bytearray.hex()sekarang


mendukung parameter sep dan byte_per_sep opsional untuk menyisipkan pemisah antara byte
dalam output hex.

Karena objek bytearray adalah urutan bilangan bulat (mirip dengan daftar), untuk objek
bytearray b , b[0]akan menjadi bilangan bulat, sedangkan b[0:1]akan menjadi objek bytearray
dengan panjang 1. (Ini kontras dengan string teks, di mana pengindeksan dan pengirisan akan
menghasilkan tali panjang 1)

Representasi objek bytearray menggunakan format literal byte ( bytearray(b'...')) karena


seringkali lebih berguna daripada misalnya . Anda selalu dapat mengonversi objek bytearray
menjadi daftar bilangan bulat menggunakan .bytearray([46, 46, 46])list(b)

Byte dan ByteArray Operasi

Baik byte dan objek bytearray mendukung operasi urutan umum . Mereka beroperasi tidak hanya
dengan operan dari jenis yang sama, tetapi dengan objek seperti byte apa pun . Karena fleksibilitas ini,
mereka dapat dengan bebas dicampur dalam operasi tanpa menyebabkan kesalahan. Namun, jenis
hasil yang dikembalikan mungkin bergantung pada urutan operan.

Catatan : Metode pada objek byte dan bytearray tidak menerima string sebagai argumennya, sama
seperti metode pada string tidak menerima byte sebagai argumennya. Misalnya, Anda harus menulis:
a = "abc"
b = a.replace("a", "f")

dan:
a = b"abc"
b = a.replace(b"a", b"f")

Beberapa operasi byte dan bytearray mengasumsikan penggunaan format biner yang kompatibel
dengan ASCII, dan karenanya harus dihindari saat bekerja dengan data biner arbitrer. Pembatasan ini
tercakup di bawah ini.
Catatan : Menggunakan operasi berbasis ASCII ini untuk memanipulasi data biner yang tidak
disimpan dalam format berbasis ASCII dapat menyebabkan kerusakan data.

Metode berikut pada objek byte dan bytearray dapat digunakan dengan data biner arbitrer.

bytes.count( Sub [ , mulai [ , akhir ] ] )

bytearray.count( Sub [ , mulai [ , akhir ] ] )


Kembali jumlah non-tumpang tindih kejadian subsequence sub di kisaran
[ mulai , akhir ]. Argumen opsional mulai dan berakhir ditafsirkan seperti dalam notasi irisan.

Urutan pencarian dapat berupa objek seperti byte atau bilangan bulat dalam rentang 0 hingga
255.

Diubah di versi 3.3: Juga terima bilangan bulat dalam kisaran 0 hingga 255 sebagai urutan
berikutnya.

bytes.removeprefix( Prefix , / )

bytearray.removeprefix( Prefix , / )

Jika data biner dimulai dengan string awalan , return bytes[len(prefix):]. Jika tidak,
kembalikan salinan data biner asli:

>>>

>>> b'TestHook'.removeprefix(b'Test')
b'Hook'
>>> b'BaseTestCase'.removeprefix(b'Test')
b'BaseTestCase'

The awalan mungkin setiap byte-seperti objek .

Catatan : Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek
baru, bahkan jika tidak ada perubahan yang dibuat.

Baru di versi 3.9.

bytes.removesuffix( Akhiran , / )

bytearray.removesuffix( Akhiran , / )

Jika data biner diakhiri dengan string sufiks dan sufiks tersebut tidak kosong, return bytes[:-
len(suffix)]. Jika tidak, kembalikan salinan data biner asli:

>>>
>>> b'MiscTests'.removesuffix(b'Tests')
b'Misc'
>>> b'TmpDirMixin'.removesuffix(b'Tests')
b'TmpDirMixin'

The akhiran mungkin setiap byte-seperti objek .

Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.

Baru di versi 3.9.

bytes.decode( Encoding = "utf-8" , kesalahan = "ketat" )

bytearray.decode( Encoding = "utf-8" , kesalahan = "ketat" )

Kembalikan string yang didekodekan dari byte yang diberikan. Pengkodean default adalah 'utf-
8'. kesalahan dapat diberikan untuk mengatur skema penanganan kesalahan yang
berbeda. Default untuk kesalahan adalah 'strict', yang berarti bahwa kesalahan penyandian
meningkatkan a UnicodeError. Nilai lain yang mungkin adalah 'ignore', 'replace'dan
nama lain yang didaftarkan melalui codecs.register_error(), lihat bagian Penanganan
Kesalahan . Untuk daftar kemungkinan penyandian, lihat bagian Pengodean Standar .

Secara default, argumen kesalahan tidak diperiksa untuk kinerja terbaik, tetapi hanya digunakan
pada kesalahan decoding pertama. Aktifkan Mode Pengembangan Python , atau gunakan build
debug untuk memeriksa kesalahan .

Catatan

Melewati argumen encoding untuk strmemungkinkan decoding objek seperti byte secara
langsung, tanpa perlu membuat byte sementara atau objek bytearray.

Diubah di versi 3.1: Menambahkan dukungan untuk argumen kata kunci.

Berubah dalam versi 3.9: The kesalahan sekarang diperiksa dalam mode pembangunan dan
dalam mode debug.

bytes.endswith( Akhiran [ , mulai [ , akhir ] ] )

bytearray.endswith( Akhiran [ , mulai [ , akhir ] ] )


Kembali Truejika data biner berakhir dengan akhiran yang ditentukan , jika tidak
kembali False. sufiks juga bisa menjadi tupel sufiks yang harus dicari. Dengan start opsional ,
tes dimulai pada posisi itu. Dengan opsional end , berhenti membandingkan pada posisi itu.

Sufiks yang akan dicari dapat berupa objek seperti byte apa pun .

bytes.find( Sub [ , mulai [ , akhir ] ] )

bytearray.find( Sub [ , mulai [ , akhir ] ] )


Kembali indeks terendah dalam data mana subsequence sub ditemukan,
sehingga sub terkandung dalam slice s[start:end]. Argumen
opsional mulai dan berakhir ditafsirkan seperti dalam notasi irisan. Kembali -1jika sub tidak
ditemukan.

Urutan pencarian dapat berupa objek seperti byte atau bilangan bulat dalam rentang 0 hingga
255.

Catatan

The find()metode harus digunakan hanya jika Anda perlu tahu posisi sub . Untuk memeriksa
apakah sub adalah substring atau bukan, gunakan inoperator:
>>>

>>> b'Py' in b'Python'


True

Diubah di versi 3.3: Juga terima bilangan bulat dalam kisaran 0 hingga 255 sebagai urutan
berikutnya.

bytes.index( Sub [ , mulai [ , akhir ] ] )

bytearray.index( Sub [ , mulai [ , akhir ] ] )


Suka find(), tetapi naikkan ValueErrorjika urutannya tidak ditemukan.

Urutan pencarian dapat berupa objek seperti byte atau bilangan bulat dalam rentang 0 hingga
255.

Diubah di versi 3.3: Juga terima bilangan bulat dalam kisaran 0 hingga 255 sebagai urutan
berikutnya.

bytes.join( Iterable )
bytearray.join( Iterable )

Kembalikan objek byte atau bytearray yang merupakan rangkaian dari urutan data biner
dalam iterable . A TypeErrorakan dimunculkan jika ada nilai dalam iterable yang bukan objek
seperti byte , termasuk strobjek. Pemisah antar elemen adalah isi dari byte atau objek bytearray
yang menyediakan metode ini.

statis bytes.maketrans( dari , ke )

statis bytearray.maketrans( dari , ke )

Metode statis ini mengembalikan tabel terjemahan yang dapat digunakan


untuk bytes.translate()memetakan setiap karakter dari ke karakter pada posisi yang
sama ke ; dari dan ke keduanya harus berupa objek seperti byte dan memiliki panjang yang
sama.

Baru di versi 3.1.

bytes.partition( September )

bytearray.partition( September )

Pisahkan urutan pada kemunculan pertama sep , dan kembalikan 3-tupel yang berisi bagian
sebelum pemisah, pemisah itu sendiri atau salinan bytearray-nya, dan bagian setelah
pemisah. Jika pemisah tidak ditemukan, kembalikan 3-tuple yang berisi salinan dari urutan asli,
diikuti oleh dua byte kosong atau objek bytearray.

Pemisah yang akan ditelusuri dapat berupa objek seperti byte apa pun .

bytes.replace( Tua , baru [ , count ] )

bytearray.replace( Tua , baru [ , count ] )


Kembalikan salinan urutan dengan semua kemunculan dari urutan lama diganti dengan
yang baru . Jika jumlah argumen opsional diberikan, hanya kemunculan hitungan pertama yang
diganti.

Urutan pencarian dan penggantinya dapat berupa objek seperti byte apa pun .

Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.
bytes.rfind( Sub [ , mulai [ , akhir ] ] )
bytearray.rfind( Sub [ , mulai [ , akhir ] ] )

Mengembalikan indeks tertinggi dalam urutan di mana sub urutan ditemukan,


sehingga sub terkandung di dalam s[start:end]. Argumen
opsional mulai dan berakhir ditafsirkan seperti dalam notasi irisan. Kembali -1pada kegagalan.

Urutan pencarian dapat berupa objek seperti byte atau bilangan bulat dalam rentang 0 hingga
255.

Diubah di versi 3.3: Juga terima bilangan bulat dalam kisaran 0 hingga 255 sebagai urutan
berikutnya.

bytes.rindex( Sub [ , mulai [ , akhir ] ] )


bytearray.rindex( Sub [ , mulai [ , akhir ] ] )
Seperti rfind()tetapi menimbulkan ValueErrorketika subsequence sub tidak ditemukan.

Urutan pencarian dapat berupa objek seperti byte atau bilangan bulat dalam rentang 0 hingga
255.

Diubah di versi 3.3: Juga terima bilangan bulat dalam kisaran 0 hingga 255 sebagai urutan
berikutnya.

bytes.rpartition( September )
bytearray.rpartition( September )
Pisahkan urutan pada kemunculan terakhir sep , dan kembalikan 3-tupel yang berisi bagian
sebelum pemisah, pemisah itu sendiri atau salinan bytearray-nya, dan bagian setelah
pemisah. Jika pemisah tidak ditemukan, kembalikan 3-tuple yang berisi dua byte kosong atau
objek bytearray, diikuti dengan salinan urutan aslinya.

Pemisah yang akan ditelusuri dapat berupa objek seperti byte apa pun .

bytes.startswith( Awalan [ , mulai [ , akhir ] ] )


bytearray.startswith( Awalan [ , mulai [ , akhir ] ] )
Kembali Truejika data biner dimulai dengan awalan yang ditentukan , jika tidak
kembali False. awalan juga bisa menjadi tupel awalan yang harus dicari. Dengan start opsional ,
tes dimulai pada posisi itu. Dengan opsional end , berhenti membandingkan pada posisi itu.

Awalan yang akan dicari dapat berupa objek seperti byte apa pun .

bytes.translate( Tabel , / , menghapus = b '' )


bytearray.translate( Tabel , / , menghapus = b '' )
Kembalikan salinan objek byte atau bytearray di mana semua byte yang terjadi
dalam penghapusan argumen opsional dihapus, dan byte yang tersisa telah dipetakan melalui
tabel terjemahan yang diberikan, yang harus berupa objek byte dengan panjang 256.
Anda dapat menggunakan bytes.maketrans()metode ini untuk membuat tabel terjemahan.

Setel argumen tabel ke Noneuntuk terjemahan yang hanya menghapus karakter:

>>>
>>> b'read this short text'.translate(None, b'aeiou')
b'rd ths shrt txt'

Berubah di versi 3.6: hapus sekarang didukung sebagai argumen kata kunci.

Metode berikut pada objek byte dan bytearray memiliki perilaku default yang mengasumsikan
penggunaan format biner yang kompatibel dengan ASCII, tetapi masih dapat digunakan dengan data
biner arbitrer dengan meneruskan argumen yang sesuai. Perhatikan bahwa semua metode bytearray di
bagian ini tidak beroperasi di tempat, dan malah menghasilkan objek baru.

bytes.center( Lebar [ , fillbyte ] )


bytearray.center( Lebar [ , fillbyte ] )
Kembalikan salinan objek di tengah dalam urutan panjang lebar . Padding dilakukan
menggunakan fillbyte yang ditentukan (default adalah ruang ASCII). Untuk bytesobjek, urutan
asli dikembalikan jika lebarnya kurang dari atau sama dengan len(s).

Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.

bytes.ljust( Lebar [ , fillbyte ] )


bytearray.ljust( Lebar [ , fillbyte ] )
Kembalikan salinan objek yang diratakan kiri dalam urutan panjang lebar . Padding dilakukan
menggunakan fillbyte yang ditentukan (default adalah ruang ASCII). Untuk bytesobjek, urutan
asli dikembalikan jika lebarnya kurang dari atau sama dengan len(s).

Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.

bytes.lstrip( [ Karakter ] )
bytearray.lstrip( [ Karakter ] )
Kembalikan salinan urutan dengan byte utama yang ditentukan dihapus. The chars argumen
adalah urutan biner menentukan seperangkat nilai-nilai byte untuk dihapus - nama mengacu
pada fakta metode ini biasanya digunakan dengan karakter ASCII. Jika dihilangkan
atau None, argumen karakter default untuk menghapus spasi putih ASCII. The chars Argumen
tidak awalan; alih-alih, semua kombinasi nilainya dihilangkan:

>>>
>>> b' spacious '.lstrip()
b'spacious '
>>> b'www.example.com'.lstrip(b'cmowz.')
b'example.com'

Urutan biner nilai byte yang akan dihapus dapat berupa objek seperti byte apa
pun . Lihat removeprefix()metode yang akan menghapus string awalan tunggal daripada
semua set karakter. Sebagai contoh:

>>>
>>> b'Arthur: three!'.lstrip(b'Arthur: ')
b'ee!'
>>> b'Arthur: three!'.removeprefix(b'Arthur: ')
b'three!'
Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.

bytes.rjust( Lebar [ , fillbyte ] )


bytearray.rjust( Lebar [ , fillbyte ] )
Kembalikan salinan objek kanan dibenarkan dalam urutan panjang lebar . Padding dilakukan
menggunakan fillbyte yang ditentukan (default adalah ruang ASCII). Untuk bytesobjek, urutan
asli dikembalikan jika lebarnya kurang dari atau sama dengan len(s).

Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.
bytes.rsplit( September = None , maxsplit = -1 )
bytearray.rsplit( September = None , maxsplit = -1 )
Pisahkan urutan biner menjadi suburutan dari jenis yang sama, menggunakan sep sebagai string
pembatas. Jika maxsplit diberikan, paling banyak dilakukan maxsplit split, yang paling
kanan . Jika sep tidak ditentukan atau None, setiap suburutan yang hanya terdiri dari spasi putih
ASCII adalah pemisah. Kecuali membelah dari kanan, rsplit()berperilaku
seperti split()yang dijelaskan secara rinci di bawah ini.

bytes.rstrip( [ Karakter ] )
bytearray.rstrip( [ Karakter ] )
Kembalikan salinan urutan dengan byte tambahan yang ditentukan dihapus. The chars argumen
adalah urutan biner menentukan seperangkat nilai-nilai byte untuk dihapus - nama mengacu
pada fakta metode ini biasanya digunakan dengan karakter ASCII. Jika dihilangkan
atau None, argumen karakter default untuk menghapus spasi putih ASCII. The chars Argumen
tidak akhiran; alih-alih, semua kombinasi nilainya dihilangkan:

>>>
>>> b' spacious '.rstrip()
b' spacious'
>>> b'mississippi'.rstrip(b'ipz')
b'mississ'

Urutan biner nilai byte yang akan dihapus dapat berupa objek seperti byte apa
pun . Lihat removesuffix()metode yang akan menghapus string sufiks tunggal daripada
semua set karakter. Sebagai contoh:

>>>
>>> b'Monty Python'.rstrip(b' Python')
b'M'
>>> b'Monty Python'.removesuffix(b' Python')
b'Monty'
Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.

bytes.split( September = None , maxsplit = -1 )


bytearray.split( September = None , maxsplit = -1 )
Pisahkan urutan biner menjadi suburutan dari jenis yang sama, menggunakan sep sebagai string
pembatas. Jika maxsplit diberikan dan non-negatif, paling banyak maxsplit split dilakukan
(dengan demikian, daftar akan memiliki paling banyak maxsplit+1 elemen). Jika maxsplit tidak
ditentukan atau -1, maka tidak ada batasan jumlah split (semua kemungkinan split dibuat).

Jika sep diberikan, pembatas berurutan tidak dikelompokkan bersama dan dianggap membatasi
urutan kosong (misalnya, b'1,,2'.split(b',') return ). The September Argumen dapat terdiri
dari urutan multibyte (misalnya, pengembalian ). Memisahkan urutan kosong dengan pemisah
yang ditentukan akan mengembalikan atau tergantung pada jenis objek yang
dipisah. The September Argumen mungkin setiap byte-seperti
objek .[b'1', b'', b'2']b'1<>2<>3'.split(b'<>')[b'1', b'2', b'3'][b''][bytear
ray(b'')]
Sebagai contoh:

>>>
>>> b'1,2,3'.split(b',')
[b'1', b'2', b'3']
>>> b'1,2,3'.split(b',', maxsplit=1)
[b'1', b'2,3']
>>> b'1,2,,3,'.split(b',')
[b'1', b'2', b'', b'3', b'']

Jika sep tidak ditentukan atau None, algoritme pemisahan yang berbeda diterapkan: menjalankan
spasi putih ASCII berturut-turut dianggap sebagai pemisah tunggal, dan hasilnya tidak akan berisi
string kosong di awal atau akhir jika urutan memiliki spasi awal atau akhir. Akibatnya, pemisahan
urutan kosong atau urutan yang hanya terdiri dari spasi putih ASCII tanpa pemisah yang
ditentukan akan menghasilkan [].

Sebagai contoh:

>>>
>>> b'1 2 3'.split()
[b'1', b'2', b'3']
>>> b'1 2 3'.split(maxsplit=1)
[b'1', b'2 3']
>>> b' 1 2 3 '.split()
[b'1', b'2', b'3']
bytes.strip( [ Karakter ] )
bytearray.strip( [ Karakter ] )
Kembalikan salinan urutan dengan byte awal dan akhir yang ditentukan
dihapus. The chars argumen adalah urutan biner menentukan seperangkat nilai-nilai byte untuk
dihapus - nama mengacu pada fakta metode ini biasanya digunakan dengan karakter ASCII. Jika
dihilangkan atau None, argumen karakter default untuk menghapus spasi putih
ASCII. The chars Argumen tidak awalan atau akhiran; alih-alih, semua kombinasi nilainya
dihilangkan:

>>>
>>> b' spacious '.strip()
b'spacious'
>>> b'www.example.com'.strip(b'cmowz.')
b'example'

Urutan biner nilai byte yang akan dihapus dapat berupa objek seperti byte apa pun .

Catatan
Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.

Metode berikut pada byte dan objek bytearray mengasumsikan penggunaan format biner yang
kompatibel dengan ASCII dan tidak boleh diterapkan pada data biner arbitrer. Perhatikan
bahwa semua metode bytearray di bagian ini tidak beroperasi di tempat, dan malah
menghasilkan objek baru.

bytes.capitalize( )
bytearray.capitalize( )
Kembalikan salinan urutan dengan setiap byte ditafsirkan sebagai karakter ASCII, dan byte
pertama dikapitalisasi dan sisanya huruf kecil. Nilai byte non-ASCII dilewatkan tanpa perubahan.

Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.
bytes.expandtabs( Tabsize = 8 )
bytearray.expandtabs( Tabsize = 8 )
Kembalikan salinan urutan di mana semua karakter tab ASCII diganti dengan satu atau beberapa
spasi ASCII, bergantung pada kolom saat ini dan ukuran tab yang diberikan. Posisi tab terjadi
setiap byte ukuran tab (defaultnya adalah 8, memberikan posisi tab pada kolom 0, 8, 16 dan
seterusnya). Untuk memperluas urutan, kolom saat ini diatur ke nol dan urutan diperiksa byte
demi byte. Jika byte adalah karakter tab ASCII ( b'\t'), satu atau lebih karakter spasi
dimasukkan ke dalam hasil hingga kolom saat ini sama dengan posisi tab berikutnya. (Karakter
tab itu sendiri tidak disalin.) Jika byte saat ini adalah baris baru ASCII ( b'\n') atau carriage
return (b'\r'), itu disalin dan kolom saat ini diatur ulang ke nol. Nilai byte lainnya disalin tidak
berubah dan kolom saat ini bertambah satu, terlepas dari bagaimana nilai byte diwakili saat
dicetak:

>>>
>>> b'01\t012\t0123\t01234'.expandtabs()
b'01 012 0123 01234'
>>> b'01\t012\t0123\t01234'.expandtabs(4)
b'01 012 0123 01234'
Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.
bytes.isalnum( )
bytearray.isalnum( )
Kembalikan Truejika semua byte dalam urutan adalah karakter ASCII alfabetis atau angka
desimal ASCII dan urutannya tidak kosong, Falsejika tidak. Karakter ASCII abjad adalah nilai
byte dalam urutan b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' . Digit
desimal ASCII adalah nilai byte dalam urutan b'0123456789'.

Sebagai contoh:

>>>
>>> b'ABCabc1'.isalnum()
True
>>> b'ABC abc1'.isalnum()
False
bytes.isalpha( )
bytearray.isalpha( )
Kembali Truejika semua byte dalam urutan adalah karakter ASCII alfabet dan urutannya tidak
kosong, Falsesebaliknya. Karakter ASCII abjad adalah nilai byte dalam
urutan b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' .

Sebagai contoh:

>>>
>>> b'ABCabc'.isalpha()
True
>>> b'ABCabc1'.isalpha()
False
bytes.isascii( )
bytearray.isascii( )
Kembali Truejika urutannya kosong atau semua byte dalam urutan adalah ASCII, Falsejika
tidak. Byte ASCII berada dalam kisaran 0-0x7F.

Baru di versi 3.7.

bytes.isdigit( )
bytearray.isdigit( )
Kembali Truejika semua byte dalam urutan adalah angka desimal ASCII dan urutannya tidak
kosong, Falsesebaliknya. Digit desimal ASCII adalah nilai byte dalam urutan b'0123456789'.

Sebagai contoh:

>>>
>>> b'1234'.isdigit()
True
>>> b'1.23'.isdigit()
False
bytes.islower( )
bytearray.islower( )
Kembalikan Truejika setidaknya ada satu karakter ASCII huruf kecil dalam urutan dan tidak ada
karakter ASCII huruf besar, Falsejika tidak.

Sebagai contoh:

>>>
>>> b'hello world'.islower()
True
>>> b'Hello world'.islower()
False

Karakter ASCII huruf kecil adalah nilai byte dalam


urutan b'abcdefghijklmnopqrstuvwxyz'. Karakter ASCII huruf besar adalah nilai byte dalam
urutan b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

bytes.isspace( )
bytearray.isspace( )
Kembalikan Truejika semua byte dalam urutan adalah spasi putih ASCII dan urutannya tidak
kosong, Falsejika tidak. Karakter spasi putih ASCII adalah nilai byte dalam urutan (spasi, tab,
baris baru, carriage return, tab vertikal, umpan formulir). b' \t\n\r\x0b\f'

bytes.istitle( )
bytearray.istitle( )
Kembali Truejika urutannya adalah judul ASCII dan urutannya tidak kosong, Falsejika
tidak. Lihat bytes.title()untuk detail lebih lanjut tentang definisi "titlecase".

Sebagai contoh:

>>>
>>> b'Hello World'.istitle()
True
>>> b'Hello world'.istitle()
False
bytes.isupper( )
bytearray.isupper( )
Kembalikan Truejika setidaknya ada satu karakter ASCII abjad huruf besar dalam urutan dan
tidak ada karakter ASCII huruf kecil, Falsejika tidak.

Sebagai contoh:

>>>
>>> b'HELLO WORLD'.isupper()
True
>>> b'Hello world'.isupper()
False

Karakter ASCII huruf kecil adalah nilai byte dalam


urutan b'abcdefghijklmnopqrstuvwxyz'. Karakter ASCII huruf besar adalah nilai byte dalam
urutan b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

ytes.lower( )
bytearray.lower( )
Kembalikan salinan urutan dengan semua karakter ASCII huruf besar yang dikonversi ke
pasangan huruf kecil yang sesuai.

Sebagai contoh:

>>>
>>> b'Hello World'.lower()
b'hello world'

Karakter ASCII huruf kecil adalah nilai byte dalam


urutan b'abcdefghijklmnopqrstuvwxyz'. Karakter ASCII huruf besar adalah nilai byte dalam
urutan b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.
bytes.splitlines( Keepends = False )
bytearray.splitlines( Keepends = False )
Kembalikan daftar garis dalam urutan biner, putus pada batas garis ASCII. Metode ini
menggunakan pendekatan garis baru universal untuk memisahkan garis. Hentian baris tidak
disertakan dalam daftar yang dihasilkan kecuali jika keepends diberikan dan benar.

Sebagai contoh:

>>>
>>> b'ab c\n\nde fg\rkl\r\n'.splitlines()
[b'ab c', b'', b'de fg', b'kl']
>>> b'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True)
[b'ab c\n', b'\n', b'de fg\r', b'kl\r\n']

Tidak seperti split()ketika string pembatas sep diberikan, metode ini mengembalikan daftar
kosong untuk string kosong, dan pemutusan baris terminal tidak menghasilkan baris tambahan:
>>>
>>> b"".split(b'\n'), b"Two lines\n".split(b'\n')
([b''], [b'Two lines', b''])
>>> b"".splitlines(), b"One line\n".splitlines()
([], [b'One line'])
bytes.swapcase( )
bytearray.swapcase( )
Kembalikan salinan urutan dengan semua karakter ASCII huruf kecil yang dikonversi ke
pasangan huruf besar yang sesuai dan sebaliknya.

Sebagai contoh:

>>>
>>> b'Hello World'.swapcase()
b'hELLO wORLD'

Karakter ASCII huruf kecil adalah nilai byte dalam


urutan b'abcdefghijklmnopqrstuvwxyz'. Karakter ASCII huruf besar adalah nilai byte dalam
urutan b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

Tidak seperti str.swapcase(), selalu demikian untuk versi biner. Konversi kasus simetris di
ASCII, meskipun itu umumnya tidak berlaku untuk poin kode Unicode yang berubah-
ubah.bin.swapcase().swapcase() == bin

Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.
bytes.title( )
bytearray.title( )
Mengembalikan versi urutan biner dengan judul huruf besar di mana kata-kata dimulai dengan
karakter ASCII huruf besar dan karakter yang tersisa adalah huruf kecil. Nilai byte yang tidak
dibungkus dibiarkan tidak dimodifikasi.

Sebagai contoh:

>>>
>>> b'Hello world'.title()
b'Hello World'

Karakter ASCII huruf kecil adalah nilai byte dalam


urutan b'abcdefghijklmnopqrstuvwxyz'. Karakter ASCII huruf besar adalah nilai byte dalam
urutan b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. Semua nilai byte lainnya tidak dibuka.
Algoritme menggunakan definisi kata yang tidak tergantung bahasa sederhana sebagai kelompok
huruf yang berurutan. Definisi ini berfungsi dalam banyak konteks tetapi itu berarti bahwa
apostrof dalam kontraksi dan posesif membentuk batas kata, yang mungkin bukan hasil yang
diinginkan:

>>>
>>> b"they're bill's friends from the UK".title()
b"They'Re Bill'S Friends From The Uk"

Solusi untuk apostrof dapat dibuat menggunakan ekspresi reguler:

>>>
>>> import re
>>> def titlecase(s):
... return re.sub(rb"[A-Za-z]+('[A-Za-z]+)?",
... lambda mo: mo.group(0)[0:1].upper() +
... mo.group(0)[1:].lower(),
... s)
...
>>> titlecase(b"they're bill's friends.")
b"They're Bill's Friends."
Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.
bytes.upper( )
bytearray.upper( )
Kembalikan salinan urutan dengan semua karakter ASCII huruf kecil yang dikonversi ke
pasangan huruf besar yang sesuai.

Sebagai contoh:

>>>
>>> b'Hello World'.upper()
b'HELLO WORLD'

Karakter ASCII huruf kecil adalah nilai byte dalam


urutan b'abcdefghijklmnopqrstuvwxyz'. Karakter ASCII huruf besar adalah nilai byte dalam
urutan b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

Catatan
Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.
bytes.zfill( Lebar )
bytearray.zfill( Lebar )
Kembalikan salinan urutan kiri yang diisi dengan b'0'digit ASCII untuk membuat urutan dengan
panjang lebar . Awalan tanda utama ( b'+'/ b'-') ditangani dengan menyisipkan
padding setelah karakter tanda dan bukan sebelumnya. Untuk bytesobjek, urutan asli
dikembalikan jika lebarnya kurang dari atau sama dengan len(seq).

Sebagai contoh:

>>>
>>> b"42".zfill(5)
b'00042'
>>> b"-42".zfill(5)
b'-0042'
Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru,
bahkan jika tidak ada perubahan yang dibuat.

printf-gaya Bytes Formatting

Catatan
Operasi pemformatan yang dijelaskan di sini menunjukkan berbagai keanehan yang menyebabkan sejumlah kesalahan
umum (seperti gagal menampilkan tupel dan kamus dengan benar). Jika nilai yang dicetak mungkin berupa tupel atau
kamus, bungkus dalam tupel.

Objek byte ( bytes/ bytearray) memiliki satu operasi %bawaan yang unik: operator (modulo). Ini juga
dikenal sebagai format byte atau operator interpolasi . Diberikan (di mana format adalah objek
byte), spesifikasi konversi dalam format diganti dengan nol atau lebih elemen nilai . Efeknya mirip
dengan menggunakan dalam bahasa C.format % values%sprintf()

Jika format memerlukan argumen tunggal, nilai dapat berupa objek non-Tuple tunggal. 5 Jika
tidak, nilai harus berupa tupel dengan jumlah item yang persis ditentukan oleh objek format byte, atau
objek pemetaan tunggal (misalnya, kamus).

Penentu konversi berisi dua atau lebih karakter dan memiliki komponen berikut, yang harus terjadi
dalam urutan ini:

1. The '%'karakter, yang menandai awal dari specifier tersebut.


2. Kunci pemetaan (opsional), terdiri dari urutan karakter yang dikurung (misalnya, (somename)).
3. Tanda konversi (opsional), yang memengaruhi hasil beberapa jenis konversi.
4. Lebar bidang minimum (opsional). Jika ditentukan sebagai '*'(tanda bintang), lebar sebenarnya
dibaca dari elemen berikutnya dari tupel di values , dan objek yang akan dikonversi muncul
setelah lebar bidang minimum dan presisi opsional.
5. Presisi (opsional), diberikan sebagai '.'(titik) diikuti dengan presisi. Jika ditentukan
sebagai '*'(tanda bintang), presisi aktual dibaca dari elemen berikutnya dari tupel di values ,
dan nilai yang akan dikonversi muncul setelah presisi.
6. Pengubah panjang (opsional).
7. Jenis konversi.

Ketika argumen yang tepat adalah kamus (atau tipe pemetaan lainnya), maka format dalam objek
byte harus menyertakan kunci pemetaan yang dikurung ke dalam kamus yang disisipkan segera
setelah '%'karakter. Kunci pemetaan memilih nilai yang akan diformat dari pemetaan. Sebagai contoh:

>>>

>>> print(b'%(language)s has %(number)03d quote types.' %


... {b'language': b"Python", b"number": 2})
b'Python has 002 quote types.'

Dalam hal ini tidak ada *penentu yang dapat muncul dalam format (karena mereka memerlukan daftar
parameter berurutan).

Karakter tanda konversi adalah:

Bendera Berarti
'#' Konversi nilai akan menggunakan "bentuk alternatif" (di mana didefinisikan di bawah).

'0' Konversi akan menjadi nol empuk untuk nilai numerik.

'-' Nilai yang dikonversi dibiarkan disesuaikan (menggantikan '0' konversi jika keduanya diberikan).

(spasi) Kosong harus dibiarkan sebelum angka positif (atau string kosong) yang dihasilkan oleh
' '
konversi bertanda.

'+' Karakter tanda ( '+'atau '-') akan mendahului konversi (menggantikan tanda “spasi”).

Pengubah panjang ( h, l, atau L) mungkin ada, tetapi diabaikan karena tidak diperlukan untuk Python –
jadi eg %ldidentik dengan %d.

Jenis konversinya adalah:

Konversi Berarti Catatan

'd' Desimal bilangan bulat bertanda.


Konversi Berarti Catatan

'i' Desimal bilangan bulat bertanda.

'o' Nilai oktal bertanda. (1)

'u' Jenis usang – identik dengan 'd'. (8)

'x' Heksadesimal bertanda (huruf kecil). (2)

'X' Heksadesimal bertanda (huruf besar). (2)

'e' Format eksponensial floating point (huruf kecil). (3)

'E' Format eksponensial floating point (huruf besar). (3)

'f' Format desimal titik mengambang. (3)

'F' Format desimal titik mengambang. (3)

Format titik mengambang. Menggunakan format eksponensial huruf kecil jika eksponen
'g' (4)
kurang dari -4 atau tidak kurang dari presisi, format desimal sebaliknya.

Format titik mengambang. Menggunakan format eksponensial huruf besar jika eksponen
'G' (4)
kurang dari -4 atau tidak kurang dari presisi, format desimal sebaliknya.

'c' Byte tunggal (menerima objek integer atau byte tunggal).

'b' Bytes (objek apa pun yang mengikuti protokol buffer atau memiliki __bytes__()). (5)

's' 's'adalah alias untuk 'b'dan hanya boleh digunakan untuk basis kode Python2/3. (6)

Bytes (mengonversi objek Python apa pun


'a' (5)
menggunakan repr(obj).encode('ascii','backslashreplace) ).

'r' 'r'adalah alias untuk 'a'dan hanya boleh digunakan untuk basis kode Python2/3. (7)

'%' Tidak ada argumen yang dikonversi, menghasilkan '%' karakter dalam hasil.

Catatan:

1. Bentuk alternatif menyebabkan penentu oktal terdepan ( '0o') disisipkan sebelum digit pertama.
2. Bentuk alternatif menyebabkan awalan '0x'atau '0X'(bergantung pada
apakah format 'x'or 'X'digunakan) untuk disisipkan sebelum digit pertama.
3. Bentuk alternatif menyebabkan hasil selalu berisi titik desimal, bahkan jika tidak ada angka yang
mengikutinya.

Presisi menentukan jumlah digit setelah titik desimal dan default ke 6.


4. Bentuk alternatif menyebabkan hasil selalu berisi titik desimal, dan angka nol yang tertinggal tidak
dihilangkan seperti yang seharusnya.

Presisi menentukan jumlah digit signifikan sebelum dan sesudah titik desimal dan default ke 6.
5. Jika presisi adalah N, output dipotong menjadi Nkarakter.
6. b'%s' sudah usang, tetapi tidak akan dihapus selama seri 3.x.
7. b'%r' sudah usang, tetapi tidak akan dihapus selama seri 3.x.
8. Lihat PP 237 .
Catatan

Versi bytearray dari metode ini tidak beroperasi di tempat - selalu menghasilkan objek baru, bahkan jika
tidak ada perubahan yang dibuat.
Lihat juga

PEP 461 - Menambahkan % pemformatan ke byte dan bytearray

Baru di versi 3.5.

Memori Views

memoryviewobjek memungkinkan kode Python untuk mengakses data internal objek yang
mendukung protokol buffer tanpa menyalin.

class memoryview( objek )

Buat objekmemoryview referensi itu . objek harus mendukung protokol buffer. Objek bawaan yang
mendukung protokol buffer termasuk bytesdan bytearray.

A memoryviewmemiliki gagasan tentang elemen , yang merupakan unit memori atomik yang ditangani
oleh objek asal . Untuk banyak tipe sederhana seperti bytesand bytearray, sebuah elemen adalah
satu byte, tetapi tipe lain seperti array.arraymungkin memiliki elemen yang lebih besar.

len(view)adalah sama dengan panjang tolist. Jika , panjangnya adalah 1. Jika , panjangnya sama
dengan jumlah elemen dalam tampilan. Untuk dimensi yang lebih tinggi, panjangnya sama dengan
panjang representasi daftar bersarang dari tampilan. The atribut akan memberikan jumlah byte dalam
satu elemen.view.ndim = 0view.ndim = 1itemsize

A memoryviewmendukung pengirisan dan pengindeksan untuk mengekspos datanya. Pengirisan satu


dimensi akan menghasilkan subview:

>>>
>>> v = memoryview(b'abcefg')
>>> v[1]
98
>>> v[-1]
103
>>> v[1:4]
<memory at 0x7f3ddc9f4350>
>>> bytes(v[1:4])
b'bce'

Jika formatadalah salah satu penentu format asli dari structmodul, pengindeksan dengan bilangan
bulat atau tupel bilangan bulat juga didukung dan mengembalikan satu elemen dengan tipe yang
benar. Tampilan memori satu dimensi dapat diindeks dengan bilangan bulat atau tupel satu bilangan
bulat. Tampilan memori multidimensi dapat diindeks dengan tupel bilangan bulat ndim yang tepat
di mana ndim adalah jumlah dimensi. Tampilan memori dimensi nol dapat diindeks dengan tupel
kosong.

Berikut adalah contoh dengan format non-byte:

>>>
>>> import array
>>> a = array.array('l', [-11111111, 22222222, -33333333, 44444444])
>>> m = memoryview(a)
>>> m[0]
-11111111
>>> m[-1]
44444444
>>> m[::2].tolist()
[-11111111, -33333333]

Jika objek yang mendasarinya dapat ditulis, tampilan memori mendukung penetapan irisan satu
dimensi. Mengubah ukuran tidak diperbolehkan:

>>>
>>> data = bytearray(b'abcefg')
>>> v = memoryview(data)
>>> v.readonly
False
>>> v[0] = ord(b'z')
>>> data
bytearray(b'zbcefg')
>>> v[1:4] = b'123'
>>> data
bytearray(b'z123fg')
>>> v[2:3] = b'spam'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: memoryview assignment: lvalue and rvalue have different
structures
>>> v[2:6] = b'spam'
>>> data
bytearray(b'z1spam')

Tampilan memori satu dimensi dari tipe hashable (read-only) dengan format 'B', 'b' atau 'c' juga dapat di-
hash. Hash didefinisikan sebagai :hash(m) == hash(m.tobytes())

>>>
>>> v = memoryview(b'abcefg')
>>> hash(v) == hash(b'abcefg')
True
>>> hash(v[2:4]) == hash(b'ce')
True
>>> hash(v[::-2]) == hash(b'abcefg'[::-2])
True

Berubah di versi 3.3: Tampilan memori satu dimensi sekarang dapat dipotong. Tampilan memori satu
dimensi dengan format 'B', 'b' atau 'c' sekarang dapat di-hash.

Berubah di versi 3.4: memoryview sekarang terdaftar secara otomatis


dengan collections.abc.Sequence

Berubah di versi 3.5: tampilan memori sekarang dapat diindeks dengan tupel bilangan bulat.

memoryview memiliki beberapa metode:

__eq__( Eksportir )

Sebuah tampilan memori dan Eksportir PEP 3118 adalah sama jika bentuknya ekuivalen dan jika
semua nilai terkait sama ketika kode format masing-masing operan diinterpretasikan
menggunakanstructsintaks.

Untuk subset structstring format yang saat ini didukung oleh tolist(), vdan wsama dengan
jika :v.tolist() == w.tolist()

>>>
>>> import array
>>> a = array.array('I', [1, 2, 3, 4, 5])
>>> b = array.array('d', [1.0, 2.0, 3.0, 4.0, 5.0])
>>> c = array.array('b', [5, 3, 1])
>>> x = memoryview(a)
>>> y = memoryview(b)
>>> x == a == y == b
True
>>> x.tolist() == a.tolist() == y.tolist() == b.tolist()
True
>>> z = y[::-2]
>>> z == c
True
>>> z.tolist() == c.tolist()
True

Jika salah satu format string tidak didukung oleh structmodul, maka objek akan selalu
dibandingkan sebagai tidak sama (bahkan jika string format dan konten buffer identik):

>>>
>>> from ctypes import BigEndianStructure, c_long
>>> class BEPoint(BigEndianStructure):
... _fields_ = [("x", c_long), ("y", c_long)]
...
>>> point = BEPoint(100, 200)
>>> a = memoryview(point)
>>> b = memoryview(point)
>>> a == point
False
>>> a == b
False

Perhatikan bahwa, seperti dengan floating point, tidak tidak menyiratkan untuk objek
memoryview.v is wv == w

Diubah di versi 3.3: Versi sebelumnya membandingkan memori mentah dengan mengabaikan
format item dan struktur larik logis.

tobytes( Order = None )


Kembalikan data dalam buffer sebagai bytestring. Ini sama dengan memanggil byteskonstruktor
pada tampilan memori.

>>>
>>> m = memoryview(b"abc")
>>> m.tobytes()
b'abc'
>>> bytes(m)
b'abc'

Untuk array yang tidak bersebelahan, hasilnya sama dengan representasi daftar yang diratakan
dengan semua elemen dikonversi ke byte. tobytes() mendukung semua format string,
termasuk yang tidak ada dalam structsintaks modul.

Baru di versi 3.8: pesanan bisa {'C', 'F', 'A'}. Bila urutannya adalah 'C' atau 'F', data dari larik asli
diubah menjadi urutan C atau Fortran. Untuk tampilan yang berdekatan, 'A' mengembalikan
salinan persis dari memori fisik. Secara khusus, urutan Fortran dalam memori
dipertahankan. Untuk tampilan yang tidak bersebelahan, data dikonversi ke C terlebih
dahulu. order=Tidak ada yang sama dengan order='C' .

hex( [ September [ , bytes_per_sep ] ] )


Kembalikan objek string yang berisi dua digit heksadesimal untuk setiap byte dalam buffer.

>>>
>>> m = memoryview(b"abc")
>>> m.hex()
'616263'

Baru di versi 3.5.

Berubah di versi 3.8: Mirip dengan bytes.hex(), memoryview.hex()sekarang


mendukung parameter sep dan byte_per_sep opsional untuk menyisipkan pemisah antara byte
dalam output hex.

tolist( )
Kembalikan data dalam buffer sebagai daftar elemen.

>>>
>>> memoryview(b'abc').tolist()
[97, 98, 99]
>>> import array
>>> a = array.array('d', [1.1, 2.2, 3.3])
>>> m = memoryview(a)
>>> m.tolist()
[1.1, 2.2, 3.3]

Berubah di versi 3.3:tolist() sekarang mendukung semua format asli karakter tunggal
dalam structsintaks modul serta representasi multi-dimensi.

toreadonly( )
Mengembalikan versi readonly dari objek memoryview. Objek memoryview asli tidak berubah.

>>>
>>> m = memoryview(bytearray(b'abc'))
>>> mm = m.toreadonly()
>>> mm.tolist()
[89, 98, 99]
>>> mm[0] = 42
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot modify read-only memory
>>> m[0] = 43
>>> mm.tolist()
[43, 98, 99]

Baru di versi 3.8.

release( )
Lepaskan buffer dasar yang diekspos oleh objek memoryview. Banyak objek mengambil tindakan
khusus saat tampilan dipegang pada objek tersebut (misalnya, a bytearrayuntuk sementara
akan melarang pengubahan ukuran); oleh karena itu, memanggil release() berguna untuk
menghapus batasan ini (dan membebaskan semua sumber daya yang menggantung) sesegera
mungkin.

Setelah metode ini dipanggil, setiap operasi lebih lanjut pada tampilan memunculkan
a ValueError(kecuali release()dirinya sendiri yang dapat dipanggil beberapa kali):

>>>
>>> m = memoryview(b'abc')
>>> m.release()
>>> m[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operation forbidden on released memoryview object

Protokol manajemen konteks dapat digunakan untuk efek serupa,


menggunakan withpernyataan:

>>>
>>> with memoryview(b'abc') as m:
... m[0]
...
97
>>> m[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operation forbidden on released memoryview object

Baru di versi 3.2.

cast( Format [ , bentuk ] )


Transmisikan tampilan memori ke format atau bentuk baru. bentuk default
ke [byte_length//new_itemsize], yang berarti tampilan hasil akan menjadi satu
dimensi. Nilai yang dikembalikan adalah tampilan memori baru, tetapi buffer itu sendiri tidak
disalin. Pemeran yang didukung adalah 1D -> C- bersebelahan dan C-berdekatan -> 1D.

Format tujuan dibatasi untuk format asli elemen tunggal dalam structsintaks. Salah satu format
harus dalam format byte ('B', 'b' atau 'c'). Panjang byte hasil harus sama dengan panjang aslinya.
Cast 1D/panjang ke 1D/byte yang tidak ditandatangani:

>>>
>>> import array
>>> a = array.array('l', [1,2,3])
>>> x = memoryview(a)
>>> x.format
'l'
>>> x.itemsize
8
>>> len(x)
3
>>> x.nbytes
24
>>> y = x.cast('B')
>>> y.format
'B'
>>> y.itemsize
1
>>> len(y)
24
>>> y.nbytes
24

Keluarkan 1D/byte yang tidak ditandatangani ke 1D/char:

>>>
>>> b = bytearray(b'zyz')
>>> x = memoryview(b)
>>> x[0] = b'a'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: memoryview: invalid value for format "B"
>>> y = x.cast('c')
>>> y[0] = b'a'
>>> b
bytearray(b'ayz')

Keluarkan 1D/byte ke 3D/ints ke 1D/karakter yang ditandatangani:

>>>
>>> import struct
>>> buf = struct.pack("i"*12, *list(range(12)))
>>> x = memoryview(buf)
>>> y = x.cast('i', shape=[2,2,3])
>>> y.tolist()
[[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]]
>>> y.format
'i'
>>> y.itemsize
4
>>> len(y)
2
>>> y.nbytes
48
>>> z = y.cast('b')
>>> z.format
'b'
>>> z.itemsize
1
>>> len(z)
48
>>> z.nbytes
48

Cast 1D/unsigned long ke 2D/unsigned long:

>>>
>>> buf = struct.pack("L"*6, *list(range(6)))
>>> x = memoryview(buf)
>>> y = x.cast('L', shape=[2,3])
>>> len(y)
2
>>> y.nbytes
48
>>> y.tolist()
[[0, 1, 2], [3, 4, 5]]

Baru di versi 3.3.

Diubah di versi 3.5: Format sumber tidak lagi dibatasi saat mentransmisikan ke tampilan byte.

Ada juga beberapa atribut readonly yang tersedia:

obj
Objek yang mendasari tampilan memori:

>>>
>>> b = bytearray(b'xyz')
>>> m = memoryview(b)
>>> m.obj is b
True

Baru di versi 3.3.


nbytes
nbytes == product(shape) * itemsize == len(m.tobytes()). Ini adalah jumlah ruang
dalam byte yang akan digunakan array dalam representasi yang berdekatan. Belum tentu sama
dengan len(m):

>>>
>>> import array
>>> a = array.array('i', [1,2,3,4,5])
>>> m = memoryview(a)
>>> len(m)
5
>>> m.nbytes
20
>>> y = m[::2]
>>> len(y)
3
>>> y.nbytes
12
>>> len(y.tobytes())
12

Array multidimensi:

>>>
>>> import struct
>>> buf = struct.pack("d"*12, *[1.5*x for x in range(12)])
>>> x = memoryview(buf)
>>> y = x.cast('d', shape=[3,4])
>>> y.tolist()
[[0.0, 1.5, 3.0, 4.5], [6.0, 7.5, 9.0, 10.5], [12.0, 13.5, 15.0, 16.5]]
>>> len(y)
3
>>> y.nbytes
96

Baru di versi 3.3.

readonly
Bool yang menunjukkan apakah memori hanya baca.

format
String yang berisi format (dalam structgaya modul) untuk setiap elemen dalam
tampilan. Sebuah memoryview dapat dibuat dari eksportir dengan string format arbitrer, tetapi
beberapa metode (misalnya tolist()) dibatasi untuk format elemen tunggal asli.

Berubah di versi 3.3: format 'B'sekarang ditangani sesuai dengan sintaks modul struct. Ini
berarti bahwa .memoryview(b'abc')[0] == b'abc'[0] == 97
itemsize
Ukuran dalam byte setiap elemen tampilan memori:

>>>
>>> import array, struct
>>> m = memoryview(array.array('H', [32000, 32001, 32002]))
>>> m.itemsize
2
>>> m[0]
32000
>>> struct.calcsize('H') == m.itemsize
True
ndim
Integer yang menunjukkan berapa banyak dimensi dari array multi-dimensi yang diwakili oleh
memori.

shape
Sebuah tupel bilangan bulat panjang ndimmemberikan bentuk memori sebagai array N-dimensi.

Diubah di versi 3.3: Tuple kosong alih-alih Noneketika ndim = 0.

strides
Tuple bilangan bulat panjang ndimmemberikan ukuran dalam byte untuk mengakses setiap
elemen untuk setiap dimensi array.

Diubah di versi 3.3: Tuple kosong alih-alih Noneketika ndim = 0.

suboffsets
Digunakan secara internal untuk array gaya PIL. Nilainya hanya bersifat informasi.

c_contiguous
Sebuah bool yang menunjukkan apakah memori C- bersebelahan .

Baru di versi 3.3.

f_contiguous
Sebuah bool menunjukkan apakah memori Fortran bersebelahan .

Baru di versi 3.3.

contiguous
Sebuah bool menunjukkan apakah memori bersebelahan .

Baru di versi 3.3.


Set Jenis - set, frozenset
Sebuah set objek adalah koleksi unordered dari yang berbeda hashable objek. Penggunaan umum
termasuk pengujian keanggotaan, menghapus duplikat dari urutan, dan menghitung operasi matematika
seperti persimpangan, persatuan, perbedaan, dan perbedaan simetris. (Untuk wadah lain lihat built-
in dict, list, dan tuplekelas, dan collectionsmodul.)

Seperti koleksi lainnya, set support , , dan . Menjadi koleksi yang tidak berurutan, set tidak mencatat
posisi elemen atau urutan penyisipan. Dengan demikian, set tidak mendukung pengindeksan,
pengirisan, atau perilaku seperti urutan lainnya.x in setlen(set)for x in set

Saat ini ada dua jenis set bawaan, setdan frozenset. The setjenis bisa berubah - isi dapat diubah
dengan menggunakan metode seperti add()dan remove(). Karena dapat berubah, ia tidak memiliki
nilai hash dan tidak dapat digunakan sebagai kunci kamus atau sebagai elemen dari set
lain. The frozensettipe adalah kekal dan hashable - isinya tidak dapat diubah setelah dibuat; karena
itu dapat digunakan sebagai kunci kamus atau sebagai elemen dari set lain.

Himpunan tidak kosong (bukan himpunan beku) dapat dibuat dengan menempatkan daftar elemen yang
dipisahkan koma di dalam kurung kurawal, misalnya: , di
samping konstruktor.{'jack', 'sjoerd'}set

Konstruktor untuk kedua kelas bekerja sama:

kelas set( [ iterable ] )

kelas frozenset( [ iterable ] )

Kembalikan objek set atau frozenset baru yang elemennya diambil dari iterable . Elemen-elemen
dari suatu himpunan harus hashable . Untuk merepresentasikan himpunan himpunan, himpunan
bagian dalam harus berupa frozenset objek. Jika iterable tidak ditentukan, set kosong baru
dikembalikan.

Set dapat dibuat dengan beberapa cara:

 Gunakan daftar elemen yang dipisahkan koma dalam kurung


kurawal: {'jack', 'sjoerd'}
 Gunakan pemahaman yang
ditetapkan: {c for c in 'abracadabra' if c not in 'abc'}
 Gunakan konstruktor tipe: set(), set('foobar'),set(['a', 'b', 'foo'])
Contoh dari setdan frozensetmenyediakan operasi berikut:

len(s)
Kembalikan jumlah elemen dalam himpunan s (kardinalitas s ).

x in s
Uji x untuk keanggotaan di s .

x not in s
Uji x untuk non-keanggotaan di s .

isdisjoint( Lainnya )
Kembali Truejika set tidak memiliki elemen yang sama dengan lainnya . Himpunan disjoint jika
dan hanya jika perpotongannya adalah himpunan kosong.

issubset( Lainnya )
set <= other
Menguji apakah setiap elemen dalam himpunan adalah di lain .

set < other


Uji apakah himpunan tersebut merupakan himpunan bagian yang tepat dari other ,
yaitu .set <= other and set != other

issuperset( Lainnya )
set >= other
Uji apakah setiap elemen di yang lain ada di dalam himpunan.

set > other


Uji apakah himpunan tersebut merupakan superset wajar dari lainnya ,
yaitu .set >= other and set != other

union( * Orang lain )


set | other | ...
Kembalikan set baru dengan elemen dari set dan yang lainnya.

intersection( * Orang lain )


set & other & ...
Kembalikan set baru dengan elemen yang sama dengan set dan yang lainnya.

difference( * Orang lain )


set - other - ...
Kembalikan set baru dengan elemen di set yang tidak ada di yang lain.

symmetric_difference( Lainnya )
set ^ other
Kembalikan set baru dengan elemen di set atau lainnya tetapi tidak keduanya.

copy( )
Kembalikan salinan set yang dangkal.

Catatan, versi non-operator dari union(), intersection(), difference(),


dan symmetric_difference(), issubset(), dan issuperset()metode akan menerima iterable
apa pun sebagai argumen. Sebaliknya, rekan-rekan berbasis operator mereka membutuhkan argumen
mereka untuk ditetapkan. Ini menghalangi konstruksi rawan kesalahan seperti mendukung lebih mudah
dibaca .set('abc') & 'cbs'set('abc').intersection('cbs')

Keduanya setdan frozensetdukungan diatur untuk mengatur perbandingan. Dua himpunan adalah
sama jika dan hanya jika setiap elemen dari setiap himpunan terkandung di dalam himpunan lainnya
(masing-masing merupakan bagian dari himpunan lainnya). Suatu himpunan kurang dari himpunan lain
jika dan hanya jika himpunan pertama adalah himpunan bagian yang tepat dari himpunan kedua
(merupakan himpunan bagian, tetapi tidak sama). Suatu himpunan lebih besar dari himpunan lain jika
dan hanya jika himpunan pertama merupakan superset wajar dari himpunan kedua (merupakan
superset, tetapi tidak sama).

Instance dari setdibandingkan dengan instance dari frozenset berdasarkan


anggotanya. Misalnya, kembali dan begitu
juga .set('abc') == frozenset('abc')Trueset('abc') in set([frozenset('abc')])

Perbandingan subset dan kesetaraan tidak digeneralisasi ke fungsi pemesanan total. Sebagai contoh,
dua himpunan disjoint tak kosong mana pun tidak sama dan bukan himpunan bagian satu sama lain,
jadi semua hasil berikut ini False: a<b, a==b, atau a>b.

Karena set hanya mendefinisikan pengurutan parsial (hubungan subset), output


dari list.sort()metode ini tidak ditentukan untuk daftar set.

Elemen set, seperti kunci kamus, harus hashable .


Operasi biner yang menggabungkan setinstance dengan frozenset mengembalikan jenis operan
pertama. Sebagai contoh: mengembalikan sebuah instance
dari .frozenset('ab') | set('bc')frozenset

Tabel berikut mencantumkan operasi yang tersedia untuk setitu tidak berlaku untuk instans yang tidak
dapat diubah dari frozenset:

update( * Orang lain )


set |= other | ...
Perbarui set, tambahkan elemen dari yang lainnya.

intersection_update( * Orang lain )


set &= other & ...
Perbarui set, simpan hanya elemen yang ditemukan di dalamnya dan yang lainnya.

difference_update( * Orang lain )


set -= other | ...
Perbarui set, hapus elemen yang ditemukan di yang lain.

symmetric_difference_update( Lainnya )
set ^= other
Perbarui set, simpan hanya elemen yang ditemukan di salah satu set, tetapi tidak di keduanya.

add( Elem )
Menambahkan elemen elem ke lokasi syuting.

remove( Elem )
Hapus elemen elem dari set. Menaikkan KeyErrorjika elem tidak terdapat dalam himpunan.

discard( Elem )
Hapus elemen elem dari set jika hadir.

pop( )
Hapus dan kembalikan elemen arbitrer dari set. Menaikkan KeyErrorjika set kosong.

clear( )
Hapus semua elemen dari set.
Catatan, versi non-operator dari update(), intersection_update(), difference_update(),
dan symmetric_difference_update() metode akan menerima iterable apa pun sebagai argumen.

Catatan, argumen elem ke __contains__(), remove(), dan discard()metode mungkin satu


set. Untuk mendukung pencarian set beku yang setara, set sementara dibuat dari elem .

Pemetaan Jenis - dict


Sebuah pemetaan obyek peta hashable nilai ke objek sewenang-wenang. Pemetaan adalah objek yang
bisa berubah. Saat ini hanya ada satu jenis pemetaan standar, kamus . (Untuk wadah lain lihat built-
in list, set, dan tuplekelas, dan collectionsmodul.)

Kunci kamus adalah nilai yang hampir arbitrer. Nilai yang tidak dapat di- hash , yaitu, nilai yang berisi
daftar, kamus, atau tipe lain yang dapat diubah (yang dibandingkan berdasarkan nilai daripada identitas
objek) tidak boleh digunakan sebagai kunci. Tipe numerik yang digunakan untuk kunci mematuhi aturan
normal untuk perbandingan numerik: jika dua angka membandingkan sama (seperti 1dan 1.0) maka
mereka dapat digunakan secara bergantian untuk mengindeks entri kamus yang sama. (Namun,
perhatikan bahwa karena komputer menyimpan angka titik-mengambang sebagai perkiraan, biasanya
tidak bijaksana untuk menggunakannya sebagai kunci kamus.)

Kamus dapat dibuat dengan menempatkan daftar pasangan yang dipisahkan koma di dalam kurung
kurawal, misalnya: atau , atau
oleh konstruktor.key: value{'jack': 4098, 'sjoerd': 4127}{4098: 'jack', 4127: 'sjoer
d'}dict

kelas dict( ** kwarg )

kelas dict( pemetaan , **kwarg )

kelas dict( iterable , ** kwarg )

Kembalikan kamus baru yang diinisialisasi dari argumen posisi opsional dan kemungkinan
kumpulan argumen kata kunci yang kosong.

Kamus dapat dibuat dengan beberapa cara:

 Gunakan daftar pasangan yang dipisahkan koma dalam kurung


kurawal: ataukey: value{'jack': 4098, 'sjoerd': 4127}{4098: 'jack', 4127
: 'sjoerd'}
 Gunakan pemahaman dict: {},{x: x ** 2 for x in range(10)}
 Gunakan konstruktor
tipe: dict(), ,dict([('foo', 100), ('bar', 200)])dict(foo=100, bar=200)

Jika tidak ada argumen posisi yang diberikan, kamus kosong dibuat. Jika argumen posisi
diberikan dan itu adalah objek pemetaan, kamus dibuat dengan pasangan nilai kunci yang sama
dengan objek pemetaan. Jika tidak, argumen posisi harus menjadi iterable objek. Setiap item
dalam iterable itu sendiri harus merupakan iterable dengan tepat dua objek. Objek pertama dari
setiap item menjadi kunci dalam kamus baru, dan objek kedua menjadi nilai yang sesuai. Jika
kunci muncul lebih dari sekali, nilai terakhir untuk kunci tersebut menjadi nilai yang sesuai dalam
kamus baru.

Jika argumen kata kunci diberikan, argumen kata kunci dan nilainya ditambahkan ke kamus yang
dibuat dari argumen posisi. Jika kunci yang ditambahkan sudah ada, nilai dari argumen kata
kunci menggantikan nilai dari argumen posisi.

Untuk mengilustrasikan, contoh berikut semuanya mengembalikan kamus sama


dengan :{"one": 1, "two": 2, "three": 3}

>>>

>>> a = dict(one=1, two=2, three=3)


>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> f = dict({'one': 1, 'three': 3}, two=2)
>>> a == b == c == d == e == f
True

Memberikan argumen kata kunci seperti pada contoh pertama hanya berfungsi untuk kunci yang
merupakan pengidentifikasi Python yang valid. Jika tidak, kunci yang valid dapat digunakan.

Ini adalah operasi yang didukung oleh kamus (dan oleh karena itu, jenis pemetaan khusus juga
harus didukung):

list(d)
Mengembalikan daftar semua kunci yang digunakan dalam kamus d .

len(d)
Mengembalikan jumlah item dalam kamus d .

d[key]
Kembalikan item d dengan key key . Menaikkan kunciKeyError if tidak ada di peta.
Jika subkelas dict mendefinisikan metode __missing__()dan kunci tidak ada, d[key]operasi
memanggil metode itu dengan kunci kunci sebagai argumen. The d[key]operasi kemudian
kembali atau kenaikan gaji apa pun yang dikembalikan atau diangkat
oleh __missing__(key)panggilan. Tidak ada operasi atau metode lain yang
dipanggil __missing__(). Jika __missing__()tidak
didefinisikan, KeyErrordinaikkan. __missing__()harus menjadi metode; itu tidak bisa menjadi
variabel instan:

>>>

>>> class Counter(dict):


... def __missing__(self, key):
... return 0
>>> c = Counter()
>>> c['red']
0
>>> c['red'] += 1
>>> c['red']
1

Contoh di atas menunjukkan bagian dari


implementasi collections.Counter. __missing__Metode yang berbeda digunakan
oleh collections.defaultdict.

d[key] = value
Setel d[key]ke nilai .

del d[key]
Hapus d[key]dari d . Menaikkan kunciKeyError if tidak ada di peta.

key in d
Kembali Truejika d memiliki kunci kunci , yang lain False.

key not in d
Setara dengan .not key in d

iter(d)
Kembalikan iterator di atas kunci kamus. Ini adalah jalan pintas untuk iter(d.keys()).

clear( )
Hapus semua item dari kamus.
copy( )
Kembalikan salinan kamus yang dangkal.

classmethod fromkeys( iterable [ , nilai ] )


Buat kamus baru dengan kunci dari iterable dan nilai disetel ke value .

fromkeys()adalah metode kelas yang mengembalikan kamus baru. nilai default


ke None. Semua nilai merujuk hanya pada satu instance, jadi umumnya tidak masuk akal
jika nilai menjadi objek yang bisa berubah seperti daftar kosong. Untuk mendapatkan nilai yang
berbeda, gunakan pemahaman dict sebagai gantinya.

get( Key [ , standar ] )


Kembalikan nilai untuk kunci jika kunci ada di kamus, selain itu default . Jika default tidak
diberikan, defaultnya adalah None, sehingga metode ini tidak pernah memunculkan KeyError.

items( )
Kembalikan tampilan baru item kamus ( berpasangan). Lihat dokumentasi objek
tampilan .(key, value)

keys( )
Kembalikan tampilan baru dari kunci kamus. Lihat dokumentasi objek tampilan .

pop( Key [ , standar ] )


Jika kunci ada di kamus, hapus dan kembalikan nilainya, jika tidak
kembalikan default . Jika default tidak diberikan dan kunci tidak ada dalam kamus,
a KeyErrordimunculkan.

popitem( )
Hapus dan kembalikan sepasang dari kamus. Pasangan dikembalikan
dalam urutan LIFO .(key, value)

popitem()berguna untuk mengulangi kamus secara destruktif, seperti yang sering digunakan
dalam algoritme himpunan. Jika kamus kosong, panggilan popitem()memunculkan KeyError.

Berubah di versi 3.7: pesanan LIFO sekarang dijamin. Dalam versi sebelumnya, popitem()akan
mengembalikan pasangan kunci/nilai arbitrer.

reversed(d)
Kembalikan iterator terbalik di atas kunci kamus. Ini adalah jalan pintas
untuk reversed(d.keys()).
Baru di versi 3.8.

setdefault( Key [ , standar ] )


Jika kunci ada dalam kamus, kembalikan nilainya. Jika tidak, masukkan kunci dengan
nilai default dan kembalikan default . default default ke None.

update( [ Lainnya ] )
Perbarui kamus dengan pasangan kunci/nilai dari yang lain , menimpa kunci yang
ada. Kembali None.

update()menerima objek kamus lain atau iterable dari pasangan kunci/nilai (sebagai tupel atau
iterable lainnya dengan panjang dua). Jika argumen kata kunci ditentukan, kamus kemudian
diperbarui dengan pasangan kunci/nilai tersebut: .d.update(red=1, blue=2)

values( )
Mengembalikan tampilan baru dari nilai kamus. Lihat dokumentasi objek tampilan .

Perbandingan kesetaraan antara satu dict.values()tampilan dan yang lain akan selalu
kembali False. Ini juga berlaku ketika membandingkan dict.values()dengan dirinya sendiri:

>>>

>>> d = {'a': 1}
>>> d.values() == d.values()
False
d | other
Buat kamus baru dengan kunci dan nilai gabungan dari d dan other , yang keduanya harus
kamus. Nilai dari other diprioritaskan ketika d dan kunci berbagi lainnya .

Baru di versi 3.9.

d |= other
Perbarui kamus d dengan kunci dan nilai dari other , yang dapat
berupa pemetaan atau iterable dari pasangan kunci/nilai. Nilai dari other diprioritaskan
ketika d dan kunci berbagi lainnya .

Baru di versi 3.9.

Kamus membandingkan sama jika dan hanya jika mereka memiliki pasangan yang sama (terlepas dari
urutan). Perbandingan urutan ('<', '<=', '>=', '>') menaikkan .(key, value)TypeError
Kamus mempertahankan urutan penyisipan. Perhatikan bahwa memperbarui kunci tidak memengaruhi
urutan. Kunci yang ditambahkan setelah penghapusan dimasukkan di bagian akhir.

>>>

>>> d = {"one": 1, "two": 2, "three": 3, "four": 4}


>>> d
{'one': 1, 'two': 2, 'three': 3, 'four': 4}
>>> list(d)
['one', 'two', 'three', 'four']
>>> list(d.values())
[1, 2, 3, 4]
>>> d["one"] = 42
>>> d
{'one': 42, 'two': 2, 'three': 3, 'four': 4}
>>> del d["two"]
>>> d["two"] = None
>>> d
{'one': 42, 'three': 3, 'four': 4, 'two': None}

Diubah di versi 3.7: Urutan kamus dijamin menjadi urutan penyisipan. Perilaku ini merupakan detail
implementasi CPython dari 3.6.

Kamus dan tampilan kamus dapat dibalik.

>>>

>>> d = {"one": 1, "two": 2, "three": 3, "four": 4}


>>> d
{'one': 1, 'two': 2, 'three': 3, 'four': 4}
>>> list(reversed(d))
['four', 'three', 'two', 'one']
>>> list(reversed(d.values()))
[4, 3, 2, 1]
>>> list(reversed(d.items()))
[('four', 4), ('three', 3), ('two', 2), ('one', 1)]

Diubah di versi 3.8: Kamus sekarang dapat dibalik.

Lihat juga
types.MappingProxyTypedapat digunakan untuk membuat tampilan read-only dari file dict.
Object view Dict

Objek dikembalikan oleh dict.keys(), dict.values()dan dict.items()merupakan objek


tampilan . Mereka memberikan tampilan dinamis pada entri kamus, yang berarti bahwa ketika kamus
berubah, tampilan mencerminkan perubahan ini.

Tampilan kamus dapat diulang untuk menghasilkan data masing-masing, dan mendukung tes
keanggotaan:

len(dictview)
Kembalikan jumlah entri dalam kamus.

iter(dictview)

Kembalikan iterator di atas kunci, nilai, atau item (diwakili sebagai tupel ) dalam
kamus.(key, value)

Kunci dan nilai diulang dalam urutan penyisipan. Ini memungkinkan pembuatan pasangan
menggunakan : . Cara lain untuk membuat daftar yang sama
adalah .(value, key)zip()pairs = zip(d.values(), d.keys())pairs = [(v, k) for
(k, v) in d.items()]

Tampilan berulang saat menambahkan atau menghapus entri dalam kamus dapat
meningkatkan RuntimeErroratau gagal untuk mengulangi semua entri.

Diubah di versi 3.7: Urutan kamus dijamin menjadi urutan penyisipan.

x in dictview

Kembalikan Truejika x ada dalam kunci, nilai, atau item kamus yang mendasarinya (dalam kasus
terakhir, x harus berupa Tuple).(key, value)

reversed(dictview)

Kembalikan iterator terbalik di atas kunci, nilai, atau item kamus. Tampilan akan diulang dalam
urutan penyisipan terbalik.

Diubah di versi 3.8: Tampilan kamus sekarang dapat dibalik.

Tampilan tombol seperti set karena entrinya unik dan dapat di-hash. Jika semua
nilai hashable, sehingga pasangan unik dan hashable, maka tampilan item juga
seperti set. (Tampilan nilai tidak diperlakukan seperti set karena entri umumnya
tidak unik.) Untuk tampilan seperti set, semua operasi yang ditentukan untuk kelas
dasar abstrak tersedia (misalnya, , ,
atau ).(key, value)collections.abc.Set==<^

Contoh penggunaan tampilan kamus:

>>>

>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}


>>> keys = dishes.keys()
>>> values = dishes.values()

>>> # iteration
>>> n = 0
>>> for val in values:
... n += val
>>> print(n)
504

>>> # keys and values are iterated over in the same order (insertion order)
>>> list(keys)
['eggs', 'sausage', 'bacon', 'spam']
>>> list(values)
[2, 1, 1, 500]

>>> # view objects are dynamic and reflect dict changes


>>> del dishes['eggs']
>>> del dishes['sausage']
>>> list(keys)
['bacon', 'spam']

>>> # set operations


>>> keys & {'eggs', 'bacon', 'salad'}
{'bacon'}
>>> keys ^ {'sausage', 'juice'}
{'juice', 'sausage', 'bacon', 'spam'}

Jenis konteks Manajer


withPernyataan Python mendukung konsep konteks runtime yang ditentukan oleh manajer konteks. Ini
diimplementasikan menggunakan sepasang metode yang memungkinkan kelas yang ditentukan
pengguna untuk menentukan konteks runtime yang dimasukkan sebelum badan pernyataan dieksekusi
dan keluar saat pernyataan berakhir:

contextmanager.__enter__( )
Masukkan konteks runtime dan kembalikan objek ini atau objek lain yang terkait dengan konteks
runtime. Nilai yang dikembalikan oleh metode ini terikat ke pengidentifikasi
dalam asklausa withpernyataan menggunakan manajer konteks ini.

Contoh manajer konteks yang mengembalikan dirinya sendiri adalah objek file . Objek file
kembali sendiri dari __enter__() untuk memungkinkan open()digunakan sebagai ekspresi
konteks dalam sebuah withpernyataan.

Contoh manajer konteks yang mengembalikan objek terkait adalah yang dikembalikan
oleh decimal.localcontext(). Manajer ini mengatur konteks desimal aktif ke salinan konteks
desimal asli dan kemudian mengembalikan salinannya. Ini memungkinkan perubahan dibuat
pada konteks desimal saat ini di badan withpernyataan tanpa memengaruhi kode di
luar withpernyataan.

contextmanager.__exit__( Exc_type , exc_val , exc_tb )

Keluar dari konteks runtime dan kembalikan flag Boolean yang menunjukkan jika ada
pengecualian yang terjadi harus ditekan. Jika pengecualian terjadi saat mengeksekusi
isi withpernyataan, argumen berisi jenis pengecualian, nilai, dan informasi traceback. Jika tidak,
ketiga argumen tersebut adalah None.

Mengembalikan nilai benar dari metode ini akan menyebabkan withpernyataan menekan
pengecualian dan melanjutkan eksekusi dengan pernyataan segera
setelah withpernyataan. Jika tidak, pengecualian terus menyebar setelah metode ini selesai
dieksekusi. Pengecualian yang terjadi selama eksekusi metode ini akan menggantikan
pengecualian apa pun yang terjadi di badan withpernyataan.

Pengecualian yang diteruskan tidak boleh dinaikkan secara eksplisit - sebagai gantinya, metode
ini harus mengembalikan nilai salah untuk menunjukkan bahwa metode berhasil diselesaikan dan
tidak ingin menekan pengecualian yang dimunculkan. Ini memungkinkan kode manajemen
konteks untuk dengan mudah mendeteksi apakah suatu __exit__() metode benar-benar
gagal atau tidak .

Python mendefinisikan beberapa manajer konteks untuk mendukung sinkronisasi utas yang mudah,
penutupan cepat file atau objek lain, dan manipulasi yang lebih sederhana dari konteks aritmatika
desimal aktif. Tipe spesifik tidak diperlakukan secara khusus di luar implementasi protokol manajemen
konteks. Lihat contextlibmodul untuk beberapa contoh.

Generator Python dan contextlib.contextmanagerdekorator menyediakan cara yang nyaman untuk


mengimplementasikan protokol ini. Jika fungsi generator didekorasi
dengan contextlib.contextmanagerdekorator, itu akan mengembalikan manajer konteks yang
menerapkan metode __enter__()dan yang diperlukan __exit__(), bukan iterator yang dihasilkan
oleh fungsi generator yang tidak didekorasi.
Perhatikan bahwa tidak ada slot khusus untuk salah satu metode ini dalam struktur tipe untuk objek
Python di API Python/C. Jenis ekstensi yang ingin mendefinisikan metode ini harus menyediakannya
sebagai metode yang dapat diakses Python normal. Dibandingkan dengan overhead pengaturan
konteks runtime, overhead pencarian kamus kelas tunggal dapat diabaikan.

Generik Alias Jenis


GenericAliasobjek dibuat dengan membuat subscript kelas (biasanya wadah), seperti list[int]. Mereka
ditujukan terutama untuk anotasi jenis .

Biasanya, langganan objek kontainer memanggil metode __getitem__()objek. Namun, langganan


beberapa kelas kontainer dapat memanggil __class_getitem__()metode kelas dari kelas sebagai
gantinya. Metode kelas __class_getitem__()harus mengembalikan GenericAliasobjek.

Catatan

Jika __getitem__()metaclass kelas ada, itu akan didahulukan dari yang __class_getitem__()didefinisikan di
kelas (lihat PEP 560 untuk lebih jelasnya).

The GenericAliasobjek bertindak sebagai proxy untuk jenis generik , menerapkan generik parameter -
contoh spesifik dari generik yang menyediakan jenis untuk elemen kontainer.

Jenis yang terpapar pengguna untuk GenericAliasobjek dapat diakses dari types.GenericAliasdan
digunakan untuk isinstance()pemeriksaan. Itu juga dapat digunakan untuk membuat GenericAliasobjek
secara langsung.

T[X, Y, ...]

Membuat GenericAliasrepresentasi tipe yang Tmengandung elemen tipe X , Y , dan lainnya


tergantung pada yang Tdigunakan. Misalnya, fungsi mengharapkan elemen
yang listmengandung float:

def average(values: list[float]) -> float:


return sum(values) / len(values)

Contoh lain untuk memetakan objek, menggunakan a dict, yang merupakan tipe generik yang
mengharapkan dua parameter tipe yang mewakili tipe kunci dan tipe nilai. Dalam contoh ini,
fungsi mengharapkan a dictdengan kunci tipe strdan nilai tipe int:

def send_post_request(url: str, body: dict[str, int]) -> None:


...

Fungsi bawaan isinstance()dan issubclass()tidak menerima GenericAliastipe untuk argumen kedua


mereka:

>>>

>>> isinstance([1, 2], list[str])


Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: isinstance() argument 2 cannot be a parameterized generic

Runtime Python tidak menerapkan anotasi tipe . Ini meluas ke tipe generik dan parameter
tipenya. Saat membuat objek dari a GenericAlias, elemen penampung tidak dicentang berdasarkan
jenisnya. Misalnya, kode berikut tidak disarankan, tetapi akan berjalan tanpa kesalahan:

>>>

>>> t = list[str]
>>> t([1, 2, 3])
[1, 2, 3]

Selanjutnya, obat generik berparameter menghapus parameter tipe selama pembuatan objek:

>>>

>>> t = list[str]
>>> type(t)
<class 'types.GenericAlias'>

>>> l = t()
>>> type(l)
<class 'list'>

Memanggil repr()atau str()pada generik menunjukkan tipe parameter:

>>>

>>> repr(list[int])
'list[int]'

>>> str(list[int])
'list[int]'

The __getitem__()metode generik akan meningkatkan pengecualian untuk kesalahan disallow


seperti dict[str][str]:
>>>

>>> dict[str][str]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: There are no type variables left in dict[str]

Namun, ekspresi tersebut valid ketika variabel tipe digunakan. Indeks harus memiliki elemen
sebanyak item variabel tipe dalam GenericAliasobjek __args__.

>>>

>>> from typing import TypeVar


>>> Y = TypeVar('Y')
>>> dict[str, Y][int]
dict[str, int]

Standard Generic Koleksi

Koleksi pustaka standar ini mendukung generik berparameter.

 tuple
 list
 dict
 set
 frozenset
 type
 collections.deque
 collections.defaultdict
 collections.OrderedDict
 collections.Counter
 collections.ChainMap
 collections.abc.Awaitable
 collections.abc.Coroutine
 collections.abc.AsyncIterable
 collections.abc.AsyncIterator
 collections.abc.AsyncGenerator
 collections.abc.Iterable
 collections.abc.Iterator
 collections.abc.Generator
 collections.abc.Reversible
 collections.abc.Container
 collections.abc.Collection
 collections.abc.Callable
 collections.abc.Set
 collections.abc.MutableSet
 collections.abc.Mapping
 collections.abc.MutableMapping
 collections.abc.Sequence
 collections.abc.MutableSequence
 collections.abc.ByteString
 collections.abc.MappingView
 collections.abc.KeysView
 collections.abc.ItemsView
 collections.abc.ValuesView
 contextlib.AbstractContextManager
 contextlib.AbstractAsyncContextManager
 re.Pola
 re.Match
Khusus Atribut dari Generic Alias

Semua obat generik berparameter mengimplementasikan atribut read-only khusus.

genericalias.__origin__

Atribut ini menunjuk pada kelas generik non-parameter:

>>>

>>> list[int].__origin__
<class 'list'>
genericalias.__args__

Atribut ini adalah tuple(mungkin dengan panjang 1) dari tipe generik yang diteruskan
ke __class_getitem__() wadah generik asli:

>>>

>>> dict[str, list[int]].__args__


(<class 'str'>, list[int])
genericalias.__parameters__

Atribut ini adalah tupel yang dihitung dengan malas (mungkin kosong) dari variabel tipe unik yang
ditemukan di __args__:

>>>

>>> from typing import TypeVar

>>> T = TypeVar('T')
>>> list[T].__parameters__
(~T,)
Lihat juga
 PEP 585 – ―Mengetik Petunjuk Generik Dalam Koleksi Standar‖
 __class_getitem__() – Digunakan untuk mengimplementasikan obat generik
berparameter.
 Generik – Generik dalamtypingmodul.

Baru di versi 3.9.

Types
Interpreter mendukung beberapa jenis objek lainnya. Sebagian besar hanya
mendukung satu atau dua operasi.

modules

Satu-satunya operasi khusus pada modul adalah akses atribut: m.name, di


mana m adalah modul dan nama mengakses nama yang didefinisikan dalam tabel
simbol m . Atribut modul dapat ditetapkan. (Perhatikan bahwa import pernyataan
tersebut bukan, secara tegas, operasi pada objek modul; tidak memerlukan objek
modul bernama foo ada, melainkan memerlukan definisi (eksternal) untuk modul
bernama foo di suatu tempat.)import foo

Atribut khusus dari setiap modul adalah __dict__. Ini adalah kamus yang berisi tabel
simbol modul. Memodifikasi kamus ini sebenarnya akan mengubah tabel simbol modul,
tetapi penugasan langsung ke __dict__atribut tidak dimungkinkan (Anda dapat menulis ,
yang didefinisikan menjadi , tetapi Anda tidak dapat menulis ). Memodifikasi secara
langsung tidak disarankan.m.__dict__['a'] = 1m.a1m.__dict__ = {}__dict__

Modul yang dibangun ke dalam interpreter ditulis seperti ini: . Jika dimuat dari file,
mereka ditulis sebagai .<module 'sys' (built-
in)><module 'os' from '/usr/local/lib/pythonX.Y/os.pyc'>

Classes dan Contoh

Lihat Objek, nilai dan tipe dan definisi Kelas untuk ini.

fungsi

Objek fungsi dibuat oleh definisi fungsi. Satu-satunya operasi pada objek fungsi adalah
menyebutnya: func(argument-list).
Sebenarnya ada dua jenis objek fungsi: fungsi bawaan dan fungsi yang ditentukan
pengguna. Keduanya mendukung operasi yang sama (untuk memanggil fungsi), tetapi
implementasinya berbeda, sehingga jenis objeknya berbeda.

Lihat Definisi fungsi untuk informasi selengkapnya.

metode

Metode adalah fungsi yang dipanggil menggunakan notasi atribut. Ada dua rasa:
metode bawaan (seperti append()pada daftar) dan metode instance kelas. Metode
bawaan dijelaskan dengan tipe yang mendukungnya.

Jika Anda mengakses metode (fungsi yang didefinisikan dalam namespace kelas)
melalui sebuah instance, Anda mendapatkan objek khusus: objek metode terikat (juga
disebut metode instance ). Saat dipanggil, itu akan menambahkan selfargumen ke
daftar argumen. Metode terikat memiliki dua atribut read-only khusus: m.__self__adalah
objek di mana metode beroperasi, dan m.__func__merupakan fungsi yang
mengimplementasikan metode. Memanggil benar-benar setara dengan
menelepon .m(arg-1, arg-2, ..., arg-n)m.__func__(m.__self__, arg-1, arg-2, ..., arg-n)

Seperti objek fungsi, objek metode terikat mendukung mendapatkan atribut


arbitrer. Namun, karena atribut metode sebenarnya disimpan pada objek fungsi yang
mendasarinya ( meth.__func__), pengaturan atribut metode pada metode terikat tidak
diizinkan. Mencoba menetapkan atribut pada suatu metode
menghasilkan AttributeErrorpeningkatan. Untuk menetapkan atribut metode, Anda perlu
mengaturnya secara eksplisit pada objek fungsi yang mendasarinya:

>>>

>>> class C:
... def method(self):
... pass
...
>>> c = C()
>>> c.method.whoami = 'my name is method' # can't set on the
method
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'method' object has no attribute 'whoami'
>>> c.method.__func__.whoami = 'my name is method'
>>> c.method.whoami
'my name is method'

Lihat Hirarki tipe standar untuk informasi selengkapnya.


Kode Objek

Objek kode digunakan oleh implementasi untuk mewakili kode Python yang dapat dieksekusi "pseudo-
compiled" seperti badan fungsi. Mereka berbeda dari objek fungsi karena tidak berisi referensi ke
lingkungan eksekusi globalnya. Objek kode dikembalikan oleh compile()fungsi bawaan dan dapat
diekstraksi dari objek fungsi melalui __code__ atributnya. Lihat juga codemodulnya.

Mengakses __code__memunculkan acara audit object.__getattr__ dengan argumen objdan "__code__".

Objek kode dapat dieksekusi atau dievaluasi dengan meneruskannya (bukan string sumber)
ke exec()atau eval() fungsi bawaan.

Lihat Hirarki tipe standar untuk informasi selengkapnya.

Jenis Objek

Jenis objek mewakili berbagai jenis objek. Tipe objek diakses oleh fungsi bawaan type(). Tidak ada
operasi khusus pada tipe. Modul standar typesmendefinisikan nama untuk semua tipe bawaan standar.

Jenis ditulis seperti ini: .<class 'int'>

The Null Object

Objek ini dikembalikan oleh fungsi yang tidak secara eksplisit mengembalikan nilai. Ini tidak mendukung
operasi khusus. Ada tepat satu objek nol, bernama None(nama bawaan). type(None)()menghasilkan
singleton yang sama.

Ditulis sebagai None.

Object

Object ini biasanya digunakan dengan cara mengiris (lihat Slicings ). Ini tidak mendukung operasi
khusus. Ada tepat satu objek elipsis, bernama Ellipsis( nama
bawaan ). type(Ellipsis)()menghasilkan Ellipsistunggal.
Ditulis sebagai Ellipsisatau ....

Objek yang Tidak

Objek ini dikembalikan dari perbandingan dan operasi biner ketika mereka diminta untuk beroperasi
pada tipe yang tidak mereka dukung. Lihat Perbandingan untuk informasi lebih lanjut. Ada tepat
satu NotImplementedobjek. type(NotImplemented)()menghasilkan instance tunggal.

Ditulis sebagai NotImplemented.

Nilai Boolean

Nilai Boolean adalah dua objek konstan Falsedan True. Mereka digunakan untuk mewakili nilai-nilai
kebenaran (meskipun nilai-nilai lain juga dapat dianggap salah atau benar). Dalam konteks numerik
(misalnya ketika digunakan sebagai argumen untuk operator aritmatika), mereka berperilaku seperti
bilangan bulat 0 dan 1, masing-masing. Fungsi bawaan bool()dapat digunakan untuk mengonversi nilai
apa pun menjadi Boolean, jika nilainya dapat diinterpretasikan sebagai nilai kebenaran (lihat
bagian Pengujian Nilai Kebenaran di atas).

Mereka ditulis sebagai Falsedan True, Masing-masing.

Objek internal

Lihat Hirarki tipe standar untuk informasi ini. Ini menjelaskan objek bingkai tumpukan, objek traceback,
dan objek irisan.

Atribut khusus
Implementasinya menambahkan beberapa atribut read-only khusus ke beberapa tipe objek, jika
relevan. Beberapa di antaranya tidak dilaporkan oleh dir()fungsi bawaan.

object.__dict__

Kamus atau objek pemetaan lain yang digunakan untuk menyimpan atribut objek (dapat ditulis).

instance.__class__

Kelas tempat instance kelas berada.

class.__bases__

Tuple kelas dasar dari objek kelas.

definition.__name__
Nama kelas, fungsi, metode, deskriptor, atau instance generator.

definition.__qualname__

The nama yang memenuhi syarat dari kelas, fungsi, metode, deskripsi, atau contoh pembangkit.

Baru di versi 3.3.

class.__mro__

Atribut ini adalah tupel kelas yang dipertimbangkan ketika mencari kelas dasar selama resolusi
metode.

class.mro( )

Metode ini dapat ditimpa oleh metaclass untuk menyesuaikan urutan resolusi metode untuk
instance-nya. Itu disebut di instantiasi kelas, dan hasilnya disimpan dalam file __mro__.

class.__subclasses__( )

Setiap kelas menyimpan daftar referensi lemah ke subkelas langsungnya. Metode ini
mengembalikan daftar semua referensi yang masih hidup. Daftar ini dalam urutan
definisi. Contoh:

>>>

>>> int.__subclasses__()
[<class 'bool'>]

Catatan kaki

Informasi tambahan tentang metode khusus ini dapat ditemukan di Manual Referensi Python
( Kustomisasi dasar ).

Akibatnya, daftar dianggap sama dengan , dan juga untuk tupel.[1, 2][1.0, 2.0]

Mereka harus memilikinya karena parser tidak dapat memberi tahu jenis operan.

4(1,2,3,4)

Karakter dengan huruf besar adalah mereka dengan properti kategori umum menjadi salah satu dari
"Lu" (Huruf, huruf besar), "Ll" (Huruf, huruf kecil), atau "Lt" (Huruf, huruf besar).
5(1,2)

Untuk memformat hanya sebuah tuple, Anda harus menyediakan tuple tunggal yang satu-satunya
elemen adalah tupel yang akan diformat.

Anda mungkin juga menyukai