Hướng dẫn built in biginteger library python - được xây dựng trong thư viện biginteger python

Các phần sau đây mô tả các loại tiêu chuẩn được tích hợp vào thông dịch viên.

Show

Các loại tích hợp chính là số, trình tự, ánh xạ, lớp, trường hợp và ngoại lệ.

Một số lớp thu thập là có thể thay đổi. Các phương pháp thêm, trừ hoặc sắp xếp lại các thành viên của họ và không trả lại một mục cụ thể, không bao giờ trả lại cho bản thân bộ sưu tập mà không có.None.

Một số hoạt động được hỗ trợ bởi một số loại đối tượng; Cụ thể, thực tế, tất cả các đối tượng có thể được so sánh, được kiểm tra giá trị sự thật và được chuyển đổi thành một chuỗi (với hàm repr () hoặc hàm str () hơi khác nhau). Hàm thứ hai được sử dụng ngầm khi một đối tượng được viết bởi hàm in ().repr() function or the slightly different str() function). The latter function is implicitly used when an object is written by the print() function.

4.1. Kiểm tra giá trị sự thật

Bất kỳ đối tượng nào cũng có thể được kiểm tra giá trị sự thật, để sử dụng trong điều kiện IF hoặc trong khi điều kiện hoặc như là hoạt động của các hoạt động Boolean bên dưới. Các giá trị sau được coi là sai:if or while condition or as operand of the Boolean operations below. The following values are considered false:

  • Không có

  • Sai

  • số không thuộc bất kỳ loại số nào, ví dụ, 0, 0.0, 0J.0, 0.0, 0j.

  • Bất kỳ chuỗi trống nào, ví dụ, '', (), [].'', (), [].

  • Bất kỳ ánh xạ trống nào, ví dụ, {}.{}.

  • Các thể hiện của các lớp do người dùng xác định, nếu lớp xác định phương thức __bool __ () hoặc __len __ (), khi phương thức đó trả về giá trị số nguyên bằng 0 hoặc bool false. [1]__bool__() or __len__() method, when that method returns the integer zero or bool value False. [1]

Tất cả các giá trị khác được coi là đúng - vì vậy các đối tượng của nhiều loại luôn luôn đúng.

Các hoạt động và các chức năng tích hợp có kết quả boolean luôn trả về 0 hoặc sai cho sai và 1 hoặc đúng là đúng, trừ khi có quy định khác. (Ngoại lệ quan trọng: Các hoạt động Boolean hoặc và luôn trả lại một trong các toán hạng của họ.)0 or False for false and 1 or True for true, unless otherwise stated. (Important exception: the Boolean operations or and and always return one of their operands.)

4.2. Hoạt động boolean - và, hoặc, khôngand, or, not¶

Đây là các hoạt động Boolean, được đặt hàng theo ưu tiên tăng dần:

Hoạt độngKết quảGhi chú
Xory or y Nếu x là sai, thì y, khác x(1)
Xandy and y Nếu x là sai, thì x, khác y(2)
notx x Nếu x là sai, thì đúng, khác saiTrue, else False (3)

Notes:

  1. Đây là một toán tử ngắn mạch, vì vậy nó chỉ đánh giá đối số thứ hai nếu câu thứ nhất là sai.False.
  2. Đây là một toán tử ngắn mạch, vì vậy nó chỉ đánh giá đối số thứ hai nếu câu thứ nhất là đúng.True.
  3. Không có mức độ ưu tiên thấp hơn các toán tử phi Boolean, vì vậy nota == b được hiểu là không (a == b) và a == notb là lỗi cú pháp. has a lower priority than non-Boolean operators, so not a == b is interpreted as not (a == b), and a == not b is a syntax error.

4.3. So sánh lor

Có tám hoạt động so sánh trong Python. Tất cả đều có cùng mức độ ưu tiên (cao hơn so với các hoạt động của Boolean). So sánh có thể được xích ý nghĩa; Ví dụ, xx < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).

Bảng này tóm tắt các hoạt động so sánh:

Hoạt độngKết quả
Ghi chú Xory
Ghi chú Xory
Nếu x là sai, thì y, khác x (1)
Xandy Nếu x là sai, thì x, khác y
(2) notx
Nếu x là sai, thì đúng, khác sai (3)
Đây là một toán tử ngắn mạch, vì vậy nó chỉ đánh giá đối số thứ hai nếu câu thứ nhất là sai. Đây là một toán tử ngắn mạch, vì vậy nó chỉ đánh giá đối số thứ hai nếu câu thứ nhất là đúng.
Không có mức độ ưu tiên thấp hơn các toán tử phi Boolean, vì vậy nota == b được hiểu là không (a == b) và a == notb là lỗi cú pháp. not 4.3. So sánh lor

Có tám hoạt động so sánh trong Python. Tất cả đều có cùng mức độ ưu tiên (cao hơn so với các hoạt động của Boolean). So sánh có thể được xích ý nghĩa; Ví dụ, x<, <=, > and >= operators will raise a TypeError exception when comparing a complex number with another built-in numeric type, when the objects are of different types that cannot be compared, or in other cases where there is no defined ordering.

Bảng này tóm tắt các hoạt động so sánh:__eq__() method.

Nghĩa__lt__(), __le__(), __gt__(), and __ge__() (in general, __lt__() and __eq__() are sufficient, if you want the conventional meanings of the comparison operators).

The behavior of the is and is not operators cannot be customized; also they can be applied to any two objects and never raise an exception.

hoàn toàn ít hơnin and not in, are supported only by sequence types (below).

nhỏ hơn hoặc bằngint, float, complex¶

>double in C; information about the precision and internal representation of floating point numbers for the machine on which your program is running is available in sys.float_info. Complex numbers have a real and imaginary part, which are each a floating point number. To extract these parts from a complex number z, use z.real and z.imag. (The standard library includes additional numeric types, fractions that hold rationals, and decimal that hold floating-point numbers with user-definable precision.)

lớn hơn lớn hơn'j' or 'J' to a numeric literal yields an imaginary number (a complex number with a zero real part) which you can add to an integer or float to get a complex number with real and imaginary parts.

Python hoàn toàn hỗ trợ số học hỗn hợp: Khi một toán tử số học nhị phân có các toán hạng các loại số khác nhau, toán hạng với loại hẹp hơn của Hồi giáo được mở rộng so với loại khác, trong đó số nguyên hẹp hơn so với điểm nổi, hẹp hơn so với phức tạp. So sánh giữa các số loại hỗn hợp sử dụng cùng một quy tắc. [2] Các hàm tạo int (), float () và phức tạp () có thể được sử dụng để tạo ra số lượng của một loại cụ thể.int(), float(), and complex() can be used to produce numbers of a specific type.

Tất cả các loại số (ngoại trừ phức tạp) hỗ trợ các hoạt động sau, được sắp xếp theo mức độ ưu tiên tăng dần (tất cả các hoạt động số đều có mức độ ưu tiên cao hơn so với các hoạt động so sánh):

Hoạt độngKết quảGhi chúTài liệu đầy đủ
x+y + y tổng của x và y& nbsp;& nbsp;
x-y - y sự khác biệt của x và y& nbsp;& nbsp;
x*y * y sự khác biệt của x và y& nbsp;& nbsp;
x/y / y sự khác biệt của x và y& nbsp;& nbsp;
x//y // y sự khác biệt của x và ysản phẩm của x và y& nbsp;
x%y % y sự khác biệt của x và yx / y sản phẩm của x và y& nbsp;
-x sự khác biệt của x và y& nbsp;& nbsp;
+x sự khác biệt của x và y& nbsp;& nbsp;
abs(x) sự khác biệt của x và y& nbsp;abs()
int(x) sự khác biệt của x và ysản phẩm của x và yint()
float(x) chỉ số của x và ychỉ số của x và yfloat()
complex(re,im) im) (1)phần còn lại của x/ycomplex()
c.conjugate() (2)& nbsp;& nbsp;
divmod(x,y) y) sự khác biệt của x và y(x // y, x % y) sản phẩm của x và ydivmod()
pow(x,y) y) chỉ số của x và ychỉ số của x và ypow()
x**y ** y chỉ số của x và ychỉ số của x và y& nbsp;

Notes:

  1. sự khác biệt của x và y1//2 is 0, (-1)//2 is -1, 1//(-2) is -1, and (-1)//(-2) is 0.

  2. sản phẩm của x và yabs() if appropriate.

  3. chỉ số của x và ymath.floor() and math.ceil() for well-defined conversions.

  4. chỉ số của x và y

  5. (1)pow(0, 0) and 0 ** 0 to be 1, as is common for programming languages.

  6. phần còn lại của x/y0 to 9 or any Unicode equivalent (code points with the Nd property).

    (2)Nd property.

x phủ địnhnumbers.Real types (int and float) also include the following operations:

Hoạt độngKết quảGhi chú
math.trunc(x) x Không thay đổi& nbsp;
round(x[,n]) n]) sự khác biệt của x và y& nbsp;
math.floor(x) sự khác biệt của x và y& nbsp;
math.ceil(x) sự khác biệt của x và y& nbsp;

sự khác biệt của x và ymath and cmath modules.

sản phẩm của x và y

chỉ số của x và y

chỉ số của x và y~ has the same priority as the other unary numeric operations (+ and -).

(1)

Hoạt độngKết quảGhi chú
phần còn lại của x/y | y (2)& nbsp;
x^y ^ y x phủ định& nbsp;
x&y & y x Không thay đổi& nbsp;
giá trị tuyệt đối hoặc độ lớn của x << n x chuyển đổi thành số nguyên(3) (6)
x>>n >> n x chuyển đổi thành điểm nổi(4) (6)
~x Một số phức tạp với phần thực re, phần tưởng tượng IM. IM mặc định về 0.& nbsp;

Notes:

  1. (6)ValueError to be raised.
  2. Liên hợp số phức Cpow(2, n) without overflow check.
  3. cặp (x // y, x%y)pow(2, n) without overflow check.

x đến sức mạnh y

(5)numbers.Integral abstract base class. In addition, it provides a few more methods:

Cũng được gọi là bộ phận số nguyên. Giá trị kết quả là toàn bộ số nguyên, mặc dù loại kết quả không nhất thiết là int. Kết quả luôn được làm tròn về phía trừ vô cực: 1 // 2 là 0, (-1) // 2 là -1, 1 // (-2) là -1 và (-1) // (-2) là 0.

Không cho các số phức. Thay vào đó chuyển đổi thành phao bằng cách sử dụng abs () nếu thích hợp.

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

Chuyển đổi từ điểm nổi sang số nguyên có thể làm tròn hoặc cắt ngắn như trong c; Xem các chức năng Math.Floor () và Math.ceil () để biết chuyển đổi được xác định rõ.x is nonzero, then x.bit_length() is the unique positive integer k such that 2**(k-1) <= abs(x) < 2**k. Equivalently, when abs(x) is small enough to have a correctly rounded logarithm, then k = 1 + int(log(abs(x), 2)). If x is zero, then x.bit_length() returns 0.

Float cũng chấp nhận các chuỗi, NAN NAN và và Inf Inf với một tiền tố tùy chọn,+hoặc hoặc--không phải là một số (NAN) và vô cùng tích cực hoặc tiêu cực.

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

Python định nghĩa POW (0,0) và 0 ** 0 là 1, như là phổ biến đối với các ngôn ngữ lập trình.

Các chữ số được chấp nhận bao gồm các chữ số 0 đến 9 hoặc bất kỳ unicode tương đương (điểm mã với thuộc tính ND).

Xem http://www.unicode.org/public/6.3.0/ucd/extracted/derivingnumerictype.txt để biết danh sách đầy đủ các điểm mã với thuộc tính ND.

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'

Tất cả các số.OverflowError is raised if the integer is not representable with the given number of bytes.

x cắt ngắn để tích hợp"big", the most significant byte is at the beginning of the byte array. If byteorder is "little", the most significant byte is at the end of the byte array. To request the native byte order of the host system, use sys.byteorder as the byte order value.

Đối số đã ký xác định xem hai bổ sung có thể được sử dụng để đại diện cho số nguyên hay không. Nếu được ký là sai và một số nguyên âm được đưa ra, một dòng điện được nâng lên. Giá trị mặc định cho chữ ký là sai.False and a negative integer is given, an OverflowError is raised. The default value for signed is False.

Mới trong phiên bản 3.2.

classMethod int.from_bytes (byte, byteorder, *, đã ký = false) ¶

Trả về số nguyên được biểu thị bằng mảng byte đã cho.

>>> 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

Các byte đối số phải là một đối tượng giống như byte hoặc một byte sản xuất có thể lặp lại.

Đối số byteorder xác định thứ tự byte được sử dụng để thể hiện số nguyên. Nếu byteorder là "lớn", byte quan trọng nhất là ở đầu mảng byte. Nếu byteorder là "ít", byte quan trọng nhất là ở cuối mảng byte. Để yêu cầu thứ tự byte gốc của hệ thống máy chủ, hãy sử dụng sys.byteorder làm giá trị đơn hàng byte."big", the most significant byte is at the beginning of the byte array. If byteorder is "little", the most significant byte is at the end of the byte array. To request the native byte order of the host system, use sys.byteorder as the byte order value.

Đối số đã ký cho biết liệu hai bổ sung có thể được sử dụng để đại diện cho số nguyên hay không.

Mới trong phiên bản 3.2.

classMethod int.from_bytes (byte, byteorder, *, đã ký = false) ¶

Trả về số nguyên được biểu thị bằng mảng byte đã cho.numbers.Real abstract base class. float also has the following additional methods.

Các byte đối số phải là một đối tượng giống như byte hoặc một byte sản xuất có thể lặp lại.

Đối số byteorder xác định thứ tự byte được sử dụng để thể hiện số nguyên. Nếu byteorder là "lớn", byte quan trọng nhất là ở đầu mảng byte. Nếu byteorder là "ít", byte quan trọng nhất là ở cuối mảng byte. Để yêu cầu thứ tự byte gốc của hệ thống máy chủ, hãy sử dụng sys.byteorder làm giá trị đơn hàng byte.OverflowError on infinities and a ValueError on NaNs.

Đối số đã ký cho biết liệu hai bổ sung có thể được sử dụng để đại diện cho số nguyên hay không.

4.4.3. Phương pháp bổ sung trên Float¶True if the float instance is finite with integral value, and False otherwise:

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

Loại phao thực hiện các số. Lớp cơ sở trừu tượng. Float cũng có các phương pháp bổ sung sau.

float.as_integer_ratio () ¶

Trả về một cặp số nguyên có tỷ lệ chính xác bằng phao gốc và với mẫu số dương. Tăng áp đảo về tính không đồng thời và giá trị hàng hóa trên nans.0x and a trailing p and exponent.

float.is_integer () ¶

Trả về true nếu phiên bản float là hữu hạn với giá trị tích phân và sai nếu không:

Hai phương pháp hỗ trợ chuyển đổi đến và từ các chuỗi thập lục phân. Vì các phao Python sườn được lưu trữ bên trong dưới dạng số nhị phân, việc chuyển đổi một chiếc phao thành hoặc từ một chuỗi thập phân thường liên quan đến một lỗi làm tròn nhỏ. Ngược lại, chuỗi thập lục phân cho phép biểu diễn chính xác và đặc điểm kỹ thuật của các số điểm nổi. Điều này có thể hữu ích khi gỡ lỗi, và trong công việc số.float.hex() is an instance method, while float.fromhex() is a class method.

float.hex () ¶

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

Trả về một đại diện của một số điểm nổi dưới dạng chuỗi thập lục phân. Đối với các số điểm nổi hữu hạn, đại diện này sẽ luôn bao gồm 0x hàng đầu và P và số mũ dẫn đầu.sign may by either + or -, integer and fraction are strings of hexadecimal digits, and exponent is a decimal integer with an optional leading sign. Case is not significant, and there must be at least one hexadecimal digit in either the integer or the fraction. This syntax is similar to the syntax specified in section 6.4.4.2 of the C99 standard, and also to the syntax used in Java 1.5 onwards. In particular, the output of float.hex() is usable as a hexadecimal floating-point literal in C or Java code, and hexadecimal strings produced by C’s %a format character or Java’s Double.toHexString are accepted by float.fromhex().

classmethod float.fromhex (s) ¶0x3.a7p10 represents the floating-point number (3 + 10./16 + 7./16**2) * 2.0**10, or 3740.0:

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

Phương pháp lớp để trả về phao được biểu thị bằng một chuỗi thập lục phân s. Chuỗi S có thể có khoảng trắng dẫn đầu và dấu vết.3740.0 gives a different hexadecimal string representing the same number:

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

Lưu ý rằng float.hex () là một phương thức thể hiện, trong khi float.fromhex () là một phương thức lớp.

Một chuỗi thập lục phân có biểu mẫu:x and y, possibly of different types, it’s a requirement that hash(x) == hash(y) whenever x == y (see the __hash__() method documentation for more details). For ease of implementation and efficiency across a variety of numeric types (including int, float, decimal.Decimal and fractions.Fraction) Python’s hash for numeric types is based on a single mathematical function that’s defined for any rational number, and hence applies to all instances of int and fractions.Fraction, and all finite instances of float and decimal.Decimal. Essentially, this function is given by reduction modulo P for a fixed prime P. The value of P is made available to Python as the modulus attribute of sys.hash_info.

Trong đó dấu hiệu tùy chọn có thể bằng + hoặc -, số nguyên và phân số là các chuỗi của các chữ số thập lục phân và số mũ là một số nguyên thập phân với dấu hiệu hàng đầu tùy chọn. Trường hợp không đáng kể, và phải có ít nhất một chữ số thập lục phân trong số nguyên hoặc phân số. Cú pháp này tương tự như cú pháp được chỉ định trong Mục 6.4.4.2 của tiêu chuẩn C99, và cả cú pháp được sử dụng trong Java 1.5 trở đi. Cụ thể, đầu ra của float.hex () có thể sử dụng như một dấu hiệu dấu phẩy động thập lục phân trong mã C hoặc Java, và các chuỗi thập lục phân được tạo ra bởi C tựa %một ký tự định dạng hoặc Java tựa Double.TohexString được chấp nhận bởi float.fromhex (). Currently, the prime used is P = 2**31 - 1 on machines with 32-bit C longs and P = 2**61 - 1 on machines with 64-bit C longs.

Lưu ý rằng số mũ được viết theo số thập phân chứ không phải là thập lục phân và nó mang lại sức mạnh cho 2 để nhân hệ số. Ví dụ: chuỗi thập lục phân 0x3.a7p10 đại diện cho số điểm nổi (3+10./16+7./16 ** 2)*2.0 ** 10 hoặc 3740.0:

  • Áp dụng chuyển đổi ngược lại 3740.0 mang lại một chuỗi thập lục phân khác đại diện cho cùng một số:x = m / n is a nonnegative rational number and n is not divisible by P, define hash(x) as m * invmod(n, P) % P, where invmod(n, P) gives the inverse of n modulo P.
  • 4.4.4. Băm các loại sốx = m / n is a nonnegative rational number and n is divisible by P (but m is not) then n has no inverse modulo P and the rule above doesn’t apply; in this case define hash(x) to be the constant value sys.hash_info.inf.
  • Nếu x = m/n là số hợp lý âm định nghĩa Hash (x) là -hash (-x). Nếu băm kết quả là -1, hãy thay thế nó bằng -2.x = m / n is a negative rational number define hash(x) as -hash(-x). If the resulting hash is -1, replace it with -2.
  • Các giá trị cụ thể sys.hash_info.inf, -sys.hash_info.inf và sys.hash_info.nan được sử dụng làm giá trị băm cho vô cực dương, vô cực âm hoặc nans (tương ứng). (Tất cả các nans có thể băm có cùng giá trị băm.)sys.hash_info.inf, -sys.hash_info.inf and sys.hash_info.nan are used as hash values for positive infinity, negative infinity, or nans (respectively). (All hashable nans have the same hash value.)
  • Đối với số Z phức tạp, các giá trị băm của các phần thực và tưởng tượng được kết hợp bằng cách tính toán băm (z.real)+sys.hash_info.imag*Hash (z.imag) rằng nó nằm trong phạm vi (-2 ** (sys.hash_info.width-1), 2 ** (sys.hash_info.width-1)). Một lần nữa, nếu kết quả là -1, nó đã thay thế bằng -2.complex number z, the hash values of the real and imaginary parts are combined by computing hash(z.real) + sys.hash_info.imag * hash(z.imag), reduced modulo 2**sys.hash_info.width so that it lies in range(-2**(sys.hash_info.width - 1), 2**(sys.hash_info.width - 1)). Again, if the result is -1, it’s replaced with -2.

Để làm rõ các quy tắc trên, ở đây, một số ví dụ mã Python, tương đương với hàm băm tích hợp, để tính toán băm của một số hợp lý, float hoặc phức tạp:float, or 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_ = 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_ = (abs(m) % P) * pow(n, P - 2, P) % P
    if m < 0:
        hash_ = -hash_
    if hash_ == -1:
        hash_ = -2
    return hash_

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_ = 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_ = (hash_ & (M - 1)) - (hash & M)
    if hash_ == -1:
        hash_ == -2
    return hash_

4.5. Các loại Iterator

Python hỗ trợ một khái niệm về việc lặp lại trên các thùng chứa. Điều này được thực hiện bằng hai phương pháp riêng biệt; Chúng được sử dụng để cho phép các lớp do người dùng xác định hỗ trợ lặp lại. Trình tự, được mô tả dưới đây chi tiết hơn, luôn hỗ trợ các phương pháp lặp.

Một phương thức cần được xác định cho các đối tượng container để cung cấp hỗ trợ lặp lại:

container .__ iter __ () ¶

Trả về một đối tượng lặp. Đối tượng được yêu cầu để hỗ trợ giao thức Iterator được mô tả dưới đây. Nếu một container hỗ trợ các loại lặp khác nhau, các phương thức bổ sung có thể được cung cấp để yêu cầu cụ thể các trình lặp cho các loại lặp đó. .tp_iter slot of the type structure for Python objects in the Python/C API.

Bản thân các đối tượng lặp được yêu cầu hỗ trợ hai phương thức sau, cùng nhau tạo thành giao thức iterator:

iterator .__ iter __ () ¶

Trả về chính đối tượng Iterator. Điều này là bắt buộc để cho phép cả hai container và trình lặp được sử dụng với các câu lệnh FOR và trong các câu lệnh. Phương pháp này tương ứng với khe TP_ITER của cấu trúc loại cho các đối tượng Python trong API Python/C.for and in statements. This method corresponds to the tp_iter slot of the type structure for Python objects in the Python/C API.

iterator .__ Tiếp theo __ () ¶

Trả lại mục tiếp theo từ container. Nếu không có vật phẩm nào nữa, hãy tăng ngoại lệ ngăn chặn. Phương pháp này tương ứng với khe TP_ITERNEXT của cấu trúc loại cho các đối tượng Python trong API Python/C.StopIteration exception. This method corresponds to the tp_iternext slot of the type structure for Python objects in the Python/C API.

Python xác định một số đối tượng iterator để hỗ trợ lần lặp qua các loại trình tự chung và cụ thể, từ điển và các hình thức chuyên dụng khác. Các loại cụ thể không quan trọng ngoài việc thực hiện giao thức Iterator.

Khi một phương thức Iterator từ __next __ () làm tăng sự dừng lại, nó phải tiếp tục thực hiện như vậy trên các cuộc gọi tiếp theo. Việc triển khai không tuân theo tài sản này được coi là bị hỏng.__next__() method raises StopIteration, it must continue to do so on subsequent calls. Implementations that do not obey this property are deemed broken.

4.6. Các loại trình tự - Danh sách, Tuple, Range¶list, tuple, range¶

Có ba loại trình tự cơ bản: danh sách, bộ dữ liệu và các đối tượng phạm vi. Các loại trình tự bổ sung được thiết kế để xử lý dữ liệu nhị phân và chuỗi văn bản được mô tả trong các phần chuyên dụng.

4.6.1. Các hoạt động trình tự phổ biến

Các hoạt động trong bảng sau được hỗ trợ bởi hầu hết các loại trình tự, cả có thể thay đổi và bất biến. Các bộ sưu tập.collections.abc.Sequence ABC is provided to make it easier to correctly implement these operations on custom sequence types.

Bảng này liệt kê các hoạt động trình tự được sắp xếp theo mức độ ưu tiên tăng dần. Trong bảng, s và t là các chuỗi cùng loại, n, i, j và k là số nguyên và x là một đối tượng tùy ý đáp ứng bất kỳ loại hạn chế nào và giá trị do s.

Các hoạt động trong và không có các ưu tiên giống như các hoạt động so sánh. Các hoạt động + (nối) và * (lặp lại) có mức độ ưu tiên tương tự như các hoạt động số tương ứng. [3]in and not in operations have the same priorities as the comparison operations. The + (concatenation) and * (repetition) operations have the same priority as the corresponding numeric operations. [3]

Hoạt độngKết quảGhi chú
XINS in s Đúng nếu một mục S bằng x, khác là sai if an item of s is equal to x, else False (1)
Xnotins not in s Sai nếu một mục của s bằng x, khác là đúng if an item of s is equal to x, else True (1)
s+t + t XnotinsSai nếu một mục của s bằng x, khác là đúng
sự kết hợp của s và t * n or n * s (6) (7)s*n hoặc n*s
s[i] tương đương với việc thêm s vào chính nó n lần(2) (7)
s[i:j] ith mặt hàng của s, gốc 0(3)
s[i:j:k] cắt lát từ tôi đến j(3) (4)
len(s) cắt lát từ i đến j với bước k(3) (5)
min(s) chiều dài của s(3) (5)
max(s) chiều dài của s(3) (5)
s.index(x[,i[,j]]) i[, j]]) chiều dài của s& nbsp;
s.count(x) Mục nhỏ nhất của s(3) (5)

chiều dài của s

Ghi chú:

  1. Mặc dù các hoạt động IN và Notin chỉ được sử dụng để kiểm tra ngăn chặn đơn giản trong trường hợp chung, một số trình tự chuyên dụng (như STR, byte và bytearray) cũng sử dụng chúng để kiểm tra sau:in and not in operations are used only for simple containment testing in the general case, some specialised sequences (such as str, bytes and bytearray) also use them for subsequence testing:

  2. Các giá trị N nhỏ hơn 0 được coi là 0 (mang lại một chuỗi trống cùng loại với S). Lưu ý rằng các mục trong chuỗi s không được sao chép; Chúng được tham chiếu nhiều lần. Điều này thường ám ảnh các lập trình viên Python mới; xem xét:0 are treated as 0 (which yields an empty sequence of the same type as s). Note that items in the sequence s are not copied; they are referenced multiple times. This often haunts new Python programmers; consider:

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

    Điều đã xảy ra là [[]] là một danh sách một phần tử chứa một danh sách trống, vì vậy cả ba yếu tố của [[]]]*3 đều tham khảo danh sách trống duy nhất này. Sửa đổi bất kỳ yếu tố nào của danh sách sửa đổi danh sách duy nhất này. Bạn có thể tạo một danh sách các danh sách khác nhau theo cách này:[[]] is a one-element list containing an empty list, so all three elements of [[]] * 3 are references to this single empty list. Modifying any of the elements of lists modifies this single list. You can create a list of different lists this way:

    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
    
    0

    Giải thích thêm có sẵn trong mục FAQ Làm cách nào để tạo một danh sách đa chiều ?.

  3. Nếu I hoặc J là âm, chỉ số có liên quan đến phần cuối của chuỗi: Len (s)+I hoặc Len (S)+J được thay thế. Nhưng lưu ý rằng -0 vẫn là 0.len(s) + i or len(s) + j is substituted. But note that -0 is still 0.

  4. Các lát của S từ I đến J được định nghĩa là chuỗi các mục có chỉ mục k sao cho tôii <= k < j. If i or j is greater than len(s), use len(s). If i is omitted or None, use 0. If j is omitted or None, use len(s). If i is greater than or equal to j, the slice is empty.

  5. Các lát của s từ i đến j với bước k được định nghĩa là chuỗi các mục có chỉ mục x = i+n*k sao cho 0x = i + n*k such that 0 <= n < (j-i)/k. In other words, the indices are i, i+k, i+2*k, i+3*k and so on, stopping when j is reached (but never including j). If i or j is greater than len(s), use len(s). If i or j are omitted or None, they become “end” values (which end depends on the sign of k). Note, k cannot be zero. If k is None, it is treated like 1.

  6. Các chuỗi bất biến luôn luôn dẫn đến một đối tượng mới. Điều này có nghĩa là việc xây dựng một chuỗi bằng cách kết hợp lặp đi lặp lại sẽ có chi phí thời gian chạy bậc hai trong tổng chiều dài trình tự. Để có được chi phí thời gian chạy tuyến tính, bạn phải chuyển sang một trong những lựa chọn thay thế dưới đây:

    • Nếu kết hợp các đối tượng STR, bạn có thể xây dựng một danh sách và sử dụng str.join () ở cuối hoặc cách khác ghi vào một thể hiện io.Stringio và lấy giá trị của nó khi hoàn thànhstr objects, you can build a list and use str.join() at the end or else write to an io.StringIO instance and retrieve its value when complete
    • Nếu kết hợp các đối tượng byte, bạn có thể sử dụng byte.join () hoặc io.bytesio tương tự tương tự hoặc bạn có thể thực hiện kết nối tại chỗ với đối tượng bytearray. Các đối tượng bytearray có thể thay đổi và có cơ chế tổng thể hiệu quảbytes objects, you can similarly use bytes.join() or io.BytesIO, or you can do in-place concatenation with a bytearray object. bytearray objects are mutable and have an efficient overallocation mechanism
    • Nếu kết hợp các đối tượng tuple, thay vào đó hãy mở rộng danh sáchtuple objects, extend a list instead
    • Đối với các loại khác, hãy điều tra các tài liệu lớp có liên quan
  7. Một số loại trình tự (chẳng hạn như phạm vi) chỉ hỗ trợ các chuỗi vật phẩm tuân theo các mẫu cụ thể và do đó don don hỗ trợ nối tiếp trình tự hoặc lặp lại.range) only support item sequences that follow specific patterns, and hence don’t support sequence concatenation or repetition.

  8. Chỉ số tăng giá trịerror khi X không được tìm thấy trong s. Khi được hỗ trợ, các đối số bổ sung cho phương pháp chỉ mục cho phép tìm kiếm hiệu quả các phần phụ của chuỗi. Truyền các đối số bổ sung gần tương đương với việc sử dụng S [I: J] .index (x), chỉ không sao chép bất kỳ dữ liệu nào và với chỉ số được trả về liên quan đến việc bắt đầu chuỗi thay vì bắt đầu lát cắt. raises ValueError when x is not found in s. When supported, the additional arguments to the index method allow efficient searching of subsections of the sequence. Passing the extra arguments is roughly equivalent to using s[i:j].index(x), only without copying any data and with the returned index being relative to the start of the sequence rather than the start of the slice.

4.6.2. Các loại trình tự bất biến Jor

Hoạt động duy nhất mà các loại chuỗi bất biến thường thực hiện cũng không được thực hiện bởi các loại chuỗi có thể thay đổi là hỗ trợ cho băm () tích hợp.hash() built-in.

Hỗ trợ này cho phép các chuỗi bất biến, chẳng hạn như các phiên bản tuple, được sử dụng làm khóa dict và được lưu trữ trong các trường hợp tập hợp và đông lạnh.tuple instances, to be used as dict keys and stored in set and frozenset instances.

Cố gắng băm một chuỗi bất biến có chứa các giá trị không thể đo được sẽ dẫn đến typeerror.TypeError.

4.6.3. Các loại trình tự có thể thay đổi

Các hoạt động trong bảng sau được xác định trên các loại chuỗi có thể thay đổi. Các bộ sưu tập.collections.abc.MutableSequence ABC is provided to make it easier to correctly implement these operations on custom sequence types.

Trong bảng S là một thể hiện của một loại chuỗi có thể thay đổi, t là bất kỳ đối tượng có thể lặp lại và x là một đối tượng tùy ý đáp ứng bất kỳ loại hạn chế nào và giá trị do S áp đặt (ví dụ: bytearray chỉ chấp nhận số nguyên đáp ứng giới hạn giá trị 0bytearray only accepts integers that meet the value restriction 0 <= x <= 255).

Hoạt độngKết quảGhi chú
s[i]=x = x Mục I của S được thay thế bởi x& nbsp;
s[i:j]=t = t Slice of s từ i đến j được thay thế bằng nội dung của tần số t có thể& nbsp;
dels[i:j] s[i:j] Slice of s từ i đến j được thay thế bằng nội dung của tần số t có thểs[i:j] = [] & nbsp;
s[i:j:k]=t = t Slice of s từ i đến j được thay thế bằng nội dung của tần số t có thểs[i:j:k] are replaced by those of t Giống như S [i: j] = []
dels[i:j:k] s[i:j:k] Các yếu tố của S [i: j: k] được thay thế bằng các yếu tố của ts[i:j:k] from the list & nbsp;
s.append(x) Slice of s từ i đến j được thay thế bằng nội dung của tần số t có thểs[len(s):len(s)] = [x]) & nbsp;
s.clear() Slice of s từ i đến j được thay thế bằng nội dung của tần số t có thểs (same as del s[:]) Giống như S [i: j] = []
s.copy() Các yếu tố của S [i: j: k] được thay thế bằng các yếu tố của ts (same as s[:]) Giống như S [i: j] = []
Các yếu tố của S [i: j: k] được thay thế bằng các yếu tố của t or s += t (1)s[len(s):len(s)] = t) & nbsp;
s*=n *= n Slice of s từ i đến j được thay thế bằng nội dung của tần số t có thểGiống như S [i: j] = []
s.insert(i,x) x) Các yếu tố của S [i: j: k] được thay thế bằng các yếu tố của ts[i:i] = [x]) & nbsp;
s.pop([i]) Slice of s từ i đến j được thay thế bằng nội dung của tần số t có thểGiống như S [i: j] = []
s.remove(x) Các yếu tố của S [i: j: k] được thay thế bằng các yếu tố của ts[i] == x (1)
s.reverse() Xóa các yếu tố của S [I: J: K] khỏi danh sáchnối x đến cuối chuỗi (giống như S [len (s): len (s)] = [x])

Notes:

  1. Xóa tất cả các mục khỏi S (giống như DELS [:])

  2. (5)-1, so that by default the last item is removed and returned.

  3. Tạo một bản sao nông của S (giống như S [:]) raises ValueError when x is not found in s.

  4. s.extend (t) hoặc s+= treverse() method modifies the sequence in place for economy of space when reversing a large sequence. To remind users that it operates by side effect, it does not return the reversed sequence.

  5. Rõ ràng () và Copy () được bao gồm để thống nhất với các giao diện của các thùng chứa có thể thay đổi mà không ủng hộ các hoạt động cắt lát (như Dict và Set) and copy() are included for consistency with the interfaces of mutable containers that don’t support slicing operations (such as dict and set)

    Mới trong Phiên bản 3.3: Phương thức rõ ràng () và Copy ().clear() and copy() methods.

  6. Giá trị n là một số nguyên hoặc một đối tượng thực hiện __index __ (). Giá trị bằng không và âm của n xóa chuỗi. Các mục trong chuỗi không được sao chép; Chúng được tham chiếu nhiều lần, như được giải thích cho s*n theo các hoạt động trình tự chung.__index__(). Zero and negative values of n clear the sequence. Items in the sequence are not copied; they are referenced multiple times, as explained for s * n under Common Sequence Operations.

4.6.4. Danh sách

Danh sách là các chuỗi có thể thay đổi, thường được sử dụng để lưu trữ các bộ sưu tập các mục đồng nhất (trong đó mức độ tương tự chính xác sẽ thay đổi theo ứng dụng).

Danh sách lớp học ([itable]) ¶[iterable]

Danh sách có thể được xây dựng theo nhiều cách:

  • Sử dụng một cặp dấu ngoặc vuông để biểu thị danh sách trống: [][]
  • Sử dụng dấu ngoặc vuông, tách các vật phẩm với dấu phẩy: [A], [A, B, C][a], [a, b, c]
  • Sử dụng danh sách hiểu: [xforxiniterable][x for x in iterable]
  • Sử dụng Trình xây dựng loại: Danh sách () hoặc Danh sách (có thể lặp lại)list() or list(iterable)

Hàm tạo xây dựng một danh sách có các mục giống nhau và theo cùng thứ tự với các mục của IT có thể. Có thể lặp lại có thể là một chuỗi, một thùng chứa hỗ trợ lặp hoặc đối tượng lặp. Nếu Iterable đã là một danh sách, một bản sao được tạo và trả lại, tương tự như ITable [:]. Ví dụ: danh sách ('ABC') trả về ['A', 'B', 'C'] và danh sách ((1,2,3)) trả về [1,2,3]. Nếu không có đối số nào được đưa ra, hàm tạo tạo một danh sách trống mới, [].iterable[:]. For example, list('abc') returns ['a', 'b', 'c'] and list( (1, 2, 3) ) returns [1, 2, 3]. If no argument is given, the constructor creates a new empty list, [].

Nhiều hoạt động khác cũng tạo ra các danh sách, bao gồm cả sắp xếp () tích hợp.sorted() built-in.

Danh sách thực hiện tất cả các hoạt động trình tự chung và có thể thay đổi. Danh sách cũng cung cấp phương pháp bổ sung sau:

Sắp xếp (*, key = none, lùi = không) ¶

Phương pháp này sắp xếp danh sách tại chỗ, chỉ sử dụng< comparisons between items. Exceptions are not suppressed - if any comparison operations fail, the entire sort operation will fail (and the list will likely be left in a partially modified state).

Sắp xếp () chấp nhận hai đối số chỉ có thể được truyền bằng từ khóa (đối số chỉ từ khóa): accepts two arguments that can only be passed by keyword (keyword-only arguments):

Khóa chỉ định hàm của một đối số được sử dụng để trích xuất khóa so sánh từ mỗi phần tử danh sách (ví dụ: key = str.lower). Khóa tương ứng với từng mục trong danh sách được tính một lần và sau đó được sử dụng cho toàn bộ quy trình sắp xếp. Giá trị mặc định của không có nghĩa là các mục danh sách được sắp xếp trực tiếp mà không tính toán giá trị khóa riêng.key=str.lower). The key corresponding to each item in the list is calculated once and then used for the entire sorting process. The default value of None means that list items are sorted directly without calculating a separate key value.

Tiện ích functools.cmp_to_key () có sẵn để chuyển đổi hàm CMP kiểu 2.x thành chức năng chính.functools.cmp_to_key() utility is available to convert a 2.x style cmp function to a key function.

Đảo ngược là một giá trị boolean. Nếu được đặt thành True, thì các yếu tố danh sách được sắp xếp như thể mỗi so sánh được đảo ngược.True, then the list elements are sorted as if each comparison were reversed.

Phương pháp này sửa đổi trình tự tại chỗ cho nền kinh tế của không gian khi sắp xếp một chuỗi lớn. Để nhắc nhở người dùng rằng nó hoạt động bằng hiệu ứng phụ, nó không trả về trình tự được sắp xếp (sử dụng Sắp xếp () để yêu cầu rõ ràng một thể hiện danh sách được sắp xếp mới).sorted() to explicitly request a new sorted list instance).

Phương thức sort () được đảm bảo là ổn định. Một loại ổn định nếu nó đảm bảo không thay đổi thứ tự tương đối của các yếu tố so sánh bằng nhau - điều này rất hữu ích để sắp xếp trong nhiều lần vượt qua (ví dụ, sắp xếp theo bộ phận, sau đó theo mức lương).sort() method is guaranteed to be stable. A sort is stable if it guarantees not to change the relative order of elements that compare equal — this is helpful for sorting in multiple passes (for example, sort by department, then by salary grade).

Chi tiết triển khai CPYThon: Trong khi một danh sách đang được sắp xếp, hiệu quả của việc cố gắng đột biến hoặc thậm chí kiểm tra, danh sách không được xác định. Việc triển khai C của Python làm cho danh sách xuất hiện trống trong thời gian và tăng giá trịerRor nếu có thể phát hiện danh sách đã bị đột biến trong một loại. While a list is being sorted, the effect of attempting to mutate, or even inspect, the list is undefined. The C implementation of Python makes the list appear empty for the duration, and raises ValueError if it can detect that the list has been mutated during a sort.

4.6.5. Bài hát

Các bộ dữ liệu là các trình tự bất biến, thường được sử dụng để lưu trữ các bộ sưu tập dữ liệu không đồng nhất (như 2 bộ phận được tạo ra bởi sự liệt kê () tích hợp). Các bộ dữ liệu cũng được sử dụng cho các trường hợp cần một chuỗi dữ liệu đồng nhất bất biến (chẳng hạn như cho phép lưu trữ trong một trường hợp tập hợp hoặc chỉ định).enumerate() built-in). Tuples are also used for cases where an immutable sequence of homogeneous data is needed (such as allowing storage in a set or dict instance).

lớp tuple ([itable]) ¶[iterable]

Tuples có thể được xây dựng theo một số cách:

  • Sử dụng một cặp dấu ngoặc đơn để biểu thị tuple trống: ()()
  • Sử dụng dấu phẩy theo dõi cho singleton tuple: A, hoặc (a,)a, or (a,)
  • Tách các mục với dấu phẩy: A, B, C hoặc (A, B, C)a, b, c or (a, b, c)
  • Sử dụng Tuple () tích hợp: tuple () hoặc tuple (có thể sử dụng được)tuple() built-in: tuple() or tuple(iterable)

Hàm tạo xây dựng một tuple có các mục giống nhau và theo cùng thứ tự với các mục của IT có thể. Có thể lặp lại có thể là một chuỗi, một thùng chứa hỗ trợ lặp hoặc đối tượng lặp. Nếu có thể là một tuple, nó sẽ được trả lại không thay đổi. Ví dụ: tuple ('abc') trả về ('a', 'b', 'c') và tuple ([1,2,3]) trả về (1,2,3). Nếu không có đối số nào được đưa ra, hàm tạo tạo một bộ tuple trống mới, ().tuple('abc') returns ('a', 'b', 'c') and tuple( [1, 2, 3] ) returns (1, 2, 3). If no argument is given, the constructor creates a new empty tuple, ().

Lưu ý rằng đó thực sự là dấu phẩy tạo ra một tuple, không phải dấu ngoặc đơn. Các dấu ngoặc đơn là tùy chọn, ngoại trừ trong trường hợp tuple trống hoặc khi chúng cần thiết để tránh sự mơ hồ của cú pháp. Ví dụ: F (A, B, C) là một cuộc gọi hàm với ba đối số, trong khi F ((a, b, c)) là một cuộc gọi hàm với 3-tuple là đối số duy nhất.f(a, b, c) is a function call with three arguments, while f((a, b, c)) is a function call with a 3-tuple as the sole argument.

Tuples thực hiện tất cả các hoạt động trình tự phổ biến.

Đối với các bộ sưu tập dữ liệu không đồng nhất trong đó quyền truy cập theo tên rõ ràng hơn truy cập bằng chỉ mục, comcands.namedTuple () có thể là một lựa chọn phù hợp hơn một đối tượng tuple đơn giản.collections.namedtuple() may be a more appropriate choice than a simple tuple object.

4.6.6. Các dãy¶

Loại phạm vi đại diện cho một chuỗi số bất biến và thường được sử dụng để lặp một số lần cụ thể trong các vòng lặp.range type represents an immutable sequence of numbers and is commonly used for looping a specific number of times in for loops.

Phạm vi lớp (Dừng) Phạm vi lớp (Bắt đầu, Dừng [, Bước])[, step])

Các đối số cho hàm tạo phạm vi phải là số nguyên (tích hợp int hoặc bất kỳ đối tượng nào thực hiện phương thức đặc biệt __index__). Nếu đối số bước bị bỏ qua, nó mặc định là 1. Nếu đối số bắt đầu bị bỏ qua, nó mặc định là 0. Nếu bước bằng không, giá trịerror được nâng lên.int or any object that implements the __index__ special method). If the step argument is omitted, it defaults to 1. If the start argument is omitted, it defaults to 0. If step is zero, ValueError is raised.

Đối với một bước dương, nội dung của phạm vi r được xác định bởi công thức r [i] = start+bước*i trong đó i> = 0 và r [i]r are determined by the formula r[i] = start + step*i where i >= 0 and r[i] < stop.

Đối với một bước âm, nội dung của phạm vi vẫn được xác định bởi công thức r [i] = start+bước*i, nhưng các ràng buộc là i> = 0 và r [i]> dừng.r[i] = start + step*i, but the constraints are i >= 0 and r[i] > stop.

Một đối tượng phạm vi sẽ trống nếu r [0] không đáp ứng ràng buộc giá trị. Phạm vi hỗ trợ các chỉ số tiêu cực, nhưng chúng được hiểu là lập chỉ mục từ phần cuối của chuỗi được xác định bởi các chỉ số dương.r[0] does not meet the value constraint. Ranges do support negative indices, but these are interpreted as indexing from the end of the sequence determined by the positive indices.

Phạm vi chứa các giá trị tuyệt đối lớn hơn sys.MaxSize được cho phép nhưng một số tính năng (như Len ()) có thể tăng áp lực.sys.maxsize are permitted but some features (such as len()) may raise OverflowError.

Ví dụ phạm vi:

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
1

Phạm vi thực hiện tất cả các hoạt động trình tự phổ biến ngoại trừ việc kết hợp và lặp lại (do thực tế là các đối tượng phạm vi chỉ có thể đại diện cho các chuỗi theo mô hình nghiêm ngặt và sự lặp lại và nối thường sẽ vi phạm mô hình đó).

Ưu điểm của loại phạm vi so với danh sách hoặc tuple thông thường là một đối tượng phạm vi sẽ luôn luôn có cùng lượng bộ nhớ (nhỏ), bất kể kích thước của phạm vi nó đại diện , tính toán các mặt hàng riêng lẻ và phụ khi cần thiết).range type over a regular list or tuple is that a range object will always take the same (small) amount of memory, no matter the size of the range it represents (as it only stores the start, stop and step values, calculating individual items and subranges as needed).

Các đối tượng phạm vi thực hiện các bộ sưu tập.collections.abc.Sequence ABC, and provide features such as containment tests, element index lookup, slicing and support for negative indices (see Sequence Types — list, tuple, range):

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
2

Các đối tượng phạm vi kiểm tra cho sự bình đẳng với == và! = So sánh chúng là trình tự. Đó là, hai đối tượng phạm vi được coi là bằng nhau nếu chúng đại diện cho cùng một chuỗi các giá trị. . 4,2).)== and != compares them as sequences. That is, two range objects are considered equal if they represent the same sequence of values. (Note that two range objects that compare equal might have different start, stop and step attributes, for example range(0) == range(2, 1, 3) or range(0, 3, 2) == range(0, 4, 2).)

Đã thay đổi trong phiên bản 3.2: Thực hiện trình tự ABC. Hỗ trợ cắt lát và chỉ số tiêu cực. Kiểm tra các đối tượng INT cho tư cách thành viên trong thời gian không đổi thay vì lặp qua tất cả các mục.Implement the Sequence ABC. Support slicing and negative indices. Test int objects for membership in constant time instead of iterating through all items.

Đã thay đổi trong phiên bản 3.3: Xác định ‘== và và‘! = Để so sánh các đối tượng phạm vi dựa trên chuỗi các giá trị mà chúng xác định (thay vì so sánh dựa trên nhận dạng đối tượng).Define ‘==’ and ‘!=’ to compare range objects based on the sequence of values they define (instead of comparing based on object identity).

Mới trong phiên bản 3.3: Các thuộc tính bắt đầu, dừng và bước.The start, stop and step attributes.

4.7. Loại trình tự văn bản - STR¶str¶

Dữ liệu văn bản trong Python được xử lý với các đối tượng STR hoặc chuỗi. Chuỗi là chuỗi bất biến của các điểm mã unicode. Chuỗi chữ được viết theo nhiều cách khác nhau:str objects, or strings. Strings are immutable sequences of Unicode code points. String literals are written in a variety of ways:

  • Trích dẫn đơn: 'cho phép báo giá "đôi"'allows embedded "double" quotes'
  • Double Trích dẫn: "Cho phépeMbedded'Single'quotes"."allows embedded 'single' quotes".
  • Triple Trích dẫn: '' 'Threesinglequotes' '', "" "Threedoublequotes" ""'''Three single quotes''', """Three double quotes"""

Các chuỗi được trích dẫn ba có thể kéo dài nhiều dòng - tất cả các khoảng trắng liên quan sẽ được bao gồm trong chuỗi theo nghĩa đen.

Chuỗi chữ là một phần của một biểu thức duy nhất và chỉ có khoảng trắng giữa chúng sẽ được chuyển đổi hoàn toàn thành một chuỗi theo nghĩa đen. Nghĩa là ("spam" "trứng") == "Spameggs".("spam " "eggs") == "spam eggs".

Xem Chuỗi và Byte theo nghĩa đen để biết thêm về các dạng khác nhau của chuỗi theo nghĩa đen, bao gồm các chuỗi thoát được hỗ trợ và tiền tố R (RAW RAW) vô hiệu hóa hầu hết các chuỗi thoát ra.r (“raw”) prefix that disables most escape sequence processing.

Chuỗi cũng có thể được tạo từ các đối tượng khác bằng cách sử dụng Trình xây dựng STR.str constructor.

Vì không có loại ký tự riêng biệt, nên lập chỉ mục một chuỗi tạo ra các chuỗi có độ dài 1. nghĩa là, đối với chuỗi không trống s, s [0] == s [0: 1].s[0] == s[0:1].

Cũng không có loại chuỗi có thể thay đổi, nhưng str.join () hoặc io.Stringio có thể được sử dụng để xây dựng các chuỗi một cách hiệu quả từ nhiều đoạn.str.join() or io.StringIO can be used to efficiently construct strings from multiple fragments.

Đã thay đổi trong phiên bản 3.3: Để tương thích ngược với sê -ri Python 2, tiền tố U một lần nữa được cho phép trên chuỗi chữ. Nó không có tác dụng đối với ý nghĩa của các chữ cái và không thể được kết hợp với tiền tố r.For backwards compatibility with the Python 2 series, the u prefix is once again permitted on string literals. It has no effect on the meaning of string literals and cannot be combined with the r prefix.

lớp str (object = '') ¶ class str (object = b '', expoding = 'utf-8', error = 'nghiêm ngặt')

Trả về một phiên bản chuỗi của đối tượng. Nếu đối tượng không được cung cấp, hãy trả về chuỗi trống. Mặt khác, hành vi của str () phụ thuộc vào việc mã hóa hay lỗi được đưa ra, như sau.str() depends on whether encoding or errors is given, as follows.

Nếu không mã hóa cũng như lỗi, str (object) trả về đối tượng .__ str __ (), đó là biểu diễn chuỗi không chính thức hoặc có thể in độc đáo của đối tượng. Đối với các đối tượng chuỗi, đây là chuỗi chính. Nếu đối tượng không có phương thức __str __ (), thì str () sẽ quay trở lại return repr (object).str(object) returns object.__str__(), which is the “informal” or nicely printable string representation of object. For string objects, this is the string itself. If object does not have a __str__() method, then str() falls back to returning repr(object).

Nếu ít nhất một mã hóa hoặc lỗi được đưa ra, đối tượng phải là một đối tượng giống như byte (ví dụ: byte hoặc bytearray). Trong trường hợp này, nếu đối tượng là đối tượng byte (hoặc bytearray), thì str (byte, mã hóa, lỗi) tương đương với byte.decode (mã hóa, lỗi). Mặt khác, đối tượng byte bên dưới đối tượng bộ đệm được lấy trước khi gọi byte.decode (). Xem các loại chuỗi nhị phân - Byte, bytearray, bộ nhớ và giao thức bộ đệm để biết thông tin về các đối tượng bộ đệm.bytes or bytearray). In this case, if object is a bytes (or bytearray) object, then str(bytes, encoding, errors) is equivalent to bytes.decode(encoding, errors). Otherwise, the bytes object underlying the buffer object is obtained before calling bytes.decode(). See Binary Sequence Types — bytes, bytearray, memoryview and Buffer Protocol for information on buffer objects.

Chuyển đối tượng byte cho str () mà không có đối số mã hóa hoặc lỗi nằm trong trường hợp đầu tiên trả lại biểu diễn chuỗi không chính thức (xem thêm tùy chọn dòng lệnh -B cho Python). Ví dụ:bytes object to str() without the encoding or errors arguments falls under the first case of returning the informal string representation (see also the -b command-line option to Python). For example:

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
3

Để biết thêm thông tin về lớp STR và các phương thức của nó, hãy xem Loại chuỗi văn bản - phần STR và phần Chuỗi bên dưới. Để xuất các chuỗi được định dạng, xem phần định dạng chuỗi. Ngoài ra, xem phần Dịch vụ xử lý văn bản.str class and its methods, see Text Sequence Type — str and the String Methods section below. To output formatted strings, see the String Formatting section. In addition, see the Text Processing Services section.

4.7.1. Phương pháp chuỗi

Các chuỗi thực hiện tất cả các hoạt động trình tự chung, cùng với các phương pháp bổ sung được mô tả dưới đây.

Chuỗi cũng hỗ trợ hai kiểu định dạng chuỗi, một loại cung cấp một mức độ linh hoạt và tùy chỉnh lớn (xem str.format (), định dạng Syntax và định dạng chuỗi) và các định dạng khác dựa trên kiểu printf xử lý phạm vi hẹp hơn của các loại và hơi khó sử dụng chính xác hơn, nhưng thường nhanh hơn cho các trường hợp nó có thể xử lý (định dạng chuỗi kiểu printf).str.format(), Format String Syntax and String Formatting) and the other based on C printf style formatting that handles a narrower range of types and is slightly harder to use correctly, but is often faster for the cases it can handle (printf-style String Formatting).

Phần dịch vụ xử lý văn bản của thư viện tiêu chuẩn bao gồm một số mô -đun khác cung cấp các tiện ích liên quan đến văn bản khác nhau (bao gồm hỗ trợ biểu thức thông thường trong mô -đun RE).re module).

str.capitalize ()

Trả về một bản sao của chuỗi với ký tự đầu tiên được viết hoa và phần còn lại.

str.case Fold () ¶

Trả về một bản sao được giới thiệu của chuỗi. Các chuỗi casefold có thể được sử dụng để kết hợp không đồng ý.

Casfolding tương tự như LowerCasing nhưng tích cực hơn vì nó nhằm loại bỏ tất cả các trường hợp phân biệt trong một chuỗi. Ví dụ, chữ cái viết thường của Đức 'ß' tương đương với "SS". Vì nó đã là chữ thường, thấp hơn () sẽ không làm gì với 'ß'; caseprint () chuyển đổi nó thành "SS".'ß' is equivalent to "ss". Since it is already lowercase, lower() would do nothing to 'ß'; casefold() converts it to "ss".

Thuật toán Casefold được mô tả trong Phần 3.13 của tiêu chuẩn Unicode.

Mới trong phiên bản 3.3.

str.center (chiều rộng [, fillchar]) ¶[, fillchar]

Trả về tập trung trong một chuỗi chiều rộng chiều dài. Đệm được thực hiện bằng cách sử dụng fillchar được chỉ định (mặc định là không gian ASCII). Chuỗi ban đầu được trả về nếu chiều rộng nhỏ hơn hoặc bằng Len (s).len(s).

str.count (sub [, start [, end]]) ¶[, start[, end]]

Trả về số lần xuất hiện không chồng chéo của phụ con trong phạm vi [bắt đầu, kết thúc]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt.

str.encode (mã hóa = "utf-8", lỗi = "nghiêm ngặt") ¶

Trả về một phiên bản được mã hóa của chuỗi dưới dạng đối tượng byte. Mã hóa mặc định là 'UTF-8'. Lỗi có thể được đưa ra để đặt sơ đồ xử lý lỗi khác. Mặc định cho các lỗi là 'nghiêm ngặt', có nghĩa là các lỗi mã hóa làm tăng unicodeerror. Các giá trị có thể khác là 'bỏ qua', 'thay thế', 'xmlcharrefreplace', 'backslashreplace' và bất kỳ tên nào khác được đăng ký qua codecs.register_error (), xem phần xử lý lỗi phần. Để biết danh sách các mã hóa có thể, hãy xem phần Mã hóa tiêu chuẩn.'utf-8'. errors may be given to set a different error handling scheme. The default for errors is 'strict', meaning that encoding errors raise a UnicodeError. Other possible values are 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' and any other name registered via codecs.register_error(), see section Error Handlers. For a list of possible encodings, see section Standard Encodings.

Đã thay đổi trong phiên bản 3.1: Hỗ trợ cho các đối số từ khóa được thêm vào.Support for keyword arguments added.

str.endswith (hậu tố [, bắt đầu [, kết thúc]]) ¶[, start[, end]]

Trả về true nếu chuỗi kết thúc với hậu tố được chỉ định, nếu không hãy trả về sai. Hậu tố cũng có thể là một bộ hậu tố để tìm kiếm. Với bắt đầu tùy chọn, kiểm tra bắt đầu ở vị trí đó. Với kết thúc tùy chọn, dừng so sánh ở vị trí đó.True if the string ends with the specified suffix, otherwise return False. suffix can also be a tuple of suffixes to look for. With optional start, test beginning at that position. With optional end, stop comparing at that position.

str.expandtabs (tabsize = 8) ¶

Trả về một bản sao của chuỗi trong đó tất cả các ký tự tab được thay thế bằng một hoặc nhiều khoảng trắng, tùy thuộc vào cột hiện tại và kích thước tab đã cho. Vị trí tab xảy ra mọi ký tự TabSize (mặc định là 8, đưa ra các vị trí tab tại các cột 0, 8, 16, v.v.). Để mở rộng chuỗi, cột hiện tại được đặt thành 0 và chuỗi được kiểm tra ký tự theo ký tự. Nếu ký tự là một tab (\ t), một hoặc nhiều ký tự không gian được chèn vào kết quả cho đến khi cột hiện tại bằng vị trí tab tiếp theo. . Bất kỳ ký tự nào khác được sao chép không thay đổi và cột hiện tại được tăng lên bởi một nhân vật bất kể nhân vật được biểu diễn như thế nào khi được in.\t), one or more space characters are inserted in the result until the current column is equal to the next tab position. (The tab character itself is not copied.) If the character is a newline (\n) or return (\r), it is copied and the current column is reset to zero. Any other character is copied unchanged and the current column is incremented by one regardless of how the character is represented when printed.

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
4

str.find (sub [, start [, end]]) ¶[, start[, end]]

Trả về chỉ số thấp nhất trong chuỗi nơi tìm thấy phụ phụ trong phần [bắt đầu: kết thúc]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt. Trả lại -1 nếu không tìm thấy phụ.s[start:end]. Optional arguments start and end are interpreted as in slice notation. Return -1 if sub is not found.

Ghi chú

Phương thức Find () chỉ nên được sử dụng nếu bạn cần biết vị trí của phụ. Để kiểm tra xem Sub có phải là chất nền hay không, hãy sử dụng toán tử trong toán tử:find() method should be used only if you need to know the position of sub. To check if sub is a substring or not, use the in operator:

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
5

str.format (*args, ** kwargs) ¶

Thực hiện thao tác định dạng chuỗi. Chuỗi mà phương thức này được gọi là có thể chứa văn bản theo nghĩa đen hoặc các trường thay thế được phân tách bằng niềng răng {}. Mỗi trường thay thế chứa chỉ số số của đối số vị trí hoặc tên của đối số từ khóa. Trả về một bản sao của chuỗi trong đó mỗi trường thay thế được thay thế bằng giá trị chuỗi của đối số tương ứng.{}. Each replacement field contains either the numeric index of a positional argument, or the name of a keyword argument. Returns a copy of the string where each replacement field is replaced with the string value of the corresponding argument.

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
6

Xem Cú pháp Chuỗi định dạng để biết mô tả về các tùy chọn định dạng khác nhau có thể được chỉ định trong chuỗi định dạng.

str.format_map (ánh xạ) ¶

Tương tự như str.format (** ánh xạ), ngoại trừ việc ánh xạ được sử dụng trực tiếp và không được sao chép vào một dict. Điều này rất hữu ích nếu ví dụ ánh xạ là một lớp con Dict:str.format(**mapping), except that mapping is used directly and not copied to a dict. This is useful if for example mapping is a dict subclass:

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
7

Mới trong phiên bản 3.2.

str.index (sub [, start [, end]]) ¶[, start[, end]]

Như Find (), nhưng tăng giá trịerror khi không tìm thấy chuỗi con.find(), but raise ValueError when the substring is not found.

str.isalnum ()

Trả về true nếu tất cả các ký tự trong chuỗi là chữ và số và có ít nhất một ký tự, sai nếu không. Một ký tự C là chữ và số nếu một trong những lợi nhuận sau đây đúng: c.isalpha (), c.isdecimal (), c.isdigit () hoặc c.isnumeric ().c is alphanumeric if one of the following returns True: c.isalpha(), c.isdecimal(), c.isdigit(), or c.isnumeric().

str.isalpha () ¶

Trả về true nếu tất cả các ký tự trong chuỗi là chữ cái và có ít nhất một ký tự, sai nếu không. Các ký tự bảng chữ cái là những ký tự được xác định trong cơ sở dữ liệu ký tự Unicode là chữ cái chữ, tức là, những ký tự có thuộc tính danh mục chung là một trong những LM LM, LT LT, Lưu ý rằng điều này khác với thuộc tính bảng chữ cái của người Viking được xác định trong tiêu chuẩn Unicode.

str.isdecimal ()

Trả về true nếu tất cả các ký tự trong chuỗi là các ký tự thập phân và có ít nhất một ký tự, sai nếu không. Các ký tự thập phân là những nhân vật từ thể loại chung ND ND. Danh mục này bao gồm các ký tự chữ số và tất cả các ký tự có thể được sử dụng để tạo thành số thập phân, ví dụ: U+0660, chữ số tiếng Ả Rập không.

str.isdigit ()

Trả về true nếu tất cả các ký tự trong chuỗi là các chữ số và có ít nhất một ký tự, sai nếu không. Các chữ số bao gồm các ký tự thập phân và các chữ số cần xử lý đặc biệt, chẳng hạn như các chữ số siêu tương thích. Chính thức, một chữ số là một ký tự có giá trị thuộc tính numeric_type = Digit hoặc numeric_type = thập phân.

str.isidentifier ()

Trả về true nếu chuỗi là một định danh hợp lệ theo định nghĩa ngôn ngữ, định danh phần và từ khóa.

Sử dụng từ khóa.iskeyword () để kiểm tra các định danh dành riêng như def và class.keyword.iskeyword() to test for reserved identifiers such as def and class.

str.islower () ¶

Trả về true nếu tất cả các ký tự vỏ [4] trong chuỗi là chữ thường và có ít nhất một ký tự vỏ, sai.

str.isnumeric ()

Trả về true nếu tất cả các ký tự trong chuỗi là các ký tự số và có ít nhất một ký tự, sai nếu không. Các ký tự số bao gồm các ký tự chữ số và tất cả các ký tự có thuộc tính giá trị số Unicode, ví dụ: U+2155, phân số thô một phần năm. Chính thức, các ký tự số là các ký tự có giá trị thuộc tính numeric_type = Digit, numeric_type = decimal hoặc numeric_type = numeric.

str.isprintable () ¶

Trả về true nếu tất cả các ký tự trong chuỗi có thể in hoặc chuỗi trống, sai nếu không. Các ký tự không thể in là những ký tự được xác định trong cơ sở dữ liệu ký tự Unicode là một phần khác hoặc phân tách khác, ngoại trừ không gian ASCII (0x20) được coi là có thể in. (Lưu ý rằng các ký tự có thể in trong bối cảnh này là các ký tự không nên thoát ra khi repr () được gọi trên một chuỗi.repr() is invoked on a string. It has no bearing on the handling of strings written to sys.stdout or sys.stderr.)

str.isspace () ¶

Trả về true nếu chỉ có các ký tự khoảng trắng trong chuỗi và có ít nhất một ký tự, sai nếu không. Các ký tự Whitespace là những ký tự được xác định trong cơ sở dữ liệu ký tự Unicode với tên gọi khác là một người khác, hoặc các nhân vật có thuộc tính hai chiều là một trong những WS WS ,,

str.istitle () ¶

Trả về true nếu chuỗi là một chuỗi tiêu chuẩn và có ít nhất một ký tự, ví dụ: các ký tự chữ hoa chỉ có thể theo dõi các ký tự chưa được giới thiệu và các ký tự thường chỉ là các ký tự. Trả lại sai nếu không.

str.isupper () ¶

Trả về true nếu tất cả các ký tự vỏ [4] trong chuỗi là chữ hoa và có ít nhất một ký tự vỏ, sai.

str.join (có thể lặp lại) ¶

Trả về một chuỗi là sự kết hợp của các chuỗi trong Itable Itable. Một kiểu mẫu sẽ được nâng lên nếu có bất kỳ giá trị không chuỗi nào trong ITable, bao gồm cả các đối tượng byte. Phân tách giữa các phần tử là chuỗi cung cấp phương pháp này.TypeError will be raised if there are any non-string values in iterable, including bytes objects. The separator between elements is the string providing this method.

str.ljust (chiều rộng [, fillchar]) ¶[, fillchar]

Trả về chuỗi bên trái chính đáng trong một chuỗi chiều rộng. Đệm được thực hiện bằng cách sử dụng fillchar được chỉ định (mặc định là không gian ASCII). Chuỗi ban đầu được trả về nếu chiều rộng nhỏ hơn hoặc bằng Len (s).len(s).

str.lower ()

Trả về một bản sao của chuỗi với tất cả các ký tự vỏ [4] được chuyển đổi thành chữ thường.

Thuật toán hạ thấp được sử dụng được mô tả trong Phần 3.13 của tiêu chuẩn Unicode.

str.lstrip ([chars]) ¶[chars]

Trả về một bản sao của chuỗi với các ký tự hàng đầu bị xóa. Đối số ký tự là một chuỗi chỉ định tập hợp các ký tự sẽ được xóa. Nếu bị bỏ qua hoặc không có, đối số ký tự mặc định sẽ loại bỏ khoảng trắng. Đối số chars không phải là tiền tố; Thay vào đó, tất cả các kết hợp các giá trị của nó đều bị tước:None, the chars argument defaults to removing whitespace. The chars argument is not a prefix; rather, all combinations of its values are stripped:

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
8

static str.maketrans (x [, y [, z]]) ¶[, y[, z]]

Phương thức tĩnh này trả về một bảng dịch có thể sử dụng cho str.translate ().str.translate().

Nếu chỉ có một đối số, thì đó phải là một bản đồ từ điển unicode (số nguyên) hoặc ký tự (chuỗi có độ dài 1) đến các thứ tự Unicode, chuỗi (có độ dài tùy ý) hoặc không có. Các phím nhân vật sau đó sẽ được chuyển đổi thành các lệnh.

Nếu có hai đối số, chúng phải là các chuỗi có độ dài bằng nhau và trong từ điển kết quả, mỗi ký tự trong X sẽ được ánh xạ tới ký tự ở cùng một vị trí trong y. Nếu có một đối số thứ ba, nó phải là một chuỗi, có các ký tự sẽ được ánh xạ tới không có trong kết quả.

str.partition (sep) ¶

Chia chuỗi ở lần xuất hiện đầu tiên của SEP và trả về 3-tuple chứa phần trước dấu phân cách, chính dấu phân cách và phần sau khi phân tách. Nếu không tìm thấy dấu phân cách, hãy trả về 3-tuple chứa chính chuỗi, theo sau là hai chuỗi trống.

str.replace (cũ, mới [, đếm]) ¶[, count]

Trả về một bản sao của chuỗi với tất cả các lần xuất hiện của phần phụ cũ được thay thế bằng mới. Nếu số lượng đối số tùy chọn được đưa ra, chỉ có các lần xuất hiện đầu tiên được thay thế.

str.rfind (sub [, start [, end]]) ¶[, start[, end]]

Trả về chỉ số cao nhất trong chuỗi nơi tìm thấy phụ phụ, sao cho phụ được chứa trong s [start: end]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt. Trả lại -1 khi thất bại.s[start:end]. Optional arguments start and end are interpreted as in slice notation. Return -1 on failure.

str.rindex (sub [, start [, end]]) ¶[, start[, end]]

Giống như rfind () nhưng tăng giá trị horror khi không tìm thấy phụ con.rfind() but raises ValueError when the substring sub is not found.

str.rjust (chiều rộng [, fillchar]) ¶[, fillchar]

Trả về chuỗi đúng chính đáng trong một chuỗi chiều rộng chiều dài. Đệm được thực hiện bằng cách sử dụng fillchar được chỉ định (mặc định là không gian ASCII). Chuỗi ban đầu được trả về nếu chiều rộng nhỏ hơn hoặc bằng Len (s).len(s).

str.rpartition (sep) ¶

Chia chuỗi ở lần xuất hiện cuối cùng của SEP và trả về 3-tuple chứa phần trước dấu phân cách, chính dấu phân cách và phần sau khi phân tách. Nếu không tìm thấy dấu phân cách, hãy trả về 3-Tuple chứa hai chuỗi trống, theo sau là chuỗi.

str.rsplit (sep = none, maxsplit = -1) ¶

Trả về một danh sách các từ trong chuỗi, sử dụng SEP làm chuỗi DELIMITER. Nếu MAXSplit được đưa ra, tại hầu hết các phân tách MaxSplit được thực hiện, những cái ngoài cùng bên phải. Nếu SEP không được chỉ định hoặc không có, bất kỳ chuỗi khoảng trắng nào là một dấu phân cách. Ngoại trừ việc phân tách từ bên phải, rsplit () hoạt động như Split () được mô tả chi tiết dưới đây.None, any whitespace string is a separator. Except for splitting from the right, rsplit() behaves like split() which is described in detail below.

str.rstrip ([chars]) ¶[chars]

Trả về một bản sao của chuỗi với các ký tự dấu vết bị xóa. Đối số ký tự là một chuỗi chỉ định tập hợp các ký tự sẽ được xóa. Nếu bị bỏ qua hoặc không có, đối số ký tự mặc định sẽ loại bỏ khoảng trắng. Đối số chars không phải là một hậu tố; Thay vào đó, tất cả các kết hợp các giá trị của nó đều bị tước:None, the chars argument defaults to removing whitespace. The chars argument is not a suffix; rather, all combinations of its values are stripped:

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
9

str.split (sep = none, maxsplit = -1) ¶

Trả về một danh sách các từ trong chuỗi, sử dụng SEP làm chuỗi DELIMITER. Nếu MAXSplit được đưa ra, tại hầu hết các phân tách MaxSplit được thực hiện (do đó, danh sách sẽ có hầu hết các phần tử MaxSplit+1). Nếu MaxSplit không được chỉ định hoặc -1, thì không có giới hạn về số lượng phân tách (tất cả các phân tách có thể được thực hiện).maxsplit+1 elements). If maxsplit is not specified or -1, then there is no limit on the number of splits (all possible splits are made).

Nếu SEP được đưa ra, các phân định liên tiếp không được nhóm lại với nhau và được coi là phân định các chuỗi trống (ví dụ: '1 ,, 2'.split (', ') trả về [' 1 ',' ',' 2 ']). Đối số SEP có thể bao gồm nhiều ký tự (ví dụ: '123'.split (' '') trả về ['1', '2', '3']). Tách một chuỗi trống với một dấu phân cách được chỉ định trả về [''].'1,,2'.split(',') returns ['1', '', '2']). The sep argument may consist of multiple characters (for example, '1<>2<>3'.split('<>') returns ['1', '2', '3']). Splitting an empty string with a specified separator returns [''].

Ví dụ:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
0

Nếu SEP không được chỉ định hoặc không có, một thuật toán phân tách khác nhau được áp dụng: Các lần chạy khoảng trắng liên tiếp được coi là một dấu phân cách duy nhất và kết quả sẽ không chứa các chuỗi trống ở đầu hoặc kết thúc nếu chuỗi có khoảng trắng dẫn đầu hoặc kéo dài. Do đó, tách một chuỗi trống hoặc một chuỗi bao gồm chỉ khoảng trắng với một dấu phân cách không trả về [].None, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the string has leading or trailing whitespace. Consequently, splitting an empty string or a string consisting of just whitespace with a None separator returns [].

Ví dụ:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
1

Str.SplitLines ([Keepends]) ¶[keepends]

Trả về một danh sách các dòng trong chuỗi, phá vỡ các ranh giới dòng. Phá vỡ dòng không được bao gồm trong danh sách kết quả trừ khi Keepends được đưa ra và đúng.

Phương pháp này phân chia trên các ranh giới dòng sau. Cụ thể, các ranh giới là một siêu dòng của Newlines phổ quát.

Đại diệnSự mô tả
\N Line Feed
\ r Vận chuyển trở lại
\ r \ n Vận chuyển trở lại + nguồn cấp dữ liệu dòng
\ v hoặc \ x0b or \x0b Tabline
\ f hoặc \ x0c or \x0c Thức ăn dạng
\ x1c Bộ phân cách tập tin
\ x1d Phân tách nhóm
\ x1e Ghi điểm phân tách
\ x85 Dòng tiếp theo (Mã điều khiển C1)
\ u2028 Dòng phân tách
\ u2029 Phân tách đoạn văn

Đã thay đổi trong phiên bản 3.2: \ V và \ f được thêm vào danh sách các ranh giới dòng.\v and \f added to list of line boundaries.

Ví dụ:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
2

Không giống như split () Khi một chuỗi phân cách được đưa ra, phương thức này trả về một danh sách trống cho chuỗi trống và ngắt dòng đầu cuối không dẫn đến một dòng phụ:split() when a delimiter string sep is given, this method returns an empty list for the empty string, and a terminal line break does not result in an extra line:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
3

Để so sánh, chia ('\ n') cho:split('\n') gives:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
4

str.startswith (tiền tố [, start [, end]]) ¶[, start[, end]]

Trả về true nếu chuỗi bắt đầu với tiền tố, nếu không hãy trả về sai. Tiền tố cũng có thể là một bộ tiền tố để tìm kiếm. Với bắt đầu tùy chọn, chuỗi kiểm tra bắt đầu ở vị trí đó. Với kết thúc tùy chọn, dừng so sánh chuỗi ở vị trí đó.True if string starts with the prefix, otherwise return False. prefix can also be a tuple of prefixes to look for. With optional start, test string beginning at that position. With optional end, stop comparing string at that position.

str.strip ([chars]) ¶[chars]

Trả về một bản sao của chuỗi với các ký tự dẫn đầu và dấu vết đã bị xóa. Đối số ký tự là một chuỗi chỉ định tập hợp các ký tự sẽ được xóa. Nếu bị bỏ qua hoặc không có, đối số ký tự mặc định sẽ loại bỏ khoảng trắng. Đối số chars không phải là tiền tố hoặc hậu tố; Thay vào đó, tất cả các kết hợp các giá trị của nó đều bị tước:None, the chars argument defaults to removing whitespace. The chars argument is not a prefix or suffix; rather, all combinations of its values are stripped:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
5

str.swapcase () ¶

Trả về một bản sao của chuỗi với các ký tự chữ hoa được chuyển đổi sang chữ thường và ngược lại. Lưu ý rằng không nhất thiết đúng là s.swapcase (). SWAPCASE () == s.s.swapcase().swapcase() == s.

str.title ()

Trả về một phiên bản tiêu chuẩn của chuỗi trong đó các từ bắt đầu bằng ký tự chữ hoa và các ký tự còn lại là chữ thường.

Ví dụ:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
6

Thuật toán sử dụng một định nghĩa độc lập ngôn ngữ đơn giản của một từ là các nhóm chữ cái liên tiếp. Định nghĩa hoạt động trong nhiều bối cảnh nhưng nó có nghĩa là các dấu nháy đơn trong các cơn co thắt và sở hữu hình thành ranh giới từ, có thể không phải là kết quả mong muốn:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
7

Một cách giải quyết cho dấu nháy đơn có thể được xây dựng bằng cách sử dụng các biểu thức thông thường:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
8

str.translate (bảng) ¶

Trả về một bản sao của chuỗi trong đó mỗi ký tự đã được ánh xạ qua bảng dịch đã cho. Bảng phải là một đối tượng thực hiện lập chỉ mục thông qua __getItem __ (), thường là một bản đồ hoặc trình tự. Khi được lập chỉ mục bởi một thứ tự unicode (một số nguyên), đối tượng bảng có thể thực hiện bất kỳ điều nào sau đây: trả về một thứ tự unicode hoặc một chuỗi, để ánh xạ ký tự cho một hoặc nhiều ký tự khác; trả về không, để xóa ký tự khỏi chuỗi trả về; Hoặc nâng một ngoại lệ trông giống, để ánh xạ nhân vật cho chính nó.__getitem__(), typically a mapping or sequence. When indexed by a Unicode ordinal (an integer), the table object can do any of the following: return a Unicode ordinal or a string, to map the character to one or more other characters; return None, to delete the character from the return string; or raise a LookupError exception, to map the character to itself.

Bạn có thể sử dụng str.maketrans () để tạo bản đồ dịch từ ánh xạ ký tự sang ký tự ở các định dạng khác nhau.str.maketrans() to create a translation map from character-to-character mappings in different formats.

Xem thêm Mô -đun Codecs để biết cách tiếp cận linh hoạt hơn đối với ánh xạ ký tự tùy chỉnh.codecs module for a more flexible approach to custom character mappings.

str.upper () ¶

Trả về một bản sao của chuỗi với tất cả các ký tự vỏ [4] được chuyển đổi thành chữ hoa. Lưu ý rằng str.upper (). Isupper () có thể là sai nếu s chứa các ký tự không bị hỏng hoặc nếu loại Unicode của (các) ký tự kết quả không phải là LU LU (chữ cái, chữ hoa), nhưng ví dụ: LT LT (Thư, Titlecase).str.upper().isupper() might be False if s contains uncased characters or if the Unicode category of the resulting character(s) is not “Lu” (Letter, uppercase), but e.g. “Lt” (Letter, titlecase).

Thuật toán từ trên được sử dụng được mô tả trong Phần 3.13 của tiêu chuẩn Unicode.

str.zfill (chiều rộng) ¶

Trả về một bản sao của chuỗi bên trái chứa đầy các chữ số ASCII '0' để tạo một chuỗi chiều rộng. Một tiền tố dấu hiệu hàng đầu ('+'/'-') được xử lý bằng cách chèn phần đệm sau ký tự dấu hiệu chứ không phải trước. Chuỗi ban đầu được trả về nếu chiều rộng nhỏ hơn hoặc bằng Len (s).'0' digits to make a string of length width. A leading sign prefix ('+'/'-') is handled by inserting the padding after the sign character rather than before. The original string is returned if width is less than or equal to len(s).

Ví dụ:

>>> (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() // 8) + 1, byteorder='little')
b'\xe8\x03'
9

4.7.2. Định dạng chuỗi kiểu printfprintf-style String Formatting¶

Ghi chú

Các hoạt động định dạng được mô tả ở đây thể hiện một loạt các kỳ quặc dẫn đến một số lỗi phổ biến (chẳng hạn như không hiển thị chính xác các bộ dữ liệu và từ điển). Sử dụng giao diện str.format () mới hơn giúp tránh các lỗi này và cũng cung cấp một cách tiếp cận nói chung mạnh mẽ hơn, linh hoạt và có thể mở rộng hơn để định dạng văn bản.str.format() interface helps avoid these errors, and also provides a generally more powerful, flexible and extensible approach to formatting text.

Các đối tượng chuỗi có một thao tác tích hợp duy nhất: toán tử % (modulo). Điều này còn được gọi là toán tử định dạng chuỗi hoặc nội suy. Định dạng định dạng % giá trị (trong đó định dạng là một chuỗi), % thông số kỹ thuật chuyển đổi trong định dạng được thay thế bằng 0 hoặc nhiều phần tử của các giá trị. Hiệu ứng tương tự như sử dụng Sprintf () trong ngôn ngữ C.% operator (modulo). This is also known as the string formatting or interpolation operator. Given format % values (where format is a string), % conversion specifications in format are replaced with zero or more elements of values. The effect is similar to using the sprintf() in the C language.

Nếu định dạng yêu cầu một đối số duy nhất, các giá trị có thể là một đối tượng không phải là một đối tượng. .

Trình xác định chuyển đổi chứa hai hoặc nhiều ký tự và có các thành phần sau, phải xảy ra theo thứ tự này:

  1. Ký tự '%', đánh dấu sự khởi đầu của trình xác định.'%' character, which marks the start of the specifier.
  2. Khóa ánh xạ (tùy chọn), bao gồm một chuỗi các ký tự được đặt dấu ngoặc đơn (ví dụ: (tên somen)).(somename)).
  3. Cờ chuyển đổi (tùy chọn), ảnh hưởng đến kết quả của một số loại chuyển đổi.
  4. Chiều rộng trường tối thiểu (tùy chọn). Nếu được chỉ định là '*' (dấu hoa thị), chiều rộng thực tế được đọc từ phần tử tiếp theo của bộ trong giá trị và đối tượng để chuyển đổi xuất hiện sau chiều rộng trường tối thiểu và độ chính xác tùy chọn.'*' (asterisk), the actual width is read from the next element of the tuple in values, and the object to convert comes after the minimum field width and optional precision.
  5. Độ chính xác (tùy chọn), được đưa ra dưới dạng '.' (chấm) theo sau là độ chính xác. Nếu được chỉ định là '*' (một dấu hoa thị), độ chính xác thực tế được đọc từ phần tử tiếp theo của tuple trong các giá trị và giá trị để chuyển đổi xuất hiện sau độ chính xác.'.' (dot) followed by the precision. If specified as '*' (an asterisk), the actual precision is read from the next element of the tuple in values, and the value to convert comes after the precision.
  6. Công cụ sửa đổi độ dài (tùy chọn).
  7. Loại chuyển đổi.

Khi đối số đúng là từ điển (hoặc loại ánh xạ khác), thì các định dạng trong chuỗi phải bao gồm khóa ánh xạ dấu ngoặc đơn vào từ điển đó được chèn ngay sau ký tự '%'. Khóa ánh xạ chọn giá trị được định dạng từ ánh xạ. Ví dụ:'%' character. The mapping key selects the value to be formatted from the mapping. For example:

>>> 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
0

Trong trường hợp này, số người xác định * có thể xảy ra ở định dạng (vì chúng yêu cầu danh sách tham số tuần tự).* specifiers may occur in a format (since they require a sequential parameter list).

Các ký tự cờ chuyển đổi là:

Lá cờNghĩa
'#' Chuyển đổi giá trị sẽ sử dụng hình thức thay thế trên mạng (trong đó được xác định bên dưới).
'0' Việc chuyển đổi sẽ được đệm bằng 0 cho các giá trị số.
'-' Giá trị được chuyển đổi được điều chỉnh trái (ghi đè chuyển đổi '0' nếu cả hai được đưa ra).'0' conversion if both are given).
' ' .
'+' Một ký tự dấu ('+' hoặc '-') sẽ đi trước chuyển đổi (ghi đè một lá cờ không gian trên mạng).'+' or '-') will precede the conversion (overrides a “space” flag).

Một công cụ sửa đổi độ dài (H, L hoặc L) có thể có mặt, nhưng bị bỏ qua vì nó không cần thiết cho Python - vì vậy ví dụ: %ld giống hệt với %d.h, l, or L) may be present, but is ignored as it is not necessary for Python – so e.g. %ld is identical to %d.

Các loại chuyển đổi là:

Chuyển đổiNghĩa'#'
'd' Chuyển đổi giá trị sẽ sử dụng hình thức thay thế trên mạng (trong đó được xác định bên dưới).Việc chuyển đổi sẽ được đệm bằng 0 cho các giá trị số.
'i' Chuyển đổi giá trị sẽ sử dụng hình thức thay thế trên mạng (trong đó được xác định bên dưới).Việc chuyển đổi sẽ được đệm bằng 0 cho các giá trị số.
'o' '-'Giá trị được chuyển đổi được điều chỉnh trái (ghi đè chuyển đổi '0' nếu cả hai được đưa ra).
'u' ''d'. .
'x' '+'Một ký tự dấu ('+' hoặc '-') sẽ đi trước chuyển đổi (ghi đè một lá cờ không gian trên mạng).
'X' Một công cụ sửa đổi độ dài (H, L hoặc L) có thể có mặt, nhưng bị bỏ qua vì nó không cần thiết cho Python - vì vậy ví dụ: %ld giống hệt với %d.Một ký tự dấu ('+' hoặc '-') sẽ đi trước chuyển đổi (ghi đè một lá cờ không gian trên mạng).
'e' Một công cụ sửa đổi độ dài (H, L hoặc L) có thể có mặt, nhưng bị bỏ qua vì nó không cần thiết cho Python - vì vậy ví dụ: %ld giống hệt với %d.Các loại chuyển đổi là:
'E' Chuyển đổiCác loại chuyển đổi là:
'f' Chuyển đổiCác loại chuyển đổi là:
'F' Chuyển đổiCác loại chuyển đổi là:
'g' Chuyển đổiGhi chú
'G' Đã ký số nguyên thập phân.Ghi chú
'c' Đã ký số nguyên thập phân.Việc chuyển đổi sẽ được đệm bằng 0 cho các giá trị số.
'r' '-'repr()). Giá trị được chuyển đổi được điều chỉnh trái (ghi đè chuyển đổi '0' nếu cả hai được đưa ra).
's' 'str()). Giá trị được chuyển đổi được điều chỉnh trái (ghi đè chuyển đổi '0' nếu cả hai được đưa ra).
'a' 'ascii()). Giá trị được chuyển đổi được điều chỉnh trái (ghi đè chuyển đổi '0' nếu cả hai được đưa ra).
' .'%' character in the result. Việc chuyển đổi sẽ được đệm bằng 0 cho các giá trị số.

Notes:

  1. '-''0') to be inserted between left-hand padding and the formatting of the number if the leading character of the result is not already a zero.

  2. Giá trị được chuyển đổi được điều chỉnh trái (ghi đè chuyển đổi '0' nếu cả hai được đưa ra).'0x' or '0X' (depending on whether the 'x' or 'X' format was used) to be inserted between left-hand padding and the formatting of the number if the leading character of the result is not already a zero.

  3. '

    .

  4. '+'

    Một ký tự dấu ('+' hoặc '-') sẽ đi trước chuyển đổi (ghi đè một lá cờ không gian trên mạng).

  5. Một công cụ sửa đổi độ dài (H, L hoặc L) có thể có mặt, nhưng bị bỏ qua vì nó không cần thiết cho Python - vì vậy ví dụ: %ld giống hệt với %d.N, the output is truncated to N characters.

  1. Các loại chuyển đổi là:PEP 237.

Chuyển đổi%s conversions do not assume that '\0' is the end of the string.

Ghi chú%f conversions for numbers whose absolute value is over 1e50 are no longer replaced by %g conversions.

Đã ký số nguyên thập phân.bytes, bytearray, memoryview¶

& nbsp;bytes and bytearray. They are supported by memoryview which uses the buffer protocol to access the memory of other binary objects without needing to make a copy.

Đã ký giá trị bát phân.array module supports efficient storage of basic data types like 32-bit integers and IEEE754 double-precision floating values.

(1)

Đối tượng byte là các chuỗi bất biến của các byte đơn. Do nhiều giao thức nhị phân chính dựa trên mã hóa văn bản ASCII, các đối tượng byte cung cấp một số phương thức chỉ hợp lệ khi làm việc với dữ liệu tương thích ASCII và liên quan chặt chẽ đến các đối tượng chuỗi theo nhiều cách khác.

Đầu tiên, cú pháp cho các byte theo nghĩa đen phần lớn giống như đối với các chữ viết, ngoại trừ tiền tố B được thêm vào:b prefix is added:

  • Trích dẫn đơn: B'stillallowsembedded "Double" Trích dẫn 'b'still allows embedded "double" quotes'
  • Double Trích dẫn: B "Stillowsembedded'Single'quotes".b"still allows embedded 'single' quotes".
  • Triple Trích dẫn: B '' '3Singlequotes' '', b "" "3Doublequotes" ""b'''3 single quotes''', b"""3 double quotes"""

Chỉ các ký tự ASCII được phép trong các chữ cái byte (bất kể mã hóa mã nguồn được khai báo). Bất kỳ giá trị nhị phân nào trên 127 phải được nhập vào các chữ cái bằng cách sử dụng trình tự thoát thích hợp.

Như với các chữ viết, chữ byte cũng có thể sử dụng tiền tố R để vô hiệu hóa xử lý các chuỗi thoát. Xem chuỗi và byte theo nghĩa đen để biết thêm về các dạng byte khác nhau theo nghĩa đen, bao gồm các chuỗi thoát được hỗ trợ.r prefix to disable processing of escape sequences. See String and Bytes literals for more about the various forms of bytes literal, including supported escape sequences.

Trong khi các byte theo nghĩa đen và biểu diễn dựa trên văn bản ASCII, các đối tượng byte thực sự hoạt động như các chuỗi số nguyên bất biến, với mỗi giá trị trong chuỗi bị hạn chế sao cho 00 <= x < 256 (attempts to violate this restriction will trigger ValueError. This is done deliberately to emphasise that while many binary formats include ASCII based elements and can be usefully manipulated with some text-oriented algorithms, this is not generally the case for arbitrary binary data (blindly applying text processing algorithms to binary data formats that are not ASCII compatible will usually lead to data corruption).

Ngoài các biểu mẫu theo nghĩa đen, các đối tượng byte có thể được tạo theo một số cách khác:

  • Một đối tượng byte chứa không có độ dài được chỉ định: byte (10)bytes(10)
  • Từ một số nguyên của số nguyên: byte (phạm vi (20))bytes(range(20))
  • Sao chép dữ liệu nhị phân hiện có thông qua giao thức bộ đệm: byte (OBJ)bytes(obj)

Cũng xem các byte tích hợp.

Vì 2 chữ số thập lục phân tương ứng chính xác với một byte duy nhất, các số thập lục phân là một định dạng thường được sử dụng để mô tả dữ liệu nhị phân. Theo đó, loại byte có một phương thức lớp bổ sung để đọc dữ liệu ở định dạng đó:

classMethod byte.fromhex (chuỗi) ¶

Phương thức lớp byte này trả về một đối tượng byte, giải mã đối tượng chuỗi đã cho. Chuỗi phải chứa hai chữ số thập lục phân trên byte, với các không gian ASCII bị bỏ qua.bytes class method returns a bytes object, decoding the given string object. The string must contain two hexadecimal digits per byte, with ASCII spaces being ignored.

>>> 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
1

Vì các đối tượng byte là chuỗi số nguyên (gần giống với một tuple), đối với đối tượng byte b, b [0] sẽ là một số nguyên, trong khi B [0: 1] sẽ là đối tượng byte có độ dài 1. (Điều này tương phản với văn bản với văn bản Chuỗi, trong đó cả lập chỉ mục và cắt sẽ tạo ra một chuỗi chiều dài 1)b[0] will be an integer, while b[0:1] will be a bytes object of length 1. (This contrasts with text strings, where both indexing and slicing will produce a string of length 1)

Biểu diễn của các đối tượng byte sử dụng định dạng theo nghĩa đen (B '...') vì nó thường hữu ích hơn ví dụ: Byte ([46,46,46]). Bạn luôn có thể chuyển đổi một đối tượng byte thành một danh sách các số nguyên bằng danh sách (b).b'...') since it is often more useful than e.g. bytes([46, 46, 46]). You can always convert a bytes object into a list of integers using list(b).

Ghi chú

Đối với người dùng Python 2.x: Trong sê-ri Python 2.x, một loạt các chuyển đổi ngầm giữa các chuỗi 8 bit (điều gần nhất 2.x cung cấp cho một loại dữ liệu nhị phân tích hợp) và các chuỗi Unicode được cho phép. Đây là một cách giải quyết tương thích ngược để giải thích cho thực tế là Python ban đầu chỉ hỗ trợ văn bản 8 bit và văn bản Unicode là một bổ sung sau. Trong Python 3.x, các chuyển đổi ngầm đó đã biến mất - chuyển đổi giữa dữ liệu nhị phân 8 bit và văn bản Unicode phải rõ ràng và các đối tượng byte và chuỗi sẽ luôn so sánh không bằng nhau.

4.8.2. Đối tượng bytearray

Các đối tượng bytearray là một đối tác có thể thay đổi đối với các đối tượng byte. Không có cú pháp theo nghĩa đen chuyên dụng cho các đối tượng bytearray, thay vào đó chúng luôn được tạo bằng cách gọi hàm tạo: objects are a mutable counterpart to bytes objects. There is no dedicated literal syntax for bytearray objects, instead they are always created by calling the constructor:

  • Tạo một thể hiện trống: bytearray ()bytearray()
  • Tạo một thể hiện không đầy đủ với độ dài nhất định: bytearray (10)bytearray(10)
  • Từ một số nguyên của số nguyên: bytearray (phạm vi (20))bytearray(range(20))
  • Sao chép dữ liệu nhị phân hiện có thông qua giao thức bộ đệm: bytearray (b'hi! ')bytearray(b'Hi!')

Vì các đối tượng bytearray có thể thay đổi, chúng hỗ trợ các hoạt động chuỗi có thể thay đổi ngoài các hoạt động byte và bytearray phổ biến được mô tả trong các hoạt động byte và bytearray.

Cũng xem bytearray tích hợp.

Vì 2 chữ số thập lục phân tương ứng chính xác với một byte duy nhất, các số thập lục phân là một định dạng thường được sử dụng để mô tả dữ liệu nhị phân. Theo đó, loại bytearray có một phương thức lớp bổ sung để đọc dữ liệu ở định dạng đó:

classMethod bytearray.fromhex (chuỗi) ¶

Phương thức lớp bytearray này trả về đối tượng bytearray, giải mã đối tượng chuỗi đã cho. Chuỗi phải chứa hai chữ số thập lục phân trên byte, với các không gian ASCII bị bỏ qua.bytearray class method returns bytearray object, decoding the given string object. The string must contain two hexadecimal digits per byte, with ASCII spaces being ignored.

>>> 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
2

Vì các đối tượng bytearray là chuỗi số nguyên (gần giống với danh sách), cho đối tượng bytearray B, B [0] sẽ là một số nguyên, trong khi B [0: 1] sẽ là đối tượng bytearray có độ dài 1. (Điều này tương phản với văn bản Chuỗi, trong đó cả lập chỉ mục và cắt sẽ tạo ra một chuỗi chiều dài 1)b[0] will be an integer, while b[0:1] will be a bytearray object of length 1. (This contrasts with text strings, where both indexing and slicing will produce a string of length 1)

Biểu diễn của các đối tượng bytearray sử dụng định dạng theo nghĩa đen byte (bytearray (b '...')) vì nó thường hữu ích hơn ví dụ: Bytearray ([46,46,46]). Bạn luôn có thể chuyển đổi một đối tượng bytearray thành một danh sách các số nguyên bằng danh sách (b).bytearray(b'...')) since it is often more useful than e.g. bytearray([46, 46, 46]). You can always convert a bytearray object into a list of integers using list(b).

4.8.3. Byte và các hoạt động bytearray

Cả các đối tượng byte và bytearray đều hỗ trợ các hoạt động trình tự chung. Chúng tương tác không chỉ với các toán hạng cùng loại, mà với bất kỳ đối tượng giống như byte nào. Do tính linh hoạt này, chúng có thể được trộn tự do trong các hoạt động mà không gây ra lỗi. Tuy nhiên, loại trả lại của kết quả có thể phụ thuộc vào thứ tự của các toán hạng.

Ghi chú

Các phương pháp trên byte và các đối tượng bytearray don don chấp nhận các chuỗi là đối số của chúng, giống như các phương pháp trên các chuỗi don don chấp nhận byte như đối số của chúng. Ví dụ: bạn phải viết:

>>> 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
3

and:

>>> 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
4

Một số hoạt động byte và bytearray giả định việc sử dụng các định dạng nhị phân tương thích ASCII và do đó nên tránh khi làm việc với dữ liệu nhị phân tùy ý. Những hạn chế này được đề cập dưới đây.

Ghi chú

Các phương pháp trên byte và các đối tượng bytearray don don chấp nhận các chuỗi là đối số của chúng, giống như các phương pháp trên các chuỗi don don chấp nhận byte như đối số của chúng. Ví dụ: bạn phải viết:

Một số hoạt động byte và bytearray giả định việc sử dụng các định dạng nhị phân tương thích ASCII và do đó nên tránh khi làm việc với dữ liệu nhị phân tùy ý. Những hạn chế này được đề cập dưới đây.

Sử dụng các hoạt động dựa trên ASCII này để thao tác dữ liệu nhị phân không được lưu trữ ở định dạng dựa trên ASCII có thể dẫn đến tham nhũng dữ liệu.[, start[, end]])¶ bytearray.count(sub[, start[, end]]

Các phương pháp sau trên byte và các đối tượng bytearray có thể được sử dụng với dữ liệu nhị phân tùy ý.

Byte.Count (sub [, start [, end]]) ¶ bytearray.count (sub [, start [, end]])

Trả về số lần xuất hiện không chồng chéo của phụ Trại con trong phạm vi [bắt đầu, kết thúc]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt.Also accept an integer in the range 0 to 255 as the subsequence.

Phần tiếp theo để tìm kiếm có thể là bất kỳ đối tượng giống như byte hoặc một số nguyên trong phạm vi 0 đến 255.

Đã thay đổi trong phiên bản 3.3: Cũng chấp nhận một số nguyên trong phạm vi 0 đến 255 là phần sau.'utf-8'. errors may be given to set a different error handling scheme. The default for errors is 'strict', meaning that encoding errors raise a UnicodeError. Other possible values are 'ignore', 'replace' and any other name registered via codecs.register_error(), see section Error Handlers. For a list of possible encodings, see section Standard Encodings.

Ghi chú

Các phương pháp trên byte và các đối tượng bytearray don don chấp nhận các chuỗi là đối số của chúng, giống như các phương pháp trên các chuỗi don don chấp nhận byte như đối số của chúng. Ví dụ: bạn phải viết:str allows decoding any bytes-like object directly, without needing to make a temporary bytes or bytearray object.

Một số hoạt động byte và bytearray giả định việc sử dụng các định dạng nhị phân tương thích ASCII và do đó nên tránh khi làm việc với dữ liệu nhị phân tùy ý. Những hạn chế này được đề cập dưới đây.Added support for keyword arguments.

Sử dụng các hoạt động dựa trên ASCII này để thao tác dữ liệu nhị phân không được lưu trữ ở định dạng dựa trên ASCII có thể dẫn đến tham nhũng dữ liệu.[, start[, end]])¶ bytearray.endswith(suffix[, start[, end]]

Các phương pháp sau trên byte và các đối tượng bytearray có thể được sử dụng với dữ liệu nhị phân tùy ý.True if the binary data ends with the specified suffix, otherwise return False. suffix can also be a tuple of suffixes to look for. With optional start, test beginning at that position. With optional end, stop comparing at that position.

Byte.Count (sub [, start [, end]]) ¶ bytearray.count (sub [, start [, end]])

Trả về số lần xuất hiện không chồng chéo của phụ Trại con trong phạm vi [bắt đầu, kết thúc]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt.[, start[, end]])¶ bytearray.find(sub[, start[, end]]

Phần tiếp theo để tìm kiếm có thể là bất kỳ đối tượng giống như byte hoặc một số nguyên trong phạm vi 0 đến 255.s[start:end]. Optional arguments start and end are interpreted as in slice notation. Return -1 if sub is not found.

Byte.Count (sub [, start [, end]]) ¶ bytearray.count (sub [, start [, end]])

Ghi chú

Trả về số lần xuất hiện không chồng chéo của phụ Trại con trong phạm vi [bắt đầu, kết thúc]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt.find() method should be used only if you need to know the position of sub. To check if sub is a substring or not, use the in operator:

>>> 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
5

Trả về số lần xuất hiện không chồng chéo của phụ Trại con trong phạm vi [bắt đầu, kết thúc]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt.Also accept an integer in the range 0 to 255 as the subsequence.

Phần tiếp theo để tìm kiếm có thể là bất kỳ đối tượng giống như byte hoặc một số nguyên trong phạm vi 0 đến 255.[, start[, end]])¶ bytearray.index(sub[, start[, end]]

Đã thay đổi trong phiên bản 3.3: Cũng chấp nhận một số nguyên trong phạm vi 0 đến 255 là phần sau.find(), but raise ValueError when the subsequence is not found.

Byte.Count (sub [, start [, end]]) ¶ bytearray.count (sub [, start [, end]])

Trả về số lần xuất hiện không chồng chéo của phụ Trại con trong phạm vi [bắt đầu, kết thúc]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt.Also accept an integer in the range 0 to 255 as the subsequence.

Phần tiếp theo để tìm kiếm có thể là bất kỳ đối tượng giống như byte hoặc một số nguyên trong phạm vi 0 đến 255.

Đã thay đổi trong phiên bản 3.3: Cũng chấp nhận một số nguyên trong phạm vi 0 đến 255 là phần sau.TypeError will be raised if there are any values in iterable that are not bytes-like objects, including str objects. The separator between elements is the contents of the bytes or bytearray object providing this method.

byte.decode (mã hóa = "utf-8", error = "nghiêm ngặt") ¶ bytearray.decode (mã hóa = "utf-8", lỗi = "nghiêm ngặt")

Trả về một chuỗi được giải mã từ các byte đã cho. Mã hóa mặc định là 'UTF-8'. Lỗi có thể được đưa ra để đặt sơ đồ xử lý lỗi khác. Mặc định cho các lỗi là 'nghiêm ngặt', có nghĩa là các lỗi mã hóa làm tăng unicodeerror. Các giá trị có thể khác là 'bỏ qua', 'thay thế' và bất kỳ tên nào khác được đăng ký qua codecs.register_error (), xem phần xử lý lỗi phần. Để biết danh sách các mã hóa có thể, hãy xem phần Mã hóa tiêu chuẩn.bytes.translate() that will map each character in from into the character at the same position in to; from and to must both be bytes-like objects and have the same length.

Chuyển đối số mã hóa cho STR cho phép giải mã trực tiếp bất kỳ đối tượng giống như byte nào, mà không cần phải tạo một byte tạm thời hoặc đối tượng bytearray.

Đã thay đổi trong phiên bản 3.1: Đã thêm hỗ trợ cho các đối số từ khóa.

byte.endswith (hậu tố [, start [, end]]) ¶ bytearray.endswith (hậu tố [, start [, end]])

Bộ phân cách để tìm kiếm có thể là bất kỳ đối tượng giống như byte.

byte.replace (cũ, mới [, đếm]) ¶ bytearray.replace (cũ, mới [, đếm]) ¶[, count])¶ bytearray.replace(old, new[, count]

Trả về một bản sao của chuỗi với tất cả các lần xuất hiện của sau đó được thay thế bằng mới. Nếu số lượng đối số tùy chọn được đưa ra, chỉ có các lần xuất hiện đầu tiên được thay thế.

Phần tiếp theo để tìm kiếm và sự thay thế của nó có thể là bất kỳ đối tượng giống như byte nào.

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.rfind (sub [, start [, end]]) ¶ bytearray.rfind (sub [, start [, end]]) ¶[, start[, end]])¶ bytearray.rfind(sub[, start[, end]]

Trả về chỉ số cao nhất trong chuỗi nơi tìm thấy phụ con, do đó phụ được chứa trong s [start: end]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt. Trả lại -1 khi thất bại.s[start:end]. Optional arguments start and end are interpreted as in slice notation. Return -1 on failure.

Phần tiếp theo để tìm kiếm có thể là bất kỳ đối tượng giống như byte hoặc một số nguyên trong phạm vi 0 đến 255.

Đã thay đổi trong phiên bản 3.3: Cũng chấp nhận một số nguyên trong phạm vi 0 đến 255 là phần sau.Also accept an integer in the range 0 to 255 as the subsequence.

byte.rindex (sub [, start [, end]]) ¶ bytearray.rindex (sub [, start [, end]]) ¶[, start[, end]])¶ bytearray.rindex(sub[, start[, end]]

Giống như rfind () nhưng tăng giá trị horror khi không tìm thấy sub tiếp theo.rfind() but raises ValueError when the subsequence sub is not found.

Phần tiếp theo để tìm kiếm có thể là bất kỳ đối tượng giống như byte hoặc một số nguyên trong phạm vi 0 đến 255.

Đã thay đổi trong phiên bản 3.3: Cũng chấp nhận một số nguyên trong phạm vi 0 đến 255 là phần sau.Also accept an integer in the range 0 to 255 as the subsequence.

byte.rindex (sub [, start [, end]]) ¶ bytearray.rindex (sub [, start [, end]]) ¶

Giống như rfind () nhưng tăng giá trị horror khi không tìm thấy sub tiếp theo.

Bộ phân cách để tìm kiếm có thể là bất kỳ đối tượng giống như byte.

byte.rpartition (sep) ¶ bytearray.rpartition (sep) ¶[, start[, end]])¶ bytearray.startswith(prefix[, start[, end]]

Chia trình tự ở lần xuất hiện cuối cùng của SEP và trả về 3-tuple chứa phần trước dấu phân cách, dấu phân cách và phần sau khi phân tách. Nếu không tìm thấy dấu phân cách, hãy trả về 3-tuple chứa một bản sao của chuỗi gốc, theo sau là hai byte trống hoặc các đối tượng bytearray.True if the binary data starts with the specified prefix, otherwise return False. prefix can also be a tuple of prefixes to look for. With optional start, test beginning at that position. With optional end, stop comparing at that position.

byte.startswith (tiền tố [, start [, end]]) ¶ bytearray.startswith (tiền tố [, start [, end]])

Trả về true nếu dữ liệu nhị phân bắt đầu với tiền tố được chỉ định, nếu không hãy trả về sai. Tiền tố cũng có thể là một bộ tiền tố để tìm kiếm. Với bắt đầu tùy chọn, kiểm tra bắt đầu ở vị trí đó. Với kết thúc tùy chọn, dừng so sánh ở vị trí đó.[, delete])¶ bytearray.translate(table[, delete]

Tiền tố (ES) để tìm kiếm có thể là bất kỳ đối tượng giống như byte nào.

byte.translate (bảng [, xóa]) ¶ bytearray.translate (Bảng [, xóa]) ¶bytes.maketrans() method to create a translation table.

Trả về một bản sao của các byte hoặc đối tượng bytearray trong đó tất cả các byte xảy ra trong xóa đối số tùy chọn được xóa và các byte còn lại đã được ánh xạ qua bảng dịch đã cho, phải là đối tượng byte có độ dài 256.None for translations that only delete characters:

>>> 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
6

Bạn có thể sử dụng phương thức byte.maketrans () để tạo bảng dịch.

Đặt đối số bảng thành Không có bản dịch mà chỉ xóa các ký tự:[, fillbyte])¶ bytearray.center(width[, fillbyte]

Các phương pháp sau trên byte và các đối tượng bytearray có các hành vi mặc định giả sử việc sử dụng các định dạng nhị phân tương thích ASCII, nhưng vẫn có thể được sử dụng với dữ liệu nhị phân tùy ý bằng cách truyền các đối số thích hợp. Lưu ý rằng tất cả các phương thức bytearray trong phần này không hoạt động tại chỗ và thay vào đó tạo ra các đối tượng mới.bytes objects, the original sequence is returned if width is less than or equal to len(s).

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.rfind (sub [, start [, end]]) ¶ bytearray.rfind (sub [, start [, end]]) ¶[, fillbyte])¶ bytearray.ljust(width[, fillbyte]

Trả về chỉ số cao nhất trong chuỗi nơi tìm thấy phụ con, do đó phụ được chứa trong s [start: end]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt. Trả lại -1 khi thất bại.bytes objects, the original sequence is returned if width is less than or equal to len(s).

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.rfind (sub [, start [, end]]) ¶ bytearray.rfind (sub [, start [, end]]) ¶[chars])¶ bytearray.lstrip([chars]

Trả về chỉ số cao nhất trong chuỗi nơi tìm thấy phụ con, do đó phụ được chứa trong s [start: end]. Đối số tùy chọn bắt đầu và kết thúc được hiểu là trong ký hiệu lát cắt. Trả lại -1 khi thất bại.None, the chars argument defaults to removing ASCII whitespace. The chars argument is not a prefix; rather, all combinations of its values are stripped:

>>> 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
7

Phần tiếp theo để tìm kiếm có thể là bất kỳ đối tượng giống như byte hoặc một số nguyên trong phạm vi 0 đến 255.

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.rfind (sub [, start [, end]]) ¶ bytearray.rfind (sub [, start [, end]]) ¶[, fillbyte])¶ bytearray.rjust(width[, fillbyte]

Trả về một bản sao của đối tượng đúng được chứng minh theo một chuỗi chiều dài chiều dài. Đệm được thực hiện bằng cách sử dụng fillbyte được chỉ định (mặc định là không gian ASCII). Đối với các đối tượng byte, chuỗi gốc được trả về nếu chiều rộng nhỏ hơn hoặc bằng Len (S).bytes objects, the original sequence is returned if width is less than or equal to len(s).

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.rsplit (sep = none, maxsplit = -1) ¶ bytearray.rsplit (sep = none, maxsplit = -1) ¶

Chia trình tự nhị phân thành các chuỗi cùng loại, sử dụng SEP làm chuỗi DELIMITER. Nếu MAXSplit được đưa ra, tại hầu hết các phân tách MaxSplit được thực hiện, những cái ngoài cùng bên phải. Nếu SEP không được chỉ định hoặc không có, bất kỳ phần trăm nào chỉ bao gồm khoảng trắng ASCII là một dấu tách. Ngoại trừ việc phân tách từ bên phải, rsplit () hoạt động như Split () được mô tả chi tiết dưới đây.None, any subsequence consisting solely of ASCII whitespace is a separator. Except for splitting from the right, rsplit() behaves like split() which is described in detail below.

byte.rstrip ([chars]) ¶ bytearray.rstrip ([chars]) ¶[chars])¶ bytearray.rstrip([chars]

Trả về một bản sao của chuỗi với byte byte được chỉ định được xóa. Đối số chars là một chuỗi nhị phân chỉ định tập hợp các giá trị byte sẽ được xóa - tên đề cập đến thực tế phương pháp này thường được sử dụng với các ký tự ASCII. Nếu bị bỏ qua hoặc không có, đối số ký tự mặc định sẽ loại bỏ khoảng trắng ASCII. Đối số chars không phải là một hậu tố; Thay vào đó, tất cả các kết hợp các giá trị của nó đều bị tước:None, the chars argument defaults to removing ASCII whitespace. The chars argument is not a suffix; rather, all combinations of its values are stripped:

>>> 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
8

Trình tự nhị phân của các giá trị byte để xóa có thể là bất kỳ đối tượng giống như byte nào.

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.rsplit (sep = none, maxsplit = -1) ¶ bytearray.rsplit (sep = none, maxsplit = -1) ¶

Chia trình tự nhị phân thành các chuỗi cùng loại, sử dụng SEP làm chuỗi DELIMITER. Nếu MAXSplit được đưa ra, tại hầu hết các phân tách MaxSplit được thực hiện, những cái ngoài cùng bên phải. Nếu SEP không được chỉ định hoặc không có, bất kỳ phần trăm nào chỉ bao gồm khoảng trắng ASCII là một dấu tách. Ngoại trừ việc phân tách từ bên phải, rsplit () hoạt động như Split () được mô tả chi tiết dưới đây.maxsplit+1 elements). If maxsplit is not specified or is -1, then there is no limit on the number of splits (all possible splits are made).

byte.rstrip ([chars]) ¶ bytearray.rstrip ([chars]) ¶b'1,,2'.split(b',') returns [b'1', b'', b'2']). The sep argument may consist of a multibyte sequence (for example, b'1<>2<>3'.split(b'<>') returns [b'1', b'2', b'3']). Splitting an empty sequence with a specified separator returns [b''] or [bytearray(b'')] depending on the type of object being split. The sep argument may be any bytes-like object.

Trả về một bản sao của chuỗi với byte byte được chỉ định được xóa. Đối số chars là một chuỗi nhị phân chỉ định tập hợp các giá trị byte sẽ được xóa - tên đề cập đến thực tế phương pháp này thường được sử dụng với các ký tự ASCII. Nếu bị bỏ qua hoặc không có, đối số ký tự mặc định sẽ loại bỏ khoảng trắng ASCII. Đối số chars không phải là một hậu tố; Thay vào đó, tất cả các kết hợp các giá trị của nó đều bị tước:

>>> 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
9

Trình tự nhị phân của các giá trị byte để xóa có thể là bất kỳ đối tượng giống như byte nào.None, a different splitting algorithm is applied: runs of consecutive ASCII whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the sequence has leading or trailing whitespace. Consequently, splitting an empty sequence or a sequence consisting solely of ASCII whitespace without a specified separator returns [].

Trả về một bản sao của chuỗi với byte byte được chỉ định được xóa. Đối số chars là một chuỗi nhị phân chỉ định tập hợp các giá trị byte sẽ được xóa - tên đề cập đến thực tế phương pháp này thường được sử dụng với các ký tự ASCII. Nếu bị bỏ qua hoặc không có, đối số ký tự mặc định sẽ loại bỏ khoảng trắng ASCII. Đối số chars không phải là một hậu tố; Thay vào đó, tất cả các kết hợp các giá trị của nó đều bị tước:

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

Trình tự nhị phân của các giá trị byte để xóa có thể là bất kỳ đối tượng giống như byte nào.[chars])¶ bytearray.strip([chars]

byte.split (sep = none, maxsplit = -1) ¶ bytearray.split (sep = none, maxsplit = -1) ¶None, the chars argument defaults to removing ASCII whitespace. The chars argument is not a prefix or suffix; rather, all combinations of its values are stripped:

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

Trình tự nhị phân của các giá trị byte để xóa có thể là bất kỳ đối tượng giống như byte nào.

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.rsplit (sep = none, maxsplit = -1) ¶ bytearray.rsplit (sep = none, maxsplit = -1) ¶

Chia trình tự nhị phân thành các chuỗi cùng loại, sử dụng SEP làm chuỗi DELIMITER. Nếu MAXSplit được đưa ra, tại hầu hết các phân tách MaxSplit được thực hiện, những cái ngoài cùng bên phải. Nếu SEP không được chỉ định hoặc không có, bất kỳ phần trăm nào chỉ bao gồm khoảng trắng ASCII là một dấu tách. Ngoại trừ việc phân tách từ bên phải, rsplit () hoạt động như Split () được mô tả chi tiết dưới đây.

byte.rstrip ([chars]) ¶ bytearray.rstrip ([chars]) ¶

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

Trả về một bản sao của chuỗi với byte byte được chỉ định được xóa. Đối số chars là một chuỗi nhị phân chỉ định tập hợp các giá trị byte sẽ được xóa - tên đề cập đến thực tế phương pháp này thường được sử dụng với các ký tự ASCII. Nếu bị bỏ qua hoặc không có, đối số ký tự mặc định sẽ loại bỏ khoảng trắng ASCII. Đối số chars không phải là một hậu tố; Thay vào đó, tất cả các kết hợp các giá trị của nó đều bị tước:

Trình tự nhị phân của các giá trị byte để xóa có thể là bất kỳ đối tượng giống như byte nào.b'\t'), one or more space characters are inserted in the result until the current column is equal to the next tab position. (The tab character itself is not copied.) If the current byte is an ASCII newline (b'\n') or carriage return (b'\r'), it is copied and the current column is reset to zero. Any other byte value is copied unchanged and the current column is incremented by one regardless of how the byte value is represented when printed:

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

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.isalnum () bytearray.alsalnum ()

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII theo thứ tự chữ cái hoặc các chữ số thập phân ASCII và chuỗi không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '. Các chữ số thập phân ASCII là các giá trị byte trong chuỗi B'0123456789 '.b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'. ASCII decimal digits are those byte values in the sequence b'0123456789'.

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII chữ cái và trình tự không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '.b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII chữ cái và trình tự không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '.b'0123456789'.

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII chữ cái và trình tự không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '.

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶b'abcdefghijklmnopqrstuvwxyz'. Uppercase ASCII characters are those byte values in the sequence b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII chữ cái và trình tự không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '.

byte.isdigit () bytearray.isdigit () ¶b' \t\n\r\x0b\f' (space, tab, newline, carriage return, vertical tab, form feed).

Trả về true nếu tất cả các byte trong chuỗi là các chữ số thập phân ASCII và chuỗi không trống, sai nếu không. Các chữ số thập phân ASCII là các giá trị byte trong chuỗi B'0123456789 '.

byte.islower () bytearray.islower () ¶bytes.title() for more details on the definition of “titlecase”.

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII chữ cái và trình tự không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '.

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶b'abcdefghijklmnopqrstuvwxyz'. Uppercase ASCII characters are those byte values in the sequence b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII chữ cái và trình tự không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '.

byte.isdigit () bytearray.isdigit () ¶

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶b'abcdefghijklmnopqrstuvwxyz'. Uppercase ASCII characters are those byte values in the sequence b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII chữ cái và trình tự không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '.

byte.isdigit () bytearray.isdigit () ¶

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶split() when a delimiter string sep is given, this method returns an empty list for the empty string, and a terminal line break does not result in an extra line:

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

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII chữ cái và trình tự không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '.

byte.isdigit () bytearray.isdigit () ¶

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶b'abcdefghijklmnopqrstuvwxyz'. Uppercase ASCII characters are those byte values in the sequence b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

Trả về true nếu tất cả các byte trong chuỗi là các ký tự ASCII chữ cái và trình tự không trống, sai nếu không. Các ký tự ASCII chữ cái là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz '.str.swapcase(), it is always the case that bin.swapcase().swapcase() == bin for the binary versions. Case conversions are symmetrical in ASCII, even though that is not generally true for arbitrary Unicode code points.

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.isdigit () bytearray.isdigit () ¶

Trả về true nếu tất cả các byte trong chuỗi là các chữ số thập phân ASCII và chuỗi không trống, sai nếu không. Các chữ số thập phân ASCII là các giá trị byte trong chuỗi B'0123456789 '.

Ví dụ:

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

byte.isalpha () bytearray.isalpha () ¶b'abcdefghijklmnopqrstuvwxyz'. Uppercase ASCII characters are those byte values in the sequence b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. All other byte values are uncased.

Thuật toán sử dụng một định nghĩa độc lập ngôn ngữ đơn giản của một từ là các nhóm chữ cái liên tiếp. Định nghĩa hoạt động trong nhiều bối cảnh nhưng nó có nghĩa là các dấu nháy đơn trong các cơn co thắt và sở hữu hình thành ranh giới từ, có thể không phải là kết quả mong muốn:

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

Một cách giải quyết cho dấu nháy đơn có thể được xây dựng bằng cách sử dụng các biểu thức thông thường:

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

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.upper () bytearray.upper () ¶

Trả về một bản sao của chuỗi với tất cả các ký tự ASCII viết thường được chuyển đổi thành đối tác chữ hoa tương ứng của chúng.

Ví dụ:

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

Các ký tự ASCII viết thường là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyz '. Các ký tự ASCII từ trên là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyz '.b'abcdefghijklmnopqrstuvwxyz'. Uppercase ASCII characters are those byte values in the sequence b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.upper () bytearray.upper () ¶

Trả về một bản sao của chuỗi với tất cả các ký tự ASCII viết thường được chuyển đổi thành đối tác chữ hoa tương ứng của chúng.b'0' digits to make a sequence of length width. A leading sign prefix (b'+'/ b'-' is handled by inserting the padding after the sign character rather than before. For bytes objects, the original sequence is returned if width is less than or equal to len(seq).

Ví dụ:

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

Ghi chú

Phiên bản bytearray của phương pháp này không hoạt động tại chỗ - nó luôn tạo ra một đối tượng mới, ngay cả khi không có thay đổi nào được thực hiện.

byte.upper () bytearray.upper () ¶

Trả về một bản sao của chuỗi với tất cả các ký tự ASCII viết thường được chuyển đổi thành đối tác chữ hoa tương ứng của chúng. objects allow Python code to access the internal data of an object that supports the buffer protocol without copying.

Ví dụ:

Các ký tự ASCII viết thường là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyz '. Các ký tự ASCII từ trên là các giá trị byte trong chuỗi b'abcdefghijklmnopqrstuvwxyz '.memoryview that references obj. obj must support the buffer protocol. Built-in objects that support the buffer protocol include bytes and bytearray.

byte.zfill (chiều rộng) ¶ bytearray.zfill (chiều rộng) ¶memoryview has the notion of an element, which is the atomic memory unit handled by the originating object obj. For many simple types such as bytes and bytearray, an element is a single byte, but other types such as array.array may have bigger elements.

Trả về một bản sao của chuỗi bên trái chứa đầy các chữ số ASCII b'0 'để tạo ra một chuỗi chiều rộng chiều dài. Một tiền tố dấu hiệu hàng đầu (b '+'/ b'- 'được xử lý bằng cách chèn phần đệm sau ký tự dấu thay vì trước. Đối với các đối tượng byte, chuỗi gốc được trả về nếu chiều rộng nhỏ hơn hoặc bằng LEN (SEQ). is equal to the length of tolist. If view.ndim = 0, the length is 1. If view.ndim = 1, the length is equal to the number of elements in the view. For higher dimensions, the length is equal to the length of the nested list representation of the view. The itemsize attribute will give you the number of bytes in a single element.

4.8.4. Chế độ xem bộ nhớmemoryview supports slicing to expose its data. If format is one of the native format specifiers from the struct module, indexing will return a single element with the correct type. Full slicing will result in a subview:

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

Các đối tượng MemoryView cho phép mã Python truy cập dữ liệu nội bộ của một đối tượng hỗ trợ giao thức bộ đệm mà không cần sao chép.

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

Lớp MemoryView (OBJ) ¶

Tạo một MemoryView tham chiếu OBJ. OBJ phải hỗ trợ giao thức bộ đệm. Các đối tượng tích hợp hỗ trợ giao thức bộ đệm bao gồm byte và bytearray.

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

MemoryView có khái niệm về một phần tử, đó là đơn vị bộ nhớ nguyên tử được xử lý bởi đối tượng gốc OBJ. Đối với nhiều loại đơn giản như byte và bytearray, một phần tử là một byte duy nhất, nhưng các loại khác như Array.Array có thể có các phần tử lớn hơn.hash(m) == hash(m.tobytes()):

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

Len (xem) bằng chiều dài của dung sai. Nếu chế độ xem.ndim = 0, độ dài là 1. Nếu chế độ xem.ndim = 1, độ dài bằng số lượng phần tử trong chế độ xem. Đối với kích thước cao hơn, chiều dài bằng chiều dài của biểu diễn danh sách lồng nhau của chế độ xem. Thuộc tính itemsize sẽ cung cấp cho bạn số byte trong một phần tử.One-dimensional memoryviews with formats ‘B’, ‘b’ or ‘c’ are now hashable.

MemoryView hỗ trợ cắt để hiển thị dữ liệu của nó. Nếu định dạng là một trong những định dạng định dạng gốc từ mô -đun struct, việc lập chỉ mục sẽ trả về một phần tử duy nhất với đúng loại. Cắt đầy đủ sẽ dẫn đến một Subview: has several methods:

Các định dạng bản địa khác:

Mới trong phiên bản 3.3.PEP 3118 exporter are equal if their shapes are equivalent and if all corresponding values are equal when the operands’ respective format codes are interpreted using struct syntax.

Nếu đối tượng cơ bản có thể ghi, MemoryView hỗ trợ gán lát cắt. Không cho phép thay đổi kích thước:struct format strings currently supported by tolist(), v and w are equal if v.tolist() == w.tolist():

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

Bộ nhớ một chiều của các loại có thể băm (chỉ đọc) với các định dạng ‘B,‘ B, hoặc ‘C, cũng có thể băm. Băm được định nghĩa là băm (m) == băm (m.tobyte ()):struct module, then the objects will always compare as unequal (even if the format strings and buffer contents are identical):

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

Đã thay đổi trong phiên bản 3.3: MemoryViews một chiều với các định dạng ‘B,‘ B, hoặc ‘C, hiện có thể băm.v is w does not imply v == w for memoryview objects.

MemoryView có một số phương thức:Previous versions compared the raw memory disregarding the item format and the logical array structure.

__eq __ (xuất khẩu) ¶

Một bộ nhớ và một nhà xuất bản PEP 3118 bằng nhau nếu hình dạng của chúng tương đương và nếu tất cả các giá trị tương ứng đều bằng nhau khi các mã định dạng tương ứng của operands được giải thích bằng cách sử dụng cú pháp struct.bytes constructor on the memoryview.

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

Đối với tập hợp con của các chuỗi định dạng cấu trúc hiện được hỗ trợ bởi tolist (), v và w bằng nhau nếu v.tolist () == w.tolist ():tobytes() supports all format strings, including those that are not in struct module syntax.

Nếu một trong hai chuỗi định dạng không được hỗ trợ bởi mô -đun struct, thì các đối tượng sẽ luôn so sánh là không đồng đều (ngay cả khi các chuỗi định dạng và nội dung bộ đệm là giống hệt nhau):

Lưu ý rằng, như với các số điểm nổi, VISW không ngụ ý v == W cho các đối tượng MemoryView.

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

Thay đổi trong phiên bản 3.3: Các phiên bản trước đã so sánh bộ nhớ thô không quan tâm đến định dạng vật phẩm và cấu trúc mảng logic.tolist() now supports all single character native formats in struct module syntax as well as multi-dimensional representations.

Tobytes ()

Trả về dữ liệu trong bộ đệm dưới dạng bytestring. Điều này tương đương với việc gọi hàm tạo byte trên MemoryView.bytearray would temporarily forbid resizing); therefore, calling release() is handy to remove these restrictions (and free any dangling resources) as soon as possible.

Sau khi phương thức này đã được gọi, bất kỳ hoạt động nào nữa trên chế độ xem đều tăng giá trịerRor (ngoại trừ bản phát hành () có thể được gọi là nhiều lần):ValueError (except release() itself which can be called multiple times):

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

Giao thức quản lý bối cảnh có thể được sử dụng cho một hiệu ứng tương tự, sử dụng câu lệnh với câu lệnh:with statement:

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

Mới trong phiên bản 3.2.

cast (định dạng [, hình]) ¶[, shape]

Đúc một bộ nhớ vào một định dạng hoặc hình dạng mới. Hình dạng mặc định là [byte_length // new_itemsize], có nghĩa là chế độ xem kết quả sẽ là một chiều. Giá trị trả về là một bộ nhớ mới, nhưng bản thân bộ đệm không được sao chép. Các phôi được hỗ trợ là 1D -> C -TIÊU CHUẨN và C -TIÊU CHUẨN -> 1D.[byte_length//new_itemsize], which means that the result view will be one-dimensional. The return value is a new memoryview, but the buffer itself is not copied. Supported casts are 1D -> C-contiguous and C-contiguous -> 1D.

Cả hai định dạng đều bị giới hạn ở các định dạng nguyên tố đơn lẻ trong cú pháp struct. Một trong những định dạng phải là định dạng byte (‘B,‘ B, hoặc ‘C,). Độ dài byte của kết quả phải giống như chiều dài ban đầu.struct syntax. One of the formats must be a byte format (‘B’, ‘b’ or ‘c’). The byte length of the result must be the same as the original length.

Đúc 1D/dài đến 1D/byte không dấu:

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

Đúc 1D/byte không dấu thành 1D/char:

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

Đúc 1D/byte đến 3D/INTS đến 1D/đã ký char:

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

CAST 1D/unsign char đến 2D/unsign dài:

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

Mới trong phiên bản 3.3.

Ngoài ra còn có một số thuộc tính đọc có sẵn:

obj¶

Đối tượng bên dưới của bộ nhớview:

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

Mới trong phiên bản 3.3.

Ngoài ra còn có một số thuộc tính đọc có sẵn:

obj¶ == product(shape) * itemsize == len(m.tobytes()). This is the amount of space in bytes that the array would use in a contiguous representation. It is not necessarily equal to len(m):

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

Đối tượng bên dưới của bộ nhớview:

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

Mới trong phiên bản 3.3.

Ngoài ra còn có một số thuộc tính đọc có sẵn:

obj¶

Đối tượng bên dưới của bộ nhớview:

nbytes¶struct module style) for each element in the view. A memoryview can be created from exporters with arbitrary format strings, but some methods (e.g. tolist()) are restricted to native single element formats.

nbytes == sản phẩm (hình dạng)*itemize == len (m.tobytes ()). Đây là lượng không gian trong byte mà mảng sẽ sử dụng trong một biểu diễn tiếp giáp. Nó không nhất thiết phải bằng Len (M):format 'B' is now handled according to the struct module syntax. This means that memoryview(b'abc')[0] == b'abc'[0] == 97.

Mảng đa chiều:

chỉ đọc¶

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

Một bool chỉ ra liệu bộ nhớ chỉ được đọc.

định dạng¶

Một chuỗi chứa định dạng (theo kiểu mô -đun cấu trúc) cho mỗi phần tử trong chế độ xem. Một bộ nhớ có thể được tạo từ các nhà xuất khẩu có chuỗi định dạng tùy ý, nhưng một số phương thức (ví dụ: tolist ()) bị giới hạn ở các định dạng phần tử đơn lẻ.

Đã thay đổi trong phiên bản 3.3: Định dạng 'B' hiện được xử lý theo cú pháp mô -đun cấu trúc. Điều này có nghĩa là MemoryView (b'abc ') [0] == b'abc' [0] == 97.ndim giving the shape of the memory as an N-dimensional array.

kích thước mục¶An empty tuple instead of None when ndim = 0.

Kích thước tính bằng byte của mỗi phần tử của bộ nhớView:

ndim¶ndim giving the size in bytes to access each element for each dimension of the array.

kích thước mục¶An empty tuple instead of None when ndim = 0.

Kích thước tính bằng byte của mỗi phần tử của bộ nhớView:

ndim¶

Một số nguyên cho biết có bao nhiêu kích thước của một mảng đa chiều mà bộ nhớ đại diện.

hình dạng¶

Mới trong phiên bản 3.3.

Ngoài ra còn có một số thuộc tính đọc có sẵn:

obj¶

Mới trong phiên bản 3.3.

Ngoài ra còn có một số thuộc tính đọc có sẵn:

obj¶

Mới trong phiên bản 3.3.

Ngoài ra còn có một số thuộc tính đọc có sẵn:set, frozenset¶

obj¶dict, list, and tuple classes, and the collections module.)

Đối tượng bên dưới của bộ nhớview:x in set, len(set), and for x in set. Being an unordered collection, sets do not record element position or order of insertion. Accordingly, sets do not support indexing, slicing, or other sequence-like behavior.

nbytes¶set and frozenset. The set type is mutable — the contents can be changed using methods like add() and remove(). Since it is mutable, it has no hash value and cannot be used as either a dictionary key or as an element of another set. The frozenset type is immutable and hashable — its contents cannot be altered after it is created; it can therefore be used as a dictionary key or as an element of another set.

nbytes == sản phẩm (hình dạng)*itemize == len (m.tobytes ()). Đây là lượng không gian trong byte mà mảng sẽ sử dụng trong một biểu diễn tiếp giáp. Nó không nhất thiết phải bằng Len (M):{'jack', 'sjoerd'}, in addition to the set constructor.

Mảng đa chiều:

chỉ đọc¶[iterable])¶ class frozenset([iterable]

Một bool chỉ ra liệu bộ nhớ chỉ được đọc.frozenset objects. If iterable is not specified, a new empty set is returned.

định dạng¶set and frozenset provide the following operations:

Một chuỗi chứa định dạng (theo kiểu mô -đun cấu trúc) cho mỗi phần tử trong chế độ xem. Một bộ nhớ có thể được tạo từ các nhà xuất khẩu có chuỗi định dạng tùy ý, nhưng một số phương thức (ví dụ: tolist ()) bị giới hạn ở các định dạng phần tử đơn lẻ.

Đã thay đổi trong phiên bản 3.3: Định dạng 'B' hiện được xử lý theo cú pháp mô -đun cấu trúc. Điều này có nghĩa là MemoryView (b'abc ') [0] == b'abc' [0] == 97.

kích thước mục¶

Kích thước tính bằng byte của mỗi phần tử của bộ nhớView:

ndim¶

Một số nguyên cho biết có bao nhiêu kích thước của một mảng đa chiều mà bộ nhớ đại diện.

isdisjoint (khác) ¶

Trả về true nếu tập hợp không có phần tử chung với khác. Các bộ là rời rạc khi và chỉ khi giao điểm của chúng là tập trống.True if the set has no elements in common with other. Sets are disjoint if and only if their intersection is the empty set.

ISSUBSET (Khác) ¶ Bộ

Kiểm tra xem mọi yếu tố trong tập hợp là trong khác.

Đặt Kiểm tra xem tập hợp có phải là một tập hợp con thích hợp khác hay không, nghĩa là bộset <= other and set != other.

phát hành (khác) ¶ set> = khác

Kiểm tra xem mọi yếu tố trong khác đều có trong tập hợp.

Đặt> Khác

Kiểm tra xem tập hợp có phải là một superset thích hợp của người khác hay không, nghĩa là set> = otherAndset! = Khác.set >= other and set != other.

Liên minh (Khác, ...) ¶ Set | Khác | ...

Trả về một bộ mới với các phần tử từ bộ và tất cả các phần tử khác.

Giao lộ (Khác, ...) ¶ Set & khác & ...

Trả về một bộ mới với các yếu tố phổ biến cho tập hợp và tất cả các yếu tố khác.

sự khác biệt (khác, ...) ¶ Set - Khác - ...

Trả về một bộ mới với các phần tử trong tập hợp không có trong các phần khác.

symmetric_diferference (khác) ¶ set ^ khác

Trả về một bộ mới với các phần tử trong tập hợp hoặc khác nhưng không phải cả hai.

sao chép () ¶

Trả lại một bộ mới với một bản sao nông của s.

Lưu ý, các phiên bản không vận hành của Union (), giao lộ (), chênh lệch () và symmetric_difference (), phát hành () và các phương thức phát hành () sẽ chấp nhận bất kỳ đối số nào. Ngược lại, các đối tác dựa trên toán tử của họ yêu cầu các đối số của họ phải được đặt. Điều này ngăn chặn các công trình dễ bị lỗi như SET ('ABC') & 'CBS' có lợi cho bộ dễ đọc hơn ('ABC'). Giao lộ ('CBS').union(), intersection(), difference(), and symmetric_difference(), issubset(), and issuperset() methods will accept any iterable as an argument. In contrast, their operator based counterparts require their arguments to be sets. This precludes error-prone constructions like set('abc') & 'cbs' in favor of the more readable set('abc').intersection('cbs').

Cả bộ hỗ trợ Set và Frozenset để thiết lập so sánh. Hai bộ bằng nhau khi và chỉ khi mỗi phần tử của mỗi bộ được chứa trong phần kia (mỗi bộ là một tập hợp con của phần kia). Một tập hợp nhỏ hơn một tập khác khi và chỉ khi tập đầu tiên là một tập hợp con thích hợp của bộ thứ hai (là một tập hợp con, nhưng không bằng nhau). Một tập hợp lớn hơn một tập khác khi và chỉ khi tập đầu tiên là một superset thích hợp của bộ thứ hai (là một superset, nhưng không bằng nhau).set and frozenset support set to set comparisons. Two sets are equal if and only if every element of each set is contained in the other (each is a subset of the other). A set is less than another set if and only if the first set is a proper subset of the second set (is a subset, but is not equal). A set is greater than another set if and only if the first set is a proper superset of the second set (is a superset, but is not equal).

Các trường hợp của tập hợp được so sánh với các trường hợp đóng băng dựa trên các thành viên của họ. Ví dụ: SET ('ABC') == frozenset ('abc') trả về true và set ('abc') cũng vậy ([frozenset ('abc')]).set are compared to instances of frozenset based on their members. For example, set('abc') == frozenset('abc') returns True and so does set('abc') in set([frozenset('abc')]).

Các tập hợp con và so sánh bình đẳng không khái quát cho một hàm đơn đặt hàng. Ví dụ: bất kỳ hai bộ phân tách không trống nào cũng không bằng nhau và không phải là tập hợp của nhau, vì vậy tất cả các bản trả về sau: AB.False: a, a==b, or a>b.

Vì các bộ chỉ xác định thứ tự một phần (mối quan hệ tập hợp con), đầu ra của phương thức danh sách.sort () không được xác định cho danh sách các bộ.list.sort() method is undefined for lists of sets.

Đặt các yếu tố, như các khóa từ điển, phải có thể băm.

Các hoạt động nhị phân kết hợp đặt các phiên bản với Frozenset trả về loại của toán hạng đầu tiên. Ví dụ: Frozenset ('ab') | set ('bc') trả về một thể hiện của frozenset.set instances with frozenset return the type of the first operand. For example: frozenset('ab') | set('bc') returns an instance of frozenset.

Bảng sau đây liệt kê các hoạt động có sẵn cho bộ không áp dụng cho các trường hợp bất biến của Frozenset:set that do not apply to immutable instances of frozenset:

Cập nhật (khác, ...) ¶ Set | = Khác | ...

Cập nhật bộ, thêm các yếu tố từ tất cả các yếu tố khác.

Intersection_Update (Khác, ...) ¶ Set & = khác & ...

Cập nhật bộ, chỉ giữ các yếu tố được tìm thấy trong đó và tất cả các yếu tố khác.

argen_update (khác, ...) ¶ set -= other | ...

Cập nhật bộ, loại bỏ các yếu tố được tìm thấy trong các yếu tố khác.

symmetric_difference_update (khác) ¶ set ^= other

Cập nhật tập hợp, chỉ giữ các yếu tố được tìm thấy trong một trong hai tập hợp, nhưng không phải trong cả hai.

Thêm (elem) ¶

Thêm phần tử ELEM vào tập hợp.

loại bỏ (elem) ¶

Loại bỏ phần tử ELEM khỏi tập hợp. Tăng KeyError nếu Elem không có trong tập hợp.KeyError if elem is not contained in the set.

loại bỏ (elem) ¶

Loại bỏ phần tử ELEM khỏi tập hợp nếu nó có mặt.

nhạc pop()¶

Xóa và trả về một phần tử tùy ý khỏi tập hợp. Tăng KeyError nếu bộ trống.KeyError if the set is empty.

xa lạ()¶

Loại bỏ tất cả các phần tử khỏi tập hợp.

Lưu ý, các phiên bản không vận hành của bản cập nhật (), intersection_update (), arget_update () và symmetric_difference_update () sẽ chấp nhận bất kỳ đối số nào.update(), intersection_update(), difference_update(), and symmetric_difference_update() methods will accept any iterable as an argument.

Lưu ý, đối số ELEM cho các phương thức __contains __ (), xóa () và loại bỏ () có thể là một tập hợp. Để hỗ trợ tìm kiếm một Frozenset tương đương, bộ ELEM tạm thời bị đột biến trong quá trình tìm kiếm và sau đó được khôi phục. Trong quá trình tìm kiếm, bộ ELEM không nên được đọc hoặc đột biến vì nó không có giá trị có ý nghĩa.__contains__(), remove(), and discard() methods may be a set. To support searching for an equivalent frozenset, the elem set is temporarily mutated during the search and then restored. During the search, the elem set should not be read or mutated since it does not have a meaningful value.

4.10. Các loại lập bản đồ - Dict¶dict¶

Một bản đồ đối tượng ánh xạ các giá trị băm vào các đối tượng tùy ý. Ánh xạ là các đối tượng có thể thay đổi. Hiện tại chỉ có một loại ánh xạ tiêu chuẩn, từ điển. .list, set, and tuple classes, and the collections module.)

Một phím từ điển từ các giá trị gần như tùy ý. Các giá trị không thể băm, nghĩa là các giá trị chứa danh sách, từ điển hoặc các loại có thể thay đổi khác (được so sánh theo giá trị thay vì nhận dạng đối tượng) không được sử dụng làm khóa. Các loại số được sử dụng cho các khóa tuân thủ các quy tắc thông thường để so sánh số: nếu hai số so sánh bằng nhau (chẳng hạn như 1 và 1.0) thì chúng có thể được sử dụng thay thế cho nhau để lập chỉ mục cùng một mục từ điển. (Tuy nhiên, lưu ý rằng vì các máy tính lưu trữ các số điểm nổi dưới dạng xấp xỉ, thường không khôn ngoan khi sử dụng chúng làm khóa từ điển.)1 and 1.0) then they can be used interchangeably to index the same dictionary entry. (Note however, that since computers store floating-point numbers as approximations it is usually unwise to use them as dictionary keys.)

Từ điển có thể được tạo bằng cách đặt một danh sách khóa được phân tách bằng dấu phẩy: Ví dụ, các cặp giá trị trong niềng hoặc bởi các nhà xây dựng dict.key: value pairs within braces, for example: {'jack': 4098, 'sjoerd': 4127} or {4098: 'jack', 4127: 'sjoerd'}, or by the dict constructor.

Lớp Dict (** Kwarg) ¶ Class Dict (Bản đồ, ** Kwarg) Dict (Itable, ** Kwarg)

Trả về một từ điển mới được khởi tạo từ một đối số vị trí tùy chọn và một tập hợp các đối số từ khóa có thể trống.

Nếu không có đối số vị trí nào được đưa ra, một từ điển trống được tạo. Nếu một đối số vị trí được đưa ra và nó là một đối tượng ánh xạ, một từ điển được tạo với cùng các cặp giá trị khóa như đối tượng ánh xạ. Nếu không, đối số vị trí phải là một đối tượng có thể lặp lại. Mỗi mục trong Iterable phải tự nó là một đối tượng chính xác với hai đối tượng. Đối tượng đầu tiên của mỗi mục trở thành một khóa trong từ điển mới và đối tượng thứ hai là giá trị tương ứng. Nếu một khóa xảy ra nhiều lần, giá trị cuối cùng cho khóa đó trở thành giá trị tương ứng trong từ điển mới.

Nếu các đối số từ khóa được đưa ra, các đối số từ khóa và giá trị của chúng được thêm vào từ điển được tạo từ đối số vị trí. Nếu một khóa được thêm vào đã có mặt, giá trị từ đối số từ khóa sẽ thay thế giá trị từ đối số vị trí.

Để minh họa, tất cả các ví dụ sau đều trả về từ điển bằng {"một": 1, "hai": 2, "ba": 3}:{"one": 1, "two": 2, "three": 3}:

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

Cung cấp các đối số từ khóa như trong ví dụ đầu tiên chỉ hoạt động cho các khóa là định danh python hợp lệ. Nếu không, bất kỳ khóa hợp lệ nào cũng có thể được sử dụng.

Đây là các hoạt động mà từ điển hỗ trợ (và do đó, các loại ánh xạ tùy chỉnh cũng sẽ hỗ trợ):

cho vay)

Trả lại số lượng các mục trong từ điển d.

D [Key]

Trả lại mục của D với khóa khóa. Tăng một KeyError nếu khóa không có trong bản đồ.KeyError if key is not in the map.

Nếu một lớp con của Dict định nghĩa một phương thức __Missing __ () và khóa không có, thì thao tác D [khóa] sẽ gọi phương thức đó bằng khóa là đối số. Hoạt động D [khóa] sau đó trả về hoặc tăng bất cứ thứ gì được trả lại hoặc tăng lên bởi cuộc gọi __missing __ (khóa). Không có hoạt động hoặc phương pháp nào khác gọi __Missing __ (). Nếu __Missing __ () không được xác định, KeyError sẽ được nâng lên. __Missing __ () phải là một phương pháp; Nó không thể là một biến thể hiện:__missing__() and key is not present, the d[key] operation calls that method with the key key as argument. The d[key] operation then returns or raises whatever is returned or raised by the __missing__(key) call. No other operations or methods invoke __missing__(). If __missing__() is not defined, KeyError is raised. __missing__() must be a method; it cannot be an instance variable:

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

Ví dụ trên cho thấy một phần của việc triển khai bộ sưu tập. Một phương thức __missing__ khác nhau được sử dụng bởi bộ sưu tập.defaultdict.collections.Counter. A different __missing__ method is used by collections.defaultdict.

d [key] = giá trị

Đặt d [khóa] thành giá trị.d[key] to value.

del d [khóa]

Hủy bỏ d [khóa] khỏi d. Tăng một KeyError nếu khóa không có trong bản đồ.d[key] from d. Raises a KeyError if key is not in the map.

khóa trong d

Trả về true nếu d có khóa khóa, khác sai.True if d has a key key, else False.

Key không ở D

Tương đương với Notkeyind.not key in d.

iter (d)

Trả lại một trình lặp qua các khóa của từ điển. Đây là một lối tắt cho ITER (D.Keys ()).iter(d.keys()).

xa lạ()¶

Hủy bỏ tất cả các mục khỏi từ điển.

sao chép () ¶

Trả lại một bản sao nông của từ điển.

classMethod fromKeys (seq [, value]) ¶[, value]

Tạo một từ điển mới với các khóa từ SEQ và các giá trị được đặt thành giá trị.

FromKeys () là một phương thức lớp trả về một từ điển mới. giá trị mặc định là không có. is a class method that returns a new dictionary. value defaults to None.

Nhận (khóa [, mặc định]) ¶[, default]

Trả về giá trị cho khóa nếu có trong từ điển, mặc định khác. Nếu mặc định không được đưa ra, nó mặc định là không có, để phương thức này không bao giờ tăng KeyError.None, so that this method never raises a KeyError.

mặt hàng()¶

Trả về một chế độ xem mới về các mục từ điển ((khóa, giá trị)). Xem tài liệu của các đối tượng xem.(key, value) pairs). See the documentation of view objects.

chìa khóa () ¶

Trả lại một cái nhìn mới về các khóa từ điển. Xem tài liệu của các đối tượng xem.

pop (khóa [, mặc định]) ¶[, default]

Nếu khóa nằm trong từ điển, hãy xóa nó và trả về giá trị của nó, khác trả về mặc định. Nếu mặc định không được đưa ra và khóa không có trong từ điển, KeyError sẽ được nâng lên.KeyError is raised.

Popitem ()

Xóa và trả về một cặp tùy ý (khóa, giá trị) khỏi từ điển.(key, value) pair from the dictionary.

Popitem () rất hữu ích để lặp lại một cách phá hủy trên một từ điển, như thường được sử dụng trong các thuật toán đã đặt. Nếu từ điển trống, hãy gọi popitem () sẽ tăng Keyerror. is useful to destructively iterate over a dictionary, as often used in set algorithms. If the dictionary is empty, calling popitem() raises a KeyError.

setDefault (khóa [, mặc định]) ¶[, default]

Nếu khóa nằm trong từ điển, hãy trả về giá trị của nó. Nếu không, chèn phím với giá trị mặc định và trả về mặc định. Mặc định mặc định là không có.None.

Cập nhật ([Khác]) ¶[other]

Cập nhật từ điển với các cặp khóa/giá trị từ các khóa hiện có, ghi đè lên. Trả lại không.None.

CẬP NHẬT () chấp nhận một đối tượng từ điển khác hoặc có thể lặp lại các cặp khóa/giá trị (như các bộ dữ liệu hoặc các vòng lặp khác có độ dài hai). Nếu các đối số từ khóa được chỉ định, từ điển sau đó được cập nhật với các cặp khóa/giá trị đó: D.Update (Red = 1, Blue = 2). accepts either another dictionary object or an iterable of key/value pairs (as tuples or other iterables of length two). If keyword arguments are specified, the dictionary is then updated with those key/value pairs: d.update(red=1, blue=2).

giá trị ()

Trả về một cái nhìn mới về các giá trị từ điển. Xem tài liệu của các đối tượng xem.

Từ điển so sánh bằng nhau khi và chỉ khi chúng có cùng một cặp (khóa, giá trị). So sánh đơn hàng (‘) nâng cao kiểu.(key, value) pairs. Order comparisons (‘<’, ‘<=’, ‘>=’, ‘>’) raise TypeError.

4.10.1. View Dictionary View Object;

Các đối tượng được trả về bởi dict.keys (), dict.values ​​() và dict.items () là các đối tượng xem. Chúng cung cấp một cái nhìn động trên các mục từ điển, điều đó có nghĩa là khi từ điển thay đổi, quan điểm phản ánh những thay đổi này.dict.keys(), dict.values() and dict.items() are view objects. They provide a dynamic view on the dictionary’s entries, which means that when the dictionary changes, the view reflects these changes.

Các chế độ xem từ điển có thể được lặp lại để mang lại dữ liệu tương ứng của họ và hỗ trợ các bài kiểm tra thành viên:

Len (Dictview)

Trả lại số lượng mục trong từ điển.

iter (DictView)

Trả về một trình lặp qua các khóa, giá trị hoặc các mục (được biểu thị dưới dạng bộ dữ liệu của (khóa, giá trị)) trong từ điển.(key, value)) in the dictionary.

Các khóa và giá trị được lặp lại theo thứ tự tùy ý không ngẫu nhiên, thay đổi giữa các triển khai Python và phụ thuộc vào lịch sử từ điển của các phần chèn và xóa. Nếu các khóa, giá trị và chế độ xem các mục được lặp lại mà không có sửa đổi can thiệp vào từ điển, thứ tự của các mục sẽ trực tiếp tương ứng. Điều này cho phép tạo các cặp (giá trị, khóa) bằng Zip (): cặp = zip (D.Values ​​(), D.Keys ()). Một cách khác để tạo cùng một danh sách là cặp = [(v, k) cho (k, v) ind.items ()].(value, key) pairs using zip(): pairs = zip(d.values(), d.keys()). Another way to create the same list is pairs = [(v, k) for (k, v) in d.items()].

Lặp lại các chế độ xem trong khi thêm hoặc xóa các mục trong từ điển có thể tăng thời gian chạy hoặc không lặp lại tất cả các mục.RuntimeError or fail to iterate over all entries.

x trong DictView

Trả về true nếu X nằm trong các khóa, giá trị hoặc mục từ điển cơ bản (trong trường hợp sau, X phải là một (khóa, giá trị) tuple).True if x is in the underlying dictionary’s keys, values or items (in the latter case, x should be a (key, value) tuple).

Các chế độ xem khóa được đặt giống như các mục của chúng là duy nhất và có thể băm. Nếu tất cả các giá trị có thể băm, do đó, các cặp (khóa, giá trị) là duy nhất và có thể băm, thì chế độ xem các mục cũng giống như được đặt. .(key, value) pairs are unique and hashable, then the items view is also set-like. (Values views are not treated as set-like since the entries are generally not unique.) For set-like views, all of the operations defined for the abstract base class collections.abc.Set are available (for example, ==, <, or ^).

Một ví dụ về cách sử dụng từ điển xem:

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

4.11. Trình quản lý bối cảnh Loại

Python sườn với câu lệnh hỗ trợ khái niệm về bối cảnh thời gian chạy được xác định bởi người quản lý bối cảnh. Điều này được triển khai bằng cách sử dụng một cặp phương thức cho phép các lớp do người dùng xác định xác định bối cảnh thời gian chạy được nhập trước khi phần thân câu lệnh được thực thi và thoát khi câu lệnh kết thúc:with statement supports the concept of a runtime context defined by a context manager. This is implemented using a pair of methods that allow user-defined classes to define a runtime context that is entered before the statement body is executed and exited when the statement ends:

bối cảnh người quản lý .__ Nhập __ () ¶

Nhập bối cảnh thời gian chạy và trả về đối tượng này hoặc đối tượng khác liên quan đến bối cảnh thời gian chạy. Giá trị được trả về bởi phương thức này được liên kết với định danh trong mệnh đề AS AS với các câu lệnh sử dụng trình quản lý ngữ cảnh này.as clause of with statements using this context manager.

Một ví dụ về trình quản lý bối cảnh tự trả về là một đối tượng tệp. Các đối tượng tệp tự trả lại từ __enter __ () để cho phép Open () được sử dụng làm biểu thức ngữ cảnh trong một câu lệnh.open() to be used as the context expression in a with statement.

Một ví dụ về trình quản lý bối cảnh trả về một đối tượng liên quan là một đối tượng liên quan được trả về bởi decimal.localcontext (). Các nhà quản lý này đặt bối cảnh thập phân chủ động thành một bản sao của bối cảnh thập phân gốc và sau đó trả lại bản sao. Điều này cho phép các thay đổi được thực hiện theo bối cảnh thập phân hiện tại trong phần thân của câu lệnh mà không ảnh hưởng đến mã bên ngoài câu lệnh.decimal.localcontext(). These managers set the active decimal context to a copy of the original decimal context and then return the copy. This allows changes to be made to the current decimal context in the body of the with statement without affecting code outside the with statement.

Bối cảnh bối cảnh .__ Thoát __ (exc_type, exc_val, exc_tb) ¶

Thoát khỏi bối cảnh thời gian chạy và trả lại cờ Boolean cho biết nếu có bất kỳ ngoại lệ nào xảy ra nên bị triệt tiêu. Nếu một ngoại lệ xảy ra trong khi thực hiện phần thân của câu lệnh, thì các đối số chứa loại ngoại lệ, giá trị và thông tin theo dõi. Nếu không, cả ba đối số đều không có.with statement, the arguments contain the exception type, value and traceback information. Otherwise, all three arguments are None.

Trả về một giá trị thực từ phương thức này sẽ khiến câu lệnh với tuyên bố triệt tiêu ngoại lệ và tiếp tục thực thi với câu lệnh ngay sau câu lệnh với câu lệnh. Nếu không, ngoại lệ tiếp tục lan truyền sau khi phương pháp này đã hoàn tất việc thực hiện. Các ngoại lệ xảy ra trong quá trình thực hiện phương pháp này sẽ thay thế bất kỳ ngoại lệ nào xảy ra trong phần thân của câu lệnh.with statement to suppress the exception and continue execution with the statement immediately following the with statement. Otherwise the exception continues propagating after this method has finished executing. Exceptions that occur during execution of this method will replace any exception that occurred in the body of the with statement.

Ngoại lệ được thông qua không bao giờ nên được đọc lại một cách rõ ràng - thay vào đó, phương pháp này sẽ trả về một giá trị sai để chỉ ra rằng phương pháp đã hoàn thành thành công và không muốn triệt tiêu ngoại lệ được nâng lên. Điều này cho phép mã quản lý bối cảnh dễ dàng phát hiện xem phương thức __exit __ () có thực sự thất bại hay không.__exit__() method has actually failed.

Python xác định một số người quản lý bối cảnh để hỗ trợ đồng bộ hóa luồng dễ dàng, đóng nhanh các tệp hoặc các đối tượng khác và thao tác đơn giản hơn về bối cảnh số học thập phân hoạt động. Các loại cụ thể không được đối xử đặc biệt ngoài việc thực hiện giao thức quản lý bối cảnh. Xem mô -đun bối cảnh cho một số ví dụ.contextlib module for some examples.

Các máy phát điện Python và nhà trang trí bối cảnh.contextmanager cung cấp một cách thuận tiện để thực hiện các giao thức này. Nếu một hàm máy phát được trang trí với trình trang trí bối cảnh.contextmanager, nó sẽ trả về một trình quản lý bối cảnh thực hiện các phương thức __enter __ () và __exit __ () cần thiết, thay vì trình lặp được tạo bởi hàm máy phát không được giải quyết.contextlib.contextmanager decorator provide a convenient way to implement these protocols. If a generator function is decorated with the contextlib.contextmanager decorator, it will return a context manager implementing the necessary __enter__() and __exit__() methods, rather than the iterator produced by an undecorated generator function.

Lưu ý rằng không có khe cắm cụ thể nào cho bất kỳ phương pháp nào trong cấu trúc loại cho các đối tượng Python trong API Python/C. Các loại mở rộng muốn xác định các phương pháp này phải cung cấp cho chúng như một phương thức có thể truy cập Python bình thường. So với chi phí của việc thiết lập bối cảnh thời gian chạy, chi phí của một tra cứu từ điển lớp là không đáng kể.

4.12. Các loại tích hợp khác

Thông dịch viên hỗ trợ một số loại đối tượng khác. Hầu hết các trong số này chỉ hỗ trợ một hoặc hai hoạt động.

4.12.1. Mô -đun bình

Hoạt động đặc biệt duy nhất trên một mô -đun là truy cập thuộc tính: M.Name, trong đó m là mô -đun và tên truy cập một tên được xác định trong bảng biểu tượng M. Các thuộc tính mô -đun có thể được gán cho. .m.name, where m is a module and name accesses a name defined in m‘s symbol table. Module attributes can be assigned to. (Note that the import statement is not, strictly speaking, an operation on a module object; import foo does not require a module object named foo to exist, rather it requires an (external) definition for a module named foo somewhere.)

Một thuộc tính đặc biệt của mỗi mô -đun là __dict__. Đây là từ điển chứa bảng ký hiệu mô -đun. Việc sửa đổi từ điển này thực sự sẽ thay đổi bảng biểu tượng của mô -đun, nhưng không thể gán trực tiếp cho thuộc tính __dict__ .__ Dict __ = {}). Sửa đổi __dict__ trực tiếp không được khuyến khích.__dict__. This is the dictionary containing the module’s symbol table. Modifying this dictionary will actually change the module’s symbol table, but direct assignment to the __dict__ attribute is not possible (you can write m.__dict__['a'] = 1, which defines m.a to be 1, but you can’t write m.__dict__ = {}). Modifying __dict__ directly is not recommended.

Các mô -đun được xây dựng vào phiên dịch được viết như thế này:. Nếu được tải từ một tập tin, chúng được viết là. 'sys' (built-in)>. If loaded from a file, they are written as 'os' from '/usr/local/lib/pythonX.Y/os.pyc'>.

4.12.3. Chức năng¶

Các đối tượng chức năng được tạo bởi các định nghĩa chức năng. Hoạt động duy nhất trên một đối tượng hàm là gọi nó là: func (list argion).func(argument-list).

Thực sự có hai hương vị của các đối tượng chức năng: các chức năng tích hợp và các chức năng do người dùng xác định. Cả hai đều hỗ trợ cùng một hoạt động (để gọi hàm), nhưng việc triển khai là khác nhau, do đó các loại đối tượng khác nhau.

Xem định nghĩa chức năng để biết thêm thông tin.

4.12.4. Phương pháp bình

Các phương thức là các hàm được gọi bằng cách sử dụng ký hiệu thuộc tính. Có hai hương vị: các phương thức tích hợp (như append () trên danh sách) và phương thức thể hiện lớp. Các phương pháp tích hợp được mô tả với các loại hỗ trợ chúng.append() on lists) and class instance methods. Built-in methods are described with the types that support them.

Nếu bạn truy cập một phương thức (một hàm được xác định trong không gian tên lớp) thông qua một thể hiện, bạn sẽ nhận được một đối tượng đặc biệt: một phương thức ràng buộc (còn gọi là phương thức thể hiện) đối tượng. Khi được gọi, nó sẽ thêm đối số tự vào danh sách đối số. Các phương thức ràng buộc có hai thuộc tính chỉ đọc đặc biệt: M .__ Self__ là đối tượng mà phương thức hoạt động và m .__ func__ là chức năng thực hiện phương thức. Gọi M (arg-1, arg-2, ..., arg-n) hoàn toàn tương đương với việc gọi m .__ func __ (m .__ tự __, arg-1, arg-2, ..., arg-n).self argument to the argument list. Bound methods have two special read-only attributes: m.__self__ is the object on which the method operates, and m.__func__ is the function implementing the method. Calling m(arg-1, arg-2, ..., arg-n) is completely equivalent to calling m.__func__(m.__self__, arg-1, arg-2, ..., arg-n).

Giống như các đối tượng chức năng, các đối tượng phương thức ràng buộc hỗ trợ nhận các thuộc tính tùy ý. Tuy nhiên, vì các thuộc tính phương thức thực sự được lưu trữ trên đối tượng hàm bên dưới (meth .__ func__), việc cài đặt các thuộc tính phương thức trên các phương thức bị ràng buộc không được phép. Cố gắng đặt một thuộc tính trên một phương thức dẫn đến một thuộc tính được nâng lên. Để đặt thuộc tính phương thức, bạn cần đặt nó một cách rõ ràng trên đối tượng hàm cơ bản:meth.__func__), setting method attributes on bound methods is disallowed. Attempting to set an attribute on a method results in an AttributeError being raised. In order to set a method attribute, you need to explicitly set it on the underlying function object:

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

Xem hệ thống phân cấp loại tiêu chuẩn để biết thêm thông tin.

4.12.5. Mã đối tượng

Các đối tượng mã được sử dụng bởi việc triển khai để thể hiện mã Python thực thi của Pseudo được biên dịch bằng cách sử dụng như một cơ thể chức năng. Chúng khác với các đối tượng chức năng vì chúng không chứa một tham chiếu đến môi trường thực hiện toàn cầu của chúng. Các đối tượng mã được trả về bởi hàm compile () tích hợp và có thể được trích xuất từ ​​các đối tượng hàm thông qua thuộc tính __code__ của chúng. Xem thêm mô -đun mã.compile() function and can be extracted from function objects through their __code__ attribute. See also the code module.

Một đối tượng mã có thể được thực thi hoặc đánh giá bằng cách chuyển nó (thay vì chuỗi nguồn) cho các hàm tích hợp thực thi () hoặc eval ().exec() or eval() built-in functions.

Xem hệ thống phân cấp loại tiêu chuẩn để biết thêm thông tin.

4.12.5. Mã đối tượng

Các đối tượng mã được sử dụng bởi việc triển khai để thể hiện mã Python thực thi của Pseudo được biên dịch bằng cách sử dụng như một cơ thể chức năng. Chúng khác với các đối tượng chức năng vì chúng không chứa một tham chiếu đến môi trường thực hiện toàn cầu của chúng. Các đối tượng mã được trả về bởi hàm compile () tích hợp và có thể được trích xuất từ ​​các đối tượng hàm thông qua thuộc tính __code__ của chúng. Xem thêm mô -đun mã.type(). There are no special operations on types. The standard module types defines names for all standard built-in types.

Một đối tượng mã có thể được thực thi hoặc đánh giá bằng cách chuyển nó (thay vì chuỗi nguồn) cho các hàm tích hợp thực thi () hoặc eval (). 'int'>.

4.12.6. Nhập đối tượng Jo

Loại đối tượng đại diện cho các loại đối tượng khác nhau. Một loại đối tượng được truy cập bởi loại chức năng tích hợp (). Không có hoạt động đặc biệt trên các loại. Các loại mô-đun tiêu chuẩn xác định tên cho tất cả các loại tích hợp tiêu chuẩn.None (a built-in name). type(None)() produces the same singleton.

Các loại được viết như thế này:.None.

4.12.7. Đối tượng null

Đối tượng này được trả về bởi các chức năng don don rõ ràng trả lại một giá trị. Nó hỗ trợ không có hoạt động đặc biệt. Có chính xác một đối tượng null, không có tên là không có tên (tên tích hợp). loại (none) () tạo ra cùng một singleton.Ellipsis (a built-in name). type(Ellipsis)() produces the Ellipsis singleton.

Nó được viết là không có.Ellipsis or ....

4.12.8. Đối tượng Ellipsis

Đối tượng này thường được sử dụng bằng cách cắt (xem lát cắt). Nó hỗ trợ không có hoạt động đặc biệt. Có chính xác một đối tượng Ellipsis, được đặt tên là Ellipsis (một tên tích hợp). Loại (Ellipsis) () sản xuất Singleton Ellipsis.NotImplemented object. type(NotImplemented)() produces the singleton instance.

Nó được viết là dấu chấm lửng hoặc ....NotImplemented.

4.12.9. Đối tượng được thực hiện

Đối tượng này được trả về từ các so sánh và hoạt động nhị phân khi chúng được yêu cầu hoạt động theo các loại mà họ không hỗ trợ. Xem so sánh để biết thêm thông tin. Có chính xác một đối tượng không kích thích. Loại (không được thực hiện) () tạo ra thể hiện singleton.False and True. They are used to represent truth values (although other values can also be considered false or true). In numeric contexts (for example when used as the argument to an arithmetic operator), they behave like the integers 0 and 1, respectively. The built-in function bool() can be used to convert any value to a Boolean, if the value can be interpreted as a truth value (see section Truth Value Testing above).

Chúng được viết là sai và đúng, tương ứng.False and True, respectively.

4.12.11. Đối tượng bên trong

Xem hệ thống phân cấp loại tiêu chuẩn cho thông tin này. Nó mô tả các đối tượng khung ngăn xếp, đối tượng Traceback và các đối tượng lát cắt.

4.13. Thuộc tính đặc biệt

Việc triển khai thêm một vài thuộc tính chỉ đọc đặc biệt vào một số loại đối tượng, trong đó chúng có liên quan. Một số trong số này không được báo cáo bởi hàm tích hợp Dir ().dir() built-in function.

Đối tượng .__ Dict__¶

Một từ điển hoặc đối tượng ánh xạ khác được sử dụng để lưu trữ các thuộc tính đối tượng (có thể ghi).

ví dụ .__ lớp __¶

Lớp mà một thể hiện lớp thuộc về.

Lớp .__ Base__¶

Tuple của các lớp cơ sở của một đối tượng lớp.

tên lớp__¶

Tên của lớp hoặc loại.

lớp .__ Qualname__¶

Tên đủ điều kiện của lớp hoặc loại.

Mới trong phiên bản 3.3.

Lớp .__ MRO__¶

Thuộc tính này là một bộ phận của các lớp được xem xét khi tìm kiếm các lớp cơ sở trong quá trình giải quyết phương thức.

class.mro () ¶

Phương pháp này có thể được ghi đè bởi Metaclass để tùy chỉnh thứ tự độ phân giải phương thức cho các trường hợp của nó. Nó được gọi là hiện tại trong lớp và kết quả của nó được lưu trữ trong __mro__.__mro__.

lớp .__ Các lớp con __ ()

Mỗi lớp giữ một danh sách các tài liệu tham khảo yếu đến các lớp con ngay lập tức của nó. Phương pháp này trả về một danh sách tất cả các tài liệu tham khảo vẫn còn sống. Thí dụ:

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_ = 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_ = (abs(m) % P) * pow(n, P - 2, P) % P
    if m < 0:
        hash_ = -hash_
    if hash_ == -1:
        hash_ = -2
    return hash_

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_ = 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_ = (hash_ & (M - 1)) - (hash & M)
    if hash_ == -1:
        hash_ == -2
    return hash_
0

Chú thích

[1]Thông tin bổ sung về các phương pháp đặc biệt này có thể được tìm thấy trong Hướng dẫn tham khảo Python (tùy chỉnh cơ bản).
[2]Kết quả là, danh sách [1,2] được coi là bằng [1.0,2.0] và tương tự cho các bộ đếm.[1, 2] is considered equal to [1.0, 2.0], and similarly for tuples.
[3]Họ phải có vì trình phân tích cú pháp có thể nói với loại toán hạng.
[4].
[5]Do đó, để định dạng một tuple, bạn nên cung cấp một bộ phận đơn lẻ mà phần tử duy nhất là tuple được định dạng.

Python có Biginteger không?

Python hỗ trợ loại số nguyên "Bignum" có thể hoạt động với số lượng lớn tùy ý. Trong Python 2.5+, loại này được gọi là dài và tách biệt với loại INT, nhưng trình thông dịch sẽ tự động sử dụng bất kỳ nào phù hợp hơn. which can work with arbitrarily large numbers. In Python 2.5+, this type is called long and is separate from the int type, but the interpreter will automatically use whichever is more appropriate.

Làm thế nào để bạn tạo ra một int lớn trong Python?

Loại int (x) để chuyển đổi x thành số nguyên đơn giản.Nhập dài (x) để chuyển đổi x thành số nguyên dài.Type long(x) to convert x to a long integer.

Làm thế nào để bạn lưu trữ số dài trong Python?

Trong Python, giá trị của một số nguyên không bị hạn chế bởi số lượng bit và có thể mở rộng đến giới hạn của bộ nhớ có sẵn (Nguồn: Điều này và điều này).Do đó, chúng tôi không bao giờ cần bất kỳ sự sắp xếp đặc biệt nào để lưu trữ số lượng lớn (tưởng tượng làm trên số học trong C/C ++).never need any special arrangement for storing large numbers (Imagine doing above arithmetic in C/C++).

Làm thế nào để Python lưu trữ số nguyên dài?

Tuy nhiên, Python không sử dụng số bit cố định để lưu trữ số nguyên.Thay vào đó, Python sử dụng một số lượng bit khác nhau để lưu trữ số nguyên.Ví dụ, 8 bit, 16 bit, 32 bit, 64 bit, 128 bit, v.v.Số nguyên tối đa mà Python có thể đại diện phụ thuộc vào bộ nhớ có sẵn.uses a variable number of bits to store integers. For example, 8 bits, 16 bits, 32 bits, 64 bits, 128 bits, and so on. The maximum integer number that Python can represent depends on the memory available.