Thuật ngữ

>>>

Dấu nhắc Python mặc định của shell interactive. Thường thấy trong các ví dụ mã có thể được thực thi tương tác trong trình thông dịch.

...

Có thể tham khảo:

  • Lời nhắc Python mặc định của shell interactive khi nhập mã cho khối mã thụt lề, khi nằm trong một cặp dấu phân cách trái và phải phù hợp (dấu ngoặc đơn, dấu ngoặc vuông, dấu ngoặc nhọn hoặc dấu ngoặc kép) hoặc sau khi chỉ định một trình trang trí.

  • Dạng ba chấm của đối tượng Ellipsis.

lớp cơ sở trừu tượng

Các lớp cơ sở trừu tượng bổ sung cho duck-typing bằng cách cung cấp cách xác định giao diện khi các kỹ thuật khác như hasattr() sẽ vụng về hoặc sai một cách tinh tế (ví dụ với magic methods). ABC giới thiệu các lớp con ảo, là các lớp không kế thừa từ một lớp nhưng vẫn được isinstance()issubclass() công nhận; xem tài liệu mô-đun abc. Python đi kèm với nhiều ABC tích hợp cho cấu trúc dữ liệu (trong mô-đun collections.abc), số (trong mô-đun numbers), luồng (trong mô-đun io), trình tìm kiếm và trình tải nhập (trong mô-đun importlib.abc). Bạn có thể tạo ABC của riêng mình bằng mô-đun abc.

chức năng chú thích

Một hàm có thể được gọi để truy xuất annotations của một đối tượng. Hàm này có thể truy cập được dưới dạng thuộc tính __annotate__ của hàm, lớp và mô-đun. Các hàm chú thích là một tập hợp con của evaluate functions.

chú thích

Nhãn được liên kết với một biến, thuộc tính lớp hoặc tham số hàm hoặc giá trị trả về, được sử dụng theo quy ước dưới dạng type hint.

Không thể truy cập chú thích của biến cục bộ trong thời gian chạy, nhưng có thể truy xuất chú thích của biến toàn cục, thuộc tính lớp và hàm bằng cách gọi annotationlib.get_annotations() trên mô-đun, lớp và hàm tương ứng.

Xem variable annotation, function annotation, PEP 484, PEP 526PEP 649 mô tả chức năng này. Ngoài ra, hãy xem Các phương pháp hay nhất về chú thích để biết các phương pháp hay nhất khi làm việc với chú thích.

lý lẽ

Một giá trị được truyền tới function (hoặc method) khi gọi hàm. Có hai loại lập luận:

  • keyword argument: một đối số đứng trước một mã định danh (ví dụ: name=) trong lệnh gọi hàm hoặc được chuyển dưới dạng giá trị trong từ điển có trước **. Ví dụ: 35 đều là đối số từ khóa trong các lệnh gọi tới complex() sau:

    phức tạp (thực=3, hình ảnh=5)
    phức tạp(**{'real': 3, 'hình ảnh': 5})
    
  • positional argument: một đối số không phải là đối số từ khóa. Các đối số vị trí có thể xuất hiện ở đầu danh sách đối số và/hoặc được chuyển dưới dạng các phần tử của iterable đứng trước *. Ví dụ: 35 đều là đối số vị trí trong các lệnh gọi sau:

    phức tạp(3, 5)
    phức tạp(*(3, 5))
    

Các đối số được gán cho các biến cục bộ được đặt tên trong thân hàm. Xem phần Cuộc gọi để biết các quy tắc quản lý nhiệm vụ này. Về mặt cú pháp, bất kỳ biểu thức nào cũng có thể được sử dụng để biểu diễn một đối số; giá trị được đánh giá được gán cho biến cục bộ.

Xem thêm mục nhập thuật ngữ parameter, câu hỏi FAQ trên the difference between arguments and parametersPEP 362.

trình quản lý bối cảnh không đồng bộ

Một đối tượng kiểm soát môi trường được thấy trong câu lệnh async with bằng cách xác định các phương thức __aenter__()__aexit__(). Được giới thiệu bởi PEP 492.

máy phát điện không đồng bộ

Một hàm trả về asynchronous generator iterator. Nó trông giống như một hàm coroutine được xác định bằng async def ngoại trừ việc nó chứa các biểu thức yield để tạo ra một chuỗi giá trị có thể sử dụng được trong vòng lặp async for.

Thường đề cập đến chức năng tạo không đồng bộ, nhưng có thể đề cập đến asynchronous generator iterator trong một số ngữ cảnh. Trong trường hợp ý nghĩa dự định không rõ ràng, việc sử dụng thuật ngữ đầy đủ sẽ tránh được sự mơ hồ.

Hàm tạo không đồng bộ có thể chứa các biểu thức await cũng như các câu lệnh async forasync with.

trình lặp máy phát điện không đồng bộ

Một đối tượng được tạo bởi hàm asynchronous generator.

Đây là một asynchronous iterator mà khi được gọi bằng phương thức __anext__() sẽ trả về một đối tượng có thể chờ đợi, đối tượng này sẽ thực thi phần thân của hàm tạo không đồng bộ cho đến biểu thức yield tiếp theo.

Mỗi yield tạm dừng xử lý, ghi nhớ trạng thái thực thi (bao gồm các biến cục bộ và các câu lệnh thử đang chờ xử lý). Khi asynchronous generator iterator tiếp tục hoạt động một cách hiệu quả với một __anext__() có thể chờ đợi khác, nó sẽ tiếp tục nơi nó đã dừng lại. Xem PEP 492PEP 525.

lặp lại không đồng bộ

Một đối tượng có thể được sử dụng trong câu lệnh async for. Phải trả về asynchronous iterator từ phương thức __aiter__() của nó. Được giới thiệu bởi PEP 492.

trình vòng lặp không đồng bộ

Một đối tượng thực hiện các phương thức __aiter__()__anext__(). __anext__() phải trả về một đối tượng awaitable. async for giải quyết các giá trị chờ được trả về bằng phương thức __anext__() của trình vòng lặp không đồng bộ cho đến khi nó đưa ra ngoại lệ StopAsyncIteration. Được giới thiệu bởi PEP 492.

hoạt động nguyên tử

Một thao tác dường như được thực hiện dưới dạng một bước duy nhất, không thể phân chia: không luồng nào khác có thể quan sát thấy nó được thực hiện một nửa và các hiệu ứng của nó sẽ hiển thị cùng một lúc. Python không đảm bảo rằng các câu lệnh cấp cao là nguyên tử (ví dụ: x += 1 thực hiện nhiều thao tác mã byte và không phải là nguyên tử). Tính nguyên tử chỉ được đảm bảo khi được ghi chép rõ ràng. Xem thêm race conditiondata race.

trạng thái chủ đề đính kèm

Một thread state đang hoạt động cho luồng hệ điều hành hiện tại.

Khi thread state được đính kèm, luồng hệ điều hành có quyền truy cập vào Python C API đầy đủ và có thể gọi trình thông dịch mã byte một cách an toàn.

Trừ khi hàm có ghi chú rõ ràng khác, việc cố gắng gọi C API mà không có trạng thái luồng đính kèm sẽ dẫn đến lỗi nghiêm trọng hoặc hành vi không xác định. Người dùng có thể gắn và tách trạng thái luồng một cách rõ ràng thông qua C API hoặc ngầm định bởi thời gian chạy, bao gồm cả khi chặn cuộc gọi C và bởi trình thông dịch mã byte giữa các cuộc gọi.

Trên hầu hết các bản dựng của Python, việc có trạng thái luồng đính kèm có nghĩa là người gọi giữ GIL cho trình thông dịch hiện tại, do đó, chỉ một luồng hệ điều hành có thể có trạng thái luồng đính kèm tại một thời điểm nhất định. Trong free-threaded builds của Python, các luồng có thể đồng thời giữ trạng thái luồng đính kèm, cho phép trình thông dịch mã byte thực sự song song.

thuộc tính

Một giá trị được liên kết với một đối tượng thường được tham chiếu theo tên bằng cách sử dụng các biểu thức có dấu chấm. Ví dụ: nếu một đối tượng o có thuộc tính a thì nó sẽ được tham chiếu là o.a.

Có thể cung cấp cho một đối tượng một thuộc tính có tên không phải là mã định danh như được xác định bởi Tên (số nhận dạng và từ khóa), ví dụ như sử dụng setattr(), nếu đối tượng cho phép điều đó. Thuộc tính như vậy sẽ không thể truy cập được bằng cách sử dụng biểu thức có dấu chấm và thay vào đó cần phải truy xuất bằng getattr().

đáng chờ đợi

Một đối tượng có thể được sử dụng trong biểu thức await. Có thể là coroutine hoặc một đối tượng có phương thức __await__(). Xem thêm PEP 492.

BDFL

Nhà độc tài nhân từ cho cuộc sống, hay còn gọi là Guido van Rossum, người tạo ra Python.

tập tin nhị phân

Một file object có thể đọc và ghi bytes-like objects. Ví dụ về tệp nhị phân là các tệp được mở ở chế độ nhị phân ('rb', 'wb' hoặc 'rb+'), sys.stdin.buffer, sys.stdout.buffer và các phiên bản của io.BytesIOgzip.GzipFile.

Xem thêm text file để biết đối tượng tệp có thể đọc và ghi đối tượng str.

tài liệu tham khảo mượn

Trong C API của Python, tham chiếu mượn là tham chiếu đến một đối tượng, trong đó mã sử dụng đối tượng không sở hữu tham chiếu đó. Nó trở thành một con trỏ lơ lửng nếu đối tượng bị phá hủy. Ví dụ: bộ sưu tập rác có thể loại bỏ strong reference cuối cùng của đối tượng và do đó phá hủy nó.

Nên gọi Py_INCREF() trên borrowed reference để chuyển đổi nó thành strong reference tại chỗ, ngoại trừ khi đối tượng không thể bị hủy trước lần sử dụng cuối cùng của tham chiếu mượn. Chức năng Py_NewRef() có thể được sử dụng để tạo strong reference mới.

đối tượng giống byte

Một đối tượng hỗ trợ Giao thức đệm và có thể xuất bộ đệm C-contiguous. Điều này bao gồm tất cả các đối tượng bytes, bytearrayarray.array, cũng như nhiều đối tượng memoryview phổ biến. Các đối tượng giống byte có thể được sử dụng cho các hoạt động khác nhau hoạt động với dữ liệu nhị phân; chúng bao gồm nén, lưu vào tệp nhị phân và gửi qua ổ cắm.

Một số hoạt động cần dữ liệu nhị phân có thể thay đổi được. Tài liệu thường gọi chúng là "các đối tượng giống như byte đọc-ghi". Ví dụ về các đối tượng bộ đệm có thể thay đổi bao gồm bytearraymemoryview của bytearray. Các hoạt động khác yêu cầu dữ liệu nhị phân được lưu trữ trong các đối tượng bất biến ("đối tượng giống byte chỉ đọc"); ví dụ trong số này bao gồm bytesmemoryview của đối tượng bytes.

mã byte

Mã nguồn Python được biên dịch thành mã byte, biểu diễn bên trong của chương trình Python trong trình thông dịch CPython. Mã byte cũng được lưu vào bộ đệm trong các tệp .pyc để việc thực thi cùng một tệp nhanh hơn vào lần thứ hai (có thể tránh việc biên dịch lại từ nguồn sang mã byte). "Ngôn ngữ trung gian" này được cho là chạy trên virtual machine thực thi mã máy tương ứng với từng mã byte. Xin lưu ý rằng mã byte dự kiến ​​sẽ không hoạt động giữa các máy ảo Python khác nhau và cũng không ổn định giữa các bản phát hành Python.

Bạn có thể tìm thấy danh sách hướng dẫn mã byte trong tài liệu dành cho the dis module.

có thể gọi được

Một đối tượng có thể gọi được là một đối tượng có thể được gọi, có thể bằng một tập hợp các đối số (xem argument), với cú pháp sau

 thể gọi được (đối số1, đối số2, đối sốN)

function và mở rộng là method, có thể gọi được. Một phiên bản của lớp thực hiện phương thức __call__() cũng có thể gọi được.

gọi lại

Một hàm chương trình con được truyền dưới dạng đối số sẽ được thực thi tại một thời điểm nào đó trong tương lai.

lớp học

Một mẫu để tạo các đối tượng do người dùng xác định. Các định nghĩa lớp thường chứa các định nghĩa phương thức hoạt động trên các thể hiện của lớp.

biến lớp

Một biến được xác định trong một lớp và chỉ được sửa đổi ở cấp độ lớp (nghĩa là không phải trong một thể hiện của lớp).

biến đóng

Một free variable được tham chiếu từ một nested scope được xác định trong phạm vi bên ngoài thay vì được giải quyết trong thời gian chạy từ các không gian tên toàn cục hoặc dựng sẵn. Có thể được xác định rõ ràng bằng từ khóa nonlocal để cho phép truy cập ghi hoặc được xác định ngầm nếu biến chỉ được đọc.

Ví dụ: trong hàm inner trong đoạn mã sau, cả xprint đều là free variables, nhưng chỉ xclosure variable:

def bên ngoài():
    x = 0
    def bên trong():
        không định xứ x
        x += 1
        in(x)
    trở lại bên trong

Do thuộc tính codeobject.co_freevars (mặc dù có tên như vậy nhưng chỉ bao gồm tên của các biến đóng thay vì liệt kê tất cả các biến tự do được tham chiếu), thuật ngữ free variable tổng quát hơn đôi khi được sử dụng ngay cả khi ý nghĩa dự định là đề cập cụ thể đến các biến đóng.

số phức

Một phần mở rộng của hệ thống số thực quen thuộc trong đó tất cả các số được biểu diễn dưới dạng tổng của phần thực và phần ảo. Số ảo là bội số thực của đơn vị ảo (căn bậc hai của -1), thường được viết i trong toán học hoặc j trong kỹ thuật. Python có hỗ trợ tích hợp cho các số phức, được viết bằng ký hiệu sau này; phần ảo được viết bằng hậu tố j, ví dụ: 3+1j. Để có quyền truy cập vào các phần tương đương phức tạp của mô-đun math, hãy sử dụng cmath. Sử dụng số phức là một tính năng toán học khá tiên tiến. Nếu bạn không nhận thức được sự cần thiết của chúng, gần như chắc chắn bạn có thể yên tâm bỏ qua chúng.

sự đồng thời

Khả năng của một chương trình máy tính có thể thực hiện nhiều nhiệm vụ cùng một lúc. Python cung cấp các thư viện để viết các chương trình sử dụng các dạng đồng thời khác nhau. asyncio là một thư viện để xử lý các tác vụ và coroutine không đồng bộ. threading cung cấp quyền truy cập vào các luồng của hệ điều hành và multiprocessing vào các quy trình của hệ điều hành. Bộ xử lý đa lõi có thể thực thi các luồng và quy trình trên các lõi CPU khác nhau cùng một lúc (xem parallelism).

sửa đổi đồng thời

Khi nhiều luồng sửa đổi dữ liệu được chia sẻ cùng một lúc. Việc sửa đổi đồng thời mà không đồng bộ hóa thích hợp có thể gây ra race conditions và cũng có thể gây ra data race, hỏng dữ liệu hoặc cả hai.

bối cảnh

Thuật ngữ này có nhiều ý nghĩa khác nhau tùy thuộc vào vị trí và cách nó được sử dụng. Một số ý nghĩa thông dụng:

giao thức quản lý bối cảnh

Các phương thức __enter__()__exit__() được gọi bởi câu lệnh with. Xem PEP 343.

quản lý bối cảnh

Một đối tượng triển khai context management protocol và kiểm soát môi trường được thấy trong câu lệnh with. Xem PEP 343.

biến bối cảnh

Một biến có giá trị phụ thuộc vào ngữ cảnh là current context. Các giá trị được truy cập thông qua các đối tượng contextvars.ContextVar. Các biến bối cảnh chủ yếu được sử dụng để tách biệt trạng thái giữa các tác vụ không đồng bộ đồng thời.

tiếp giáp

Một bộ đệm được coi là liền kề nếu nó là C-contiguous hoặc Fortran contiguous. Bộ đệm không chiều là C và Fortran liền kề nhau. Trong mảng một chiều, các phần tử phải được sắp xếp cạnh nhau trong bộ nhớ theo thứ tự tăng chỉ số bắt đầu từ 0. Trong mảng C-liền kề nhiều chiều, chỉ mục cuối cùng thay đổi nhanh nhất khi truy cập các mục theo thứ tự địa chỉ bộ nhớ. Tuy nhiên, trong mảng liền kề Fortran, chỉ số đầu tiên thay đổi nhanh nhất.

đội quân tuần tra

Coroutine là một dạng chương trình con tổng quát hơn. Các chương trình con được nhập vào một thời điểm và thoát ra ở một thời điểm khác. Coroutine có thể được nhập, thoát và tiếp tục ở nhiều điểm khác nhau. Chúng có thể được thực hiện bằng câu lệnh async def. Xem thêm PEP 492.

chức năng coroutine

Hàm trả về đối tượng coroutine. Một hàm coroutine có thể được xác định bằng câu lệnh async def và có thể chứa các từ khóa await, async forasync with. Chúng được giới thiệu bởi PEP 492.

CPython

Việc triển khai chuẩn của ngôn ngữ lập trình Python, được phân phối trên python.org. Thuật ngữ "CPython" được sử dụng khi cần thiết để phân biệt cách triển khai này với các cách triển khai khác như Jython hoặc IronPython.

bối cảnh hiện tại

context (đối tượng contextvars.Context) hiện đang được các đối tượng ContextVar sử dụng để truy cập (lấy hoặc đặt) các giá trị của context variables. Mỗi chủ đề có bối cảnh hiện tại riêng của nó. Các khung thực thi tác vụ không đồng bộ (xem asyncio) liên kết từng tác vụ với một bối cảnh trở thành bối cảnh hiện tại bất cứ khi nào tác vụ bắt đầu hoặc tiếp tục thực thi.

cô lập theo chu kỳ

Một nhóm con của một hoặc nhiều đối tượng tham chiếu lẫn nhau trong một chu trình tham chiếu nhưng không được tham chiếu bởi các đối tượng bên ngoài nhóm. Mục tiêu của cyclic garbage collector là xác định các nhóm này và phá vỡ các chu kỳ tham chiếu để có thể lấy lại bộ nhớ.

cuộc đua dữ liệu

Tình huống trong đó nhiều luồng truy cập đồng thời vào cùng một vị trí bộ nhớ, ít nhất một trong các truy cập là ghi và các luồng không sử dụng bất kỳ đồng bộ hóa nào để kiểm soát quyền truy cập của chúng. Cuộc đua dữ liệu dẫn đến hành vi non-deterministic và có thể gây hỏng dữ liệu. Việc sử dụng lockssynchronization primitives khác đúng cách sẽ ngăn chặn việc chạy đua dữ liệu. Lưu ý rằng các cuộc đua dữ liệu chỉ có thể xảy ra trong mã gốc, nhưng native code đó có thể được hiển thị trong API của Python. Xem thêm race conditionthread-safe.

sự bế tắc

Một tình huống trong đó hai hoặc nhiều tác vụ (luồng, quy trình hoặc coroutine) chờ vô thời hạn để nhau giải phóng tài nguyên hoặc hoàn thành hành động, ngăn không cho bất kỳ tác vụ nào tiến triển. Ví dụ: nếu luồng A giữ khóa 1 và đợi khóa 2, trong khi luồng B giữ khóa 2 và đợi khóa 1, cả hai luồng sẽ đợi vô thời hạn. Trong Python, điều này thường phát sinh từ việc có được nhiều khóa theo thứ tự xung đột hoặc từ các phụ thuộc nối/chờ vòng tròn. Có thể tránh được bế tắc bằng cách luôn thu thập nhiều locks theo thứ tự nhất quán. Xem thêm lockreentrant.

người trang trí

Một hàm trả về một hàm khác, thường được áp dụng dưới dạng chuyển đổi hàm bằng cú pháp @wrapper. Các ví dụ phổ biến cho trang trí là classmethod()staticmethod().

Cú pháp trang trí chỉ đơn thuần là cú pháp, hai định nghĩa hàm sau đây tương đương về mặt ngữ nghĩa:

định nghĩa f(arg):
    ...
f = phương thức tĩnh(f)

@staticmethod
định nghĩa f(arg):
    ...

Khái niệm tương tự tồn tại đối với các lớp, nhưng ít được sử dụng ở đó hơn. Xem tài liệu về function definitionsclass definitions để biết thêm về trang trí.

sự mô tả

Bất kỳ đối tượng nào xác định các phương thức __get__(), __set__() hoặc __delete__(). Khi một thuộc tính lớp là một bộ mô tả, hành vi liên kết đặc biệt của nó sẽ được kích hoạt khi tra cứu thuộc tính. Thông thường, sử dụng a.b để lấy, đặt hoặc xóa một thuộc tính sẽ tra cứu đối tượng có tên b trong từ điển lớp cho a, nhưng nếu b là một bộ mô tả thì phương thức mô tả tương ứng sẽ được gọi. Hiểu các bộ mô tả là chìa khóa để hiểu sâu về Python vì chúng là nền tảng cho nhiều tính năng bao gồm hàm, phương thức, thuộc tính, phương thức lớp, phương thức tĩnh và tham chiếu đến siêu lớp.

Để biết thêm thông tin về các phương pháp của bộ mô tả, hãy xem Triển khai mô tả hoặc Descriptor How To Guide.

từ điển

Mảng kết hợp, trong đó các khóa tùy ý được ánh xạ tới các giá trị. Các khóa có thể là bất kỳ đối tượng nào với các phương thức __hash__()__eq__(). Được gọi là hàm băm trong Perl.

hiểu từ điển

Một cách nhỏ gọn để xử lý tất cả hoặc một phần các phần tử trong một lần lặp và trả về một từ điển kèm theo kết quả. results = {n: n ** 2 for n in range(10)} tạo một từ điển chứa khóa n được ánh xạ tới giá trị n ** 2. Xem Hiển thị danh sách, bộ và từ điển.

xem từ điển

Các đối tượng được trả về từ dict.keys(), dict.values()dict.items() được gọi là các chế độ xem từ điển. Chúng cung cấp chế độ xem động đối với các mục nhập của từ điển, có nghĩa là khi từ điển thay đổi, chế độ xem sẽ phản ánh những thay đổi này. Để buộc chế độ xem từ điển trở thành danh sách đầy đủ, hãy sử dụng list(dictview). Xem Đối tượng xem từ điển.

chuỗi tài liệu

Một chuỗi ký tự xuất hiện dưới dạng biểu thức đầu tiên trong một lớp, hàm hoặc mô-đun. Mặc dù bị bỏ qua khi bộ phần mềm được thực thi, nó được trình biên dịch nhận ra và đưa vào thuộc tính __doc__ của lớp, hàm hoặc mô-đun kèm theo. Vì nó có sẵn thông qua việc xem xét nội tâm nên nó là nơi chuẩn mực cho tài liệu về đối tượng.

gõ vịt

Một phong cách lập trình không nhìn vào loại đối tượng để xác định xem nó có giao diện phù hợp hay không; thay vào đó, phương thức hoặc thuộc tính đó được gọi hoặc sử dụng đơn giản ("Nếu nó trông giống một con vịt và kêu như một con vịt, thì nó phải là một con vịt.") Bằng cách nhấn mạnh vào các giao diện thay vì các loại cụ thể, mã được thiết kế tốt sẽ cải thiện tính linh hoạt của nó bằng cách cho phép thay thế đa hình. Việc gõ vịt tránh các bài kiểm tra bằng type() hoặc isinstance(). (Tuy nhiên, lưu ý rằng việc gõ vịt có thể được bổ sung bằng abstract base classes.) Thay vào đó, nó thường sử dụng các bài kiểm tra hasattr() hoặc lập trình EAFP.

ngu ngốc

Một cách viết tắt không chính thức của "dấu gạch dưới kép", được sử dụng khi nói về special method. Ví dụ: __init__ thường được phát âm là "dunder init".

EAFP

Dễ dàng xin sự tha thứ hơn là sự cho phép. Kiểu mã hóa Python phổ biến này giả định sự tồn tại của các khóa hoặc thuộc tính hợp lệ và bắt các ngoại lệ nếu giả định đó được chứng minh là sai. Phong cách rõ ràng và nhanh chóng này được đặc trưng bởi sự hiện diện của nhiều câu lệnh tryexcept. Kỹ thuật này tương phản với kiểu LBYL phổ biến ở nhiều ngôn ngữ khác như C.

đánh giá chức năng

Một hàm có thể được gọi để đánh giá thuộc tính được đánh giá từng phần của một đối tượng, chẳng hạn như giá trị của các bí danh loại được tạo bằng câu lệnh type.

biểu hiện

Một đoạn cú pháp có thể được đánh giá theo một giá trị nào đó. Nói cách khác, một biểu thức là sự tích lũy của các thành phần biểu thức như chữ, tên, quyền truy cập thuộc tính, toán tử hoặc lệnh gọi hàm, tất cả đều trả về một giá trị. Ngược lại với nhiều ngôn ngữ khác, không phải tất cả cấu trúc ngôn ngữ đều là biểu thức. Ngoài ra còn có statements không thể được sử dụng làm biểu thức, chẳng hạn như while. Bài tập cũng là câu lệnh chứ không phải biểu thức.

mô-đun mở rộng

Một mô-đun được viết bằng C hoặc C++, sử dụng C API của Python để tương tác với lõi và với mã người dùng.

chuỗi f
dây f

Các chuỗi ký tự có tiền tố f hoặc F thường được gọi là "f-strings", viết tắt của formatted string literals. Xem thêm PEP 498.

đối tượng tập tin

Một đối tượng hiển thị API hướng tệp (với các phương thức như read() hoặc write()) cho tài nguyên cơ bản. Tùy thuộc vào cách nó được tạo, một đối tượng tệp có thể làm trung gian truy cập vào một tệp thực trên đĩa hoặc vào một loại thiết bị lưu trữ hoặc liên lạc khác (ví dụ: đầu vào/đầu ra tiêu chuẩn, bộ đệm trong bộ nhớ, ổ cắm, đường ống, v.v.). Đối tượng tệp còn được gọi là file-like objects hoặc streams.

Thực tế có ba loại đối tượng tệp: binary files thô, binary files được đệm và text files. Giao diện của chúng được xác định trong mô-đun io. Cách chuẩn để tạo đối tượng tệp là sử dụng hàm open().

đối tượng giống như tập tin

Một từ đồng nghĩa với file object.

mã hóa hệ thống tập tin và xử lý lỗi

Mã hóa và xử lý lỗi được Python sử dụng để giải mã byte từ hệ điều hành và mã hóa Unicode sang hệ điều hành.

Mã hóa hệ thống tệp phải đảm bảo giải mã thành công tất cả các byte dưới 128. Nếu mã hóa hệ thống tệp không cung cấp đảm bảo này, các hàm API có thể tăng UnicodeError.

Các hàm sys.getfilesystemencoding()sys.getfilesystemencodeerrors() có thể được sử dụng để lấy mã hóa hệ thống tập tin và xử lý lỗi.

Zz000zz được cấu hình khi khởi động Python bằng hàm PyConfig_Read(): xem các thành viên filesystem_encodingfilesystem_errors của PyConfig.

Xem thêm locale encoding.

người tìm kiếm

Một đối tượng cố gắng tìm loader cho mô-đun đang được nhập.

Có hai loại công cụ tìm: meta path finders để sử dụng với sys.meta_pathpath entry finders để sử dụng với sys.path_hooks.

Xem Trình tìm kiếm và tảiimportlib để biết thêm chi tiết.

chia tầng

Phép chia toán học làm tròn xuống số nguyên gần nhất. Toán tử phân chia tầng là //. Ví dụ: biểu thức 11 // 4 đánh giá thành 2 trái ngược với 2.75 được trả về bởi phép chia thực float. Lưu ý rằng (-11) // 4-3 vì đó là -2.75 làm tròn downward. Xem PEP 238.

luồng miễn phí

Một mô hình phân luồng trong đó nhiều luồng có thể chạy đồng thời mã byte Python trong cùng một trình thông dịch. Điều này trái ngược với global interpreter lock, chỉ cho phép một luồng thực thi mã byte Python tại một thời điểm. Xem PEP 703.

xây dựng theo luồng miễn phí

Bản dựng CPython hỗ trợ free threading, được định cấu hình bằng tùy chọn --disable-gil trước khi biên dịch.

Xem Hỗ trợ Python cho luồng miễn phí.

biến miễn phí

Về mặt hình thức, như được định nghĩa trong language execution model, biến miễn phí là bất kỳ biến nào được sử dụng trong một vùng tên không phải là biến cục bộ trong vùng tên đó. Xem closure variable để biết ví dụ. Về mặt thực tế, do tên của thuộc tính codeobject.co_freevars, thuật ngữ này đôi khi cũng được sử dụng như một từ đồng nghĩa với closure variable.

chức năng

Một loạt các câu lệnh trả về một số giá trị cho người gọi. Nó cũng có thể được truyền 0 hoặc nhiều arguments có thể được sử dụng để thực thi phần thân. Xem thêm phần parameter, methodđịnh nghĩa hàm.

chú thích chức năng

Một annotation của tham số hàm hoặc giá trị trả về.

Chú thích hàm thường được sử dụng cho type hints: ví dụ: hàm này dự kiến ​​sẽ nhận hai đối số int và cũng dự kiến ​​sẽ có giá trị trả về int:

def sum_two_numbers(a: int, b: int) -> int:
   trả về a + b

Cú pháp chú thích hàm được giải thích trong phần định nghĩa hàm.

Xem variable annotationPEP 484 mô tả chức năng này. Đồng thời xem Các phương pháp hay nhất về chú thích để biết các phương pháp hay nhất khi làm việc với chú thích.

__tương lai__

Một future statement, from __future__ import <feature>, chỉ đạo trình biên dịch biên dịch mô-đun hiện tại bằng cách sử dụng cú pháp hoặc ngữ nghĩa sẽ trở thành tiêu chuẩn trong bản phát hành Python trong tương lai. Mô-đun __future__ ghi lại các giá trị có thể có của feature. Bằng cách nhập mô-đun này và đánh giá các biến của nó, bạn có thể biết khi nào một tính năng mới được thêm vào ngôn ngữ lần đầu tiên và khi nào nó sẽ (hoặc đã) trở thành mặc định:

>>> nhập __tương lai__
>>> __tương lai__.phân chia
_Tính năng((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
thu gom rác

Quá trình giải phóng bộ nhớ khi không sử dụng nữa. Python thực hiện thu thập rác thông qua việc đếm tham chiếu và trình thu gom rác theo chu kỳ có khả năng phát hiện và phá vỡ các chu kỳ tham chiếu. Bộ thu gom rác có thể được điều khiển bằng mô-đun gc.

máy phát điện

Một hàm trả về generator iterator. Nó trông giống như một hàm bình thường ngoại trừ việc nó chứa các biểu thức yield để tạo ra một chuỗi các giá trị có thể sử dụng trong vòng lặp for hoặc có thể truy xuất từng giá trị một bằng hàm next().

Thường đề cập đến chức năng tạo, nhưng có thể đề cập đến generator iterator trong một số ngữ cảnh. Trong trường hợp ý nghĩa dự định không rõ ràng, việc sử dụng thuật ngữ đầy đủ sẽ tránh được sự mơ hồ.

trình lặp máy phát điện

Một đối tượng được tạo bởi hàm generator.

Mỗi yield tạm dừng xử lý, ghi nhớ trạng thái thực thi (bao gồm các biến cục bộ và các câu lệnh thử đang chờ xử lý). Khi generator iterator tiếp tục, nó sẽ tiếp tục nơi nó đã dừng lại (ngược lại với các hàm bắt đầu mới sau mỗi lần gọi).

biểu thức máy phát điện

Một expression trả về iterator. Nó trông giống như một biểu thức bình thường, theo sau là mệnh đề for xác định biến vòng lặp, phạm vi và mệnh đề if tùy chọn. Biểu thức kết hợp tạo ra các giá trị cho hàm kèm theo:

>>> sum(i*i for i in range(10)) # sum của các ô vuông 0, 1, 4, ... 81
285
hàm tổng quát

Một hàm bao gồm nhiều hàm thực hiện cùng một thao tác cho các loại khác nhau. Việc triển khai nào sẽ được sử dụng trong cuộc gọi được xác định bởi thuật toán điều phối.

Xem thêm mục nhập thuật ngữ single dispatch, trang trí functools.singledispatch()PEP 443.

loại chung

Một type có thể được tham số hóa; thường là container class như list hoặc dict. Được sử dụng cho type hintsannotations.

Để biết thêm chi tiết, hãy xem generic alias types, PEP 483, PEP 484, PEP 585 và mô-đun typing.

GIL

Xem global interpreter lock.

khóa phiên dịch toàn cầu

Cơ chế được trình thông dịch CPython sử dụng để đảm bảo rằng mỗi lần chỉ có một luồng thực thi Python bytecode. Điều này giúp đơn giản hóa việc triển khai CPython bằng cách làm cho mô hình đối tượng (bao gồm các loại tích hợp quan trọng như dict) hoàn toàn an toàn trước truy cập đồng thời. Việc khóa toàn bộ trình thông dịch giúp trình thông dịch đa luồng dễ dàng hơn, tuy nhiên phải trả giá bằng phần lớn khả năng song song mà các máy đa bộ xử lý cung cấp.

Tuy nhiên, một số mô-đun mở rộng, tiêu chuẩn hoặc bên thứ ba, được thiết kế để giải phóng GIL khi thực hiện các tác vụ tính toán chuyên sâu như nén hoặc băm. Ngoài ra, GIL luôn được giải phóng khi thực hiện I/O.

Kể từ Python 3.13, GIL có thể bị tắt bằng cách sử dụng cấu hình bản dựng --disable-gil. Sau khi xây dựng Python bằng tùy chọn này, mã phải được chạy với -X gil=0 hoặc sau khi đặt biến môi trường PYTHON_GIL=0. Tính năng này cho phép cải thiện hiệu suất cho các ứng dụng đa luồng và giúp sử dụng CPU đa lõi một cách hiệu quả dễ dàng hơn. Để biết thêm chi tiết, xem PEP 703.

Trong các phiên bản trước của C API của Python, một hàm có thể khai báo rằng nó yêu cầu phải giữ GIL để sử dụng nó. Điều này đề cập đến việc có một attached thread state.

trạng thái toàn cầu

Dữ liệu có thể truy cập được trong toàn bộ chương trình, chẳng hạn như biến cấp mô-đun, biến lớp hoặc biến tĩnh C trong extension modules. Trong các chương trình đa luồng, trạng thái chung được chia sẻ giữa các luồng thường yêu cầu đồng bộ hóa để tránh race conditionsdata races.

pyc dựa trên hàm băm

Tệp bộ đệm mã byte sử dụng hàm băm thay vì thời gian sửa đổi lần cuối của tệp nguồn tương ứng để xác định tính hợp lệ của nó. Xem Vô hiệu hóa mã byte được lưu trong bộ nhớ đệm.

có thể băm được

Một đối tượng là hashable nếu nó có giá trị băm không bao giờ thay đổi trong suốt vòng đời của nó (nó cần phương thức __hash__()) và có thể so sánh với các đối tượng khác (nó cần phương thức __eq__()). Các đối tượng có thể băm so sánh bằng nhau phải có cùng giá trị băm.

Khả năng băm làm cho một đối tượng có thể sử dụng được làm khóa từ điển và thành viên tập hợp, vì các cấu trúc dữ liệu này sử dụng giá trị băm bên trong.

Hầu hết các đối tượng tích hợp bất biến của Python đều có thể băm được; các vùng chứa có thể thay đổi (chẳng hạn như danh sách hoặc từ điển) thì không; các vùng chứa bất biến (chẳng hạn như bộ dữ liệu và tập hợp đông lạnh) chỉ có thể băm được nếu các phần tử của chúng có thể băm được. Các đối tượng là phiên bản của các lớp do người dùng định nghĩa có thể băm theo mặc định. Tất cả đều so sánh không bằng nhau (ngoại trừ với chính chúng) và giá trị băm của chúng được lấy từ id() của chúng.

IDLE

Môi trường học tập và phát triển tích hợp cho Python. IDLE --- Trình soạn thảo và shell Python là môi trường biên tập và trình thông dịch cơ bản đi kèm với bản phân phối tiêu chuẩn của Python.

bất tử

Immortal objects là chi tiết triển khai CPython được giới thiệu trong PEP 683.

Nếu một đối tượng là bất tử, reference count của nó sẽ không bao giờ được sửa đổi và do đó nó không bao giờ bị hủy cấp phát trong khi trình thông dịch đang chạy. Ví dụ: TrueNone bất tử trong CPython.

Các vật thể bất tử có thể được xác định thông qua sys._is_immortal() hoặc qua PyUnstable_IsImmortal() trong C API.

bất biến

Một đối tượng có giá trị cố định. Các đối tượng bất biến bao gồm số, chuỗi và bộ dữ liệu. Một đối tượng như vậy không thể bị thay đổi. Một đối tượng mới phải được tạo nếu cần lưu trữ một giá trị khác. Chúng đóng vai trò quan trọng ở những nơi cần giá trị băm không đổi, chẳng hạn như khóa trong từ điển. Các đối tượng bất biến vốn là thread-safe vì trạng thái của chúng không thể sửa đổi sau khi tạo, loại bỏ những lo ngại về việc concurrent modification được đồng bộ hóa không đúng cách.

đường dẫn nhập khẩu

Danh sách các vị trí (hoặc path entries) được path based finder tìm kiếm các mô-đun cần nhập. Trong quá trình nhập, danh sách vị trí này thường đến từ sys.path, nhưng đối với các gói con, nó cũng có thể đến từ thuộc tính __path__ của gói mẹ.

nhập khẩu

Quá trình mã Python trong một mô-đun được cung cấp cho mã Python trong mô-đun khác.

nhà nhập khẩu

Một đối tượng vừa tìm vừa tải một mô-đun; cả đối tượng finderloader.

chỉ số

Một giá trị số đại diện cho vị trí của một phần tử trong sequence.

Trong Python, việc lập chỉ mục bắt đầu từ số 0. Ví dụ: things[0] đặt tên cho phần tử first của things; things[1] đặt tên cho cái thứ hai.

Trong một số ngữ cảnh, Python cho phép lập chỉ mục âm để đếm từ cuối chuỗi và lập chỉ mục bằng slices.

Xem thêm subscript.

tương tác

Python có một trình thông dịch tương tác, nghĩa là bạn có thể nhập các câu lệnh và biểu thức tại dấu nhắc của trình thông dịch, thực thi chúng ngay lập tức và xem kết quả của chúng. Chỉ cần khởi chạy python mà không có đối số (có thể bằng cách chọn nó từ menu chính của máy tính). Đó là một cách rất hiệu quả để thử nghiệm các ý tưởng mới hoặc kiểm tra các mô-đun và gói (hãy nhớ help(x)). Để biết thêm về chế độ tương tác, hãy xem Chế độ tương tác.

thông dịch

Python là một ngôn ngữ được dịch, trái ngược với ngôn ngữ được biên dịch, mặc dù sự khác biệt có thể bị mờ do sự hiện diện của trình biên dịch mã byte. Điều này có nghĩa là các tệp nguồn có thể được chạy trực tiếp mà không cần tạo một tệp thực thi rõ ràng để chạy sau đó. Các ngôn ngữ được phiên dịch thường có chu kỳ phát triển/gỡ lỗi ngắn hơn so với các ngôn ngữ được biên dịch, mặc dù các chương trình của chúng thường chạy chậm hơn. Xem thêm interactive.

tắt thông dịch viên

Khi được yêu cầu tắt, trình thông dịch Python sẽ chuyển sang một giai đoạn đặc biệt, trong đó nó sẽ dần dần giải phóng tất cả các tài nguyên được phân bổ, chẳng hạn như các mô-đun và các cấu trúc quan trọng bên trong khác nhau. Nó cũng thực hiện một số cuộc gọi đến garbage collector. Điều này có thể kích hoạt việc thực thi mã trong các hàm hủy do người dùng xác định hoặc các lệnh gọi lại yếu. Mã được thực thi trong giai đoạn tắt máy có thể gặp phải nhiều trường hợp ngoại lệ khác nhau vì tài nguyên mà nó dựa vào có thể không hoạt động nữa (ví dụ phổ biến là mô-đun thư viện hoặc máy cảnh báo).

Lý do chính khiến trình thông dịch tắt là do mô-đun __main__ hoặc tập lệnh đang chạy đã thực thi xong.

có thể lặp lại

Một đối tượng có khả năng trả lại từng thành viên của nó cùng một lúc. Ví dụ về các lần lặp bao gồm tất cả các loại trình tự (chẳng hạn như list, strtuple) và một số loại không có trình tự như dict, file objects và các đối tượng của bất kỳ lớp nào bạn xác định bằng phương thức __iter__() hoặc với phương thức __getitem__() triển khai ngữ nghĩa sequence.

Iterables có thể được sử dụng trong vòng lặp for và ở nhiều nơi khác cần có trình tự (zip(), map(), ...). Khi một đối tượng có thể lặp được truyền dưới dạng đối số cho hàm dựng sẵn iter(), nó sẽ trả về một trình vòng lặp cho đối tượng đó. Trình vòng lặp này phù hợp cho một lần vượt qua tập hợp các giá trị. Khi sử dụng iterables, thông thường không cần thiết phải gọi iter() hoặc tự mình xử lý các đối tượng iterator. Câu lệnh for tự động thực hiện điều đó cho bạn, tạo một biến không tên tạm thời để giữ trình vòng lặp trong suốt thời gian của vòng lặp. Xem thêm iterator, sequencegenerator.

trình vòng lặp

Một đối tượng đại diện cho một luồng dữ liệu. Các lệnh gọi lặp lại đến phương thức __next__() của iterator (hoặc chuyển nó tới hàm next() tích hợp sẵn) sẽ trả về các mục liên tiếp trong luồng. Thay vào đó, khi không còn dữ liệu nữa, ngoại lệ StopIteration sẽ được đưa ra. Tại thời điểm này, đối tượng iterator đã hết và bất kỳ lệnh gọi nào tới phương thức __next__() của nó chỉ cần tăng lại StopIteration. Các trình vòng lặp bắt buộc phải có phương thức __iter__() trả về chính đối tượng vòng lặp để mọi trình vòng lặp cũng có thể lặp được và có thể được sử dụng ở hầu hết các nơi chấp nhận các vòng lặp khác. Một ngoại lệ đáng chú ý là mã cố gắng thực hiện nhiều lần lặp lại. Đối tượng vùng chứa (chẳng hạn như list) tạo ra một trình vòng lặp mới mỗi khi bạn chuyển nó sang hàm iter() hoặc sử dụng nó trong vòng lặp for. Việc thử thực hiện điều này bằng một trình lặp sẽ chỉ trả về cùng một đối tượng trình vòng lặp đã cạn kiệt được sử dụng trong lần lặp trước đó, làm cho nó trông giống như một thùng chứa trống.

Thông tin thêm có thể được tìm thấy trong Các loại vòng lặp.

CPython không áp dụng nhất quán yêu cầu mà trình vòng lặp xác định __iter__(). Và cũng xin lưu ý rằng free-threaded CPython không đảm bảo hành vi thread-safe của các hoạt động lặp.

chìa khóa

Một giá trị xác định một mục trong mapping. Xem thêm subscript.

chức năng chính

Hàm khóa hoặc hàm đối chiếu là hàm có thể gọi được và trả về giá trị được sử dụng để sắp xếp hoặc sắp xếp. Ví dụ: locale.strxfrm() được sử dụng để tạo khóa sắp xếp nhận biết các quy ước sắp xếp cụ thể theo miền địa phương.

Một số công cụ trong Python chấp nhận các hàm chính để kiểm soát cách sắp xếp hoặc nhóm các phần tử. Chúng bao gồm min(), max(), sorted(), list.sort(), heapq.merge(), heapq.nsmallest(), heapq.nlargest()itertools.groupby().

Có một số cách để tạo một chức năng chính. Ví dụ. phương thức str.casefold() có thể đóng vai trò là chức năng chính cho các loại không phân biệt chữ hoa chữ thường. Ngoài ra, một hàm khóa có thể được xây dựng từ biểu thức lambda chẳng hạn như lambda r: (r[0], r[2]). Ngoài ra, operator.attrgetter(), operator.itemgetter()operator.methodcaller() là ba hàm tạo hàm chính. Xem Sorting HOW TO để biết ví dụ về cách tạo và sử dụng các chức năng chính.

đối số từ khóa

Xem argument.

lambda

Một hàm nội tuyến ẩn danh bao gồm một expression duy nhất được đánh giá khi hàm được gọi. Cú pháp để tạo hàm lambda là lambda [parameters]: expression

LBYL

Hãy quan sát trước khi bạn nhảy. Kiểu mã hóa này kiểm tra rõ ràng các điều kiện trước khi thực hiện lệnh gọi hoặc tra cứu. Phong cách này trái ngược với cách tiếp cận EAFP và được đặc trưng bởi sự hiện diện của nhiều câu lệnh if.

Trong môi trường đa luồng, cách tiếp cận LBYL có thể có nguy cơ tạo ra race condition giữa "nhìn" và "nhảy". Ví dụ: mã if key in mapping: return mapping[key] có thể bị lỗi nếu một luồng khác loại bỏ key khỏi mapping sau khi kiểm tra nhưng trước khi tra cứu. Vấn đề này có thể được giải quyết bằng locks hoặc bằng cách sử dụng phương pháp EAFP. Xem thêm thread-safe.

máy phân tích từ vựng

Tên chính thức của tokenizer; xem token.

danh sách

Python sequence tích hợp sẵn. Bất chấp tên gọi của nó, nó giống với một mảng trong các ngôn ngữ khác hơn là một danh sách được liên kết vì quyền truy cập vào các phần tử là O(1).

hiểu danh sách

Một cách nhỏ gọn để xử lý tất cả hoặc một phần các phần tử trong một chuỗi và trả về danh sách kèm theo kết quả. result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] tạo danh sách các chuỗi chứa số hex chẵn (0x..) trong phạm vi từ 0 đến 255. Mệnh đề if là tùy chọn. Nếu bị bỏ qua, tất cả các phần tử trong range(256) đều được xử lý.

khóa

Zz000zz chỉ cho phép một luồng tại một thời điểm truy cập vào tài nguyên được chia sẻ. Một luồng phải có được một khóa trước khi truy cập vào tài nguyên được bảo vệ và giải phóng nó sau đó. Nếu một luồng cố gắng lấy một khóa đã được giữ bởi một luồng khác, nó sẽ chặn cho đến khi có khóa. Mô-đun threading của Python cung cấp Lock (khóa cơ bản) và RLock (khóa reentrant). Khóa được sử dụng để ngăn chặn race conditions và đảm bảo thread-safe truy cập vào dữ liệu được chia sẻ. Các mẫu thiết kế thay thế cho các khóa tồn tại như hàng đợi, mẫu nhà sản xuất/người tiêu dùng và trạng thái luồng cục bộ. Xem thêm deadlockreentrant.

không khóa

Một thao tác không thu được bất kỳ lock nào và sử dụng các lệnh CPU nguyên tử để đảm bảo tính chính xác. Các thao tác không khóa có thể thực thi đồng thời mà không chặn lẫn nhau và không thể bị chặn bởi các thao tác giữ khóa. Trong free-threaded Python, các loại tích hợp sẵn như dictlist cung cấp các thao tác đọc không khóa, nghĩa là các luồng khác có thể quan sát các trạng thái trung gian trong quá trình sửa đổi nhiều bước ngay cả khi những sửa đổi đó giữ per-object lock.

người nạp đạn

Một đối tượng tải một mô-đun. Nó phải xác định các phương thức exec_module()create_module() để triển khai giao diện Loader. Trình tải thường được trả về bằng finder. Xem thêm:

mã hóa miền địa phương

Trên Unix, đó là mã hóa của ngôn ngữ LC_CTYPE. Nó có thể được thiết lập với locale.setlocale(locale.LC_CTYPE, new_locale).

Trên Windows là trang mã ANSI (ví dụ: "cp1252").

Trên Android và VxWorks, Python sử dụng "utf-8" làm mã hóa ngôn ngữ.

locale.getencoding() có thể được sử dụng để lấy mã hóa miền địa phương.

Xem thêm filesystem encoding and error handler.

phương pháp kỳ diệu

Một từ đồng nghĩa không chính thức cho special method.

lập bản đồ

Đối tượng vùng chứa hỗ trợ tra cứu khóa tùy ý và triển khai các phương thức được chỉ định trong collections.abc.Mapping hoặc collections.abc.MutableMapping abstract base classes. Ví dụ bao gồm dict, collections.defaultdict, collections.OrderedDictcollections.Counter.

công cụ tìm đường dẫn meta

Một finder được trả về khi tìm kiếm sys.meta_path. Công cụ tìm đường dẫn meta có liên quan nhưng khác với path entry finders.

Xem importlib.abc.MetaPathFinder để biết các phương pháp mà trình tìm đường dẫn meta triển khai.

siêu lớp

Lớp của một lớp. Các định nghĩa lớp tạo ra tên lớp, từ điển lớp và danh sách các lớp cơ sở. Siêu dữ liệu chịu trách nhiệm lấy ba đối số đó và tạo lớp. Hầu hết các ngôn ngữ lập trình hướng đối tượng đều cung cấp cách triển khai mặc định. Điều làm cho Python trở nên đặc biệt là nó có thể tạo các siêu dữ liệu tùy chỉnh. Hầu hết người dùng không bao giờ cần đến công cụ này, nhưng khi có nhu cầu, siêu dữ liệu có thể cung cấp các giải pháp mạnh mẽ và tinh tế. Chúng đã được sử dụng để ghi lại quyền truy cập thuộc tính, thêm tính năng an toàn cho luồng, theo dõi việc tạo đối tượng, triển khai các singleton và nhiều tác vụ khác.

Thông tin thêm có thể được tìm thấy trong Siêu lớp.

phương pháp

Một hàm được định nghĩa bên trong thân lớp. Nếu được gọi như một thuộc tính của một thể hiện của lớp đó, phương thức sẽ lấy đối tượng thể hiện là argument đầu tiên của nó (thường được gọi là self). Xem functionnested scope.

thứ tự giải quyết phương pháp

Thứ tự phân giải phương thức là thứ tự các lớp cơ sở được tìm kiếm thành viên trong quá trình tra cứu. Xem Thứ tự phân giải phương thức Python 2.3 để biết chi tiết về thuật toán được trình thông dịch Python sử dụng kể từ bản phát hành 2.3.

mô-đun

Một đối tượng đóng vai trò là đơn vị tổ chức của mã Python. Các mô-đun có một không gian tên chứa các đối tượng Python tùy ý. Các mô-đun được tải vào Python bằng quy trình importing.

Xem thêm package.

thông số mô-đun

Một không gian tên chứa thông tin liên quan đến nhập được sử dụng để tải mô-đun. Một phiên bản của importlib.machinery.ModuleSpec.

Xem thêm Thông số mô-đun.

MRO

Xem method resolution order.

có thể thay đổi

Một object có trạng thái được phép thay đổi trong suốt quá trình của chương trình. Trong các chương trình đa luồng, các đối tượng có thể thay đổi được chia sẻ giữa các luồng yêu cầu đồng bộ hóa cẩn thận để tránh race conditions. Xem thêm immutable, thread-safeconcurrent modification.

tên tuple

Thuật ngữ "bộ dữ liệu có tên" áp dụng cho bất kỳ loại hoặc lớp nào kế thừa từ bộ dữ liệu và các phần tử có thể lập chỉ mục của nó cũng có thể truy cập được bằng cách sử dụng các thuộc tính được đặt tên. Loại hoặc lớp cũng có thể có các tính năng khác.

Một số kiểu dựng sẵn được đặt tên là bộ dữ liệu, bao gồm các giá trị được trả về bởi time.localtime()os.stat(). Một ví dụ khác là sys.float_info:

>>> truy cập sys.float_info[1] # indexed
1024
>>> truy cập trường sys.float_info.max_exp # named
1024
>>> isinstance(sys.float_info, tuple) # kind của tuple
đúng

Một số bộ dữ liệu được đặt tên là các loại có sẵn (chẳng hạn như các ví dụ trên). Ngoài ra, một bộ dữ liệu có tên có thể được tạo từ một định nghĩa lớp thông thường kế thừa từ tuple và định nghĩa các trường được đặt tên. Một lớp như vậy có thể được viết bằng tay hoặc có thể được tạo bằng cách kế thừa typing.NamedTuple hoặc bằng hàm xuất xưởng collections.namedtuple(). Các kỹ thuật sau cũng bổ sung thêm một số phương thức bổ sung có thể không tìm thấy trong các bộ dữ liệu có tên viết tay hoặc tích hợp sẵn.

không gian tên

Nơi lưu trữ một biến. Không gian tên được triển khai dưới dạng từ điển. Có các không gian tên cục bộ, toàn cầu và tích hợp cũng như các không gian tên lồng nhau trong các đối tượng (trong các phương thức). Không gian tên hỗ trợ tính mô-đun bằng cách ngăn chặn xung đột đặt tên. Ví dụ: các hàm builtins.openos.open() được phân biệt bởi không gian tên của chúng. Không gian tên cũng hỗ trợ khả năng đọc và bảo trì bằng cách làm rõ mô-đun nào thực hiện chức năng. Ví dụ: việc viết random.seed() hoặc itertools.islice() sẽ làm rõ rằng các chức năng đó được triển khai bởi các mô-đun randomitertools tương ứng.

gói không gian tên

Một package chỉ đóng vai trò là nơi chứa các gói con. Các gói không gian tên có thể không có biểu diễn vật lý và đặc biệt không giống regular package vì chúng không có tệp __init__.py.

Các gói không gian tên cho phép một số gói có thể cài đặt riêng lẻ có gói cha chung. Nếu không, bạn nên sử dụng regular package.

Để biết thêm thông tin, hãy xem PEP 420Gói không gian tên.

Xem thêm module.

mã gốc

Mã được biên dịch theo hướng dẫn của máy và chạy trực tiếp trên bộ xử lý, trái ngược với mã được diễn giải hoặc chạy trong máy ảo. Trong ngữ cảnh của Python, mã gốc thường đề cập đến mã C, C++, Rust hoặc Fortran trong extension modules có thể được gọi từ Python. Xem thêm extension module.

phạm vi lồng nhau

Khả năng tham chiếu đến một biến trong định nghĩa kèm theo. Ví dụ: một hàm được xác định bên trong một hàm khác có thể tham chiếu đến các biến ở hàm bên ngoài. Lưu ý rằng theo mặc định, phạm vi lồng nhau chỉ hoạt động với mục đích tham khảo chứ không dùng để gán. Các biến cục bộ đều đọc và ghi ở phạm vi trong cùng. Tương tự như vậy, các biến toàn cục đọc và ghi vào không gian tên toàn cục. Zz000zz cho phép ghi vào phạm vi bên ngoài.

lớp học kiểu mới

Tên cũ cho hương vị của các lớp hiện được sử dụng cho tất cả các đối tượng của lớp. Trong các phiên bản Python trước đó, chỉ các lớp kiểu mới mới có thể sử dụng các tính năng linh hoạt, mới hơn của Python như __slots__, bộ mô tả, thuộc tính, __getattribute__(), phương thức lớp và phương thức tĩnh.

không xác định

Hành vi trong đó kết quả của một chương trình có thể khác nhau giữa các lần thực thi với cùng một đầu vào. Trong các chương trình đa luồng, hành vi không xác định thường là kết quả của race conditions trong đó thời gian tương đối hoặc sự xen kẽ của các luồng ảnh hưởng đến kết quả. Đồng bộ hóa đúng cách bằng lockssynchronization primitives khác giúp đảm bảo hành vi xác định.

vật thể

Bất kỳ dữ liệu nào có trạng thái (thuộc tính hoặc giá trị) và hành vi được xác định (phương thức). Cũng là lớp cơ bản cuối cùng của bất kỳ new-style class nào.

phạm vi tối ưu hóa

Một phạm vi trong đó trình biên dịch biết tên biến cục bộ một cách đáng tin cậy khi mã được biên dịch, cho phép tối ưu hóa quyền truy cập đọc và ghi vào các tên này. Các không gian tên cục bộ cho các hàm, trình tạo, coroutine, phần hiểu và biểu thức trình tạo được tối ưu hóa theo cách này. Lưu ý: hầu hết các tối ưu hóa trình thông dịch được áp dụng cho tất cả các phạm vi, chỉ những hoạt động dựa trên một tập hợp tên biến cục bộ và không cục bộ đã biết mới bị giới hạn trong phạm vi được tối ưu hóa.

mô-đun tùy chọn

Một extension module là một phần của standard library nhưng có thể không có trong một số bản dựng của CPython, thường là do thiếu thư viện của bên thứ ba hoặc do mô-đun không có sẵn cho một nền tảng nhất định.

Xem Yêu cầu đối với các mô-đun tùy chọn để biết danh sách các mô-đun tùy chọn yêu cầu thư viện của bên thứ ba.

gói

Một module Python có thể chứa các mô-đun con hoặc các gói con đệ quy. Về mặt kỹ thuật, gói là mô-đun Python có thuộc tính __path__.

Xem thêm regular packagenamespace package.

sự song hành

Thực hiện nhiều thao tác cùng lúc (ví dụ: trên nhiều lõi CPU). Trong các bản dựng Python với global interpreter lock (GIL), mỗi lần chỉ có một luồng chạy mã byte Python, do đó, việc tận dụng nhiều lõi CPU thường liên quan đến nhiều quy trình (ví dụ: multiprocessing) hoặc các tiện ích mở rộng gốc giải phóng GIL. Trong free-threaded Python, nhiều luồng Python có thể chạy mã Python đồng thời trên các lõi khác nhau.

tham số

Một thực thể được đặt tên trong định nghĩa function (hoặc phương thức) chỉ định argument (hoặc trong một số trường hợp là đối số) mà hàm có thể chấp nhận. Có năm loại tham số:

  • positional-or-keyword: chỉ định một đối số có thể được chuyển qua positionally hoặc dưới dạng keyword argument. Đây là loại tham số mặc định, ví dụ foobar sau đây:

    def func(foo, bar=None): ...
    
  • positional-only: chỉ định một đối số chỉ có thể được cung cấp theo vị trí. Các tham số chỉ có vị trí có thể được xác định bằng cách bao gồm ký tự / trong danh sách tham số của định nghĩa hàm sau chúng, ví dụ: posonly1posonly2 trong phần sau:

    def func(posonly1, posonly2, /,positional_or_keyword): ...
    
  • keyword-only: chỉ định một đối số chỉ có thể được cung cấp theo từ khóa. Các tham số chỉ từ khóa có thể được xác định bằng cách bao gồm một tham số var-positional hoặc * trần trong danh sách tham số của định nghĩa hàm trước chúng, ví dụ: kw_only1kw_only2 trong phần sau:

    def func(arg, *, kw_only1, kw_only2): ...
    
  • var-positional: chỉ định rằng có thể cung cấp một chuỗi đối số vị trí tùy ý (ngoài bất kỳ đối số vị trí nào đã được các tham số khác chấp nhận). Một tham số như vậy có thể được xác định bằng cách thêm * vào trước tên tham số, ví dụ: args trong phần sau:

    def func(*args, **kwargs): ...
    
  • var-keyword: chỉ định rằng có thể cung cấp nhiều đối số từ khóa tùy ý (ngoài bất kỳ đối số từ khóa nào đã được các tham số khác chấp nhận). Một tham số như vậy có thể được xác định bằng cách thêm ** vào trước tên tham số, ví dụ kwargs trong ví dụ trên.

Các tham số có thể chỉ định cả đối số tùy chọn và bắt buộc, cũng như các giá trị mặc định cho một số đối số tùy chọn.

Xem thêm mục nhập thuật ngữ argument, câu hỏi FAQ trên the difference between arguments and parameters, lớp inspect.Parameter, phần định nghĩa hàmPEP 362.

khóa từng đối tượng

Một lock được liên kết với một phiên bản đối tượng riêng lẻ thay vì khóa chung được chia sẻ trên tất cả các đối tượng. Trong free-threaded Python, các loại tích hợp như dictlist sử dụng khóa từng đối tượng để cho phép các hoạt động đồng thời trên các đối tượng khác nhau trong khi tuần tự hóa các hoạt động trên cùng một đối tượng. Các thao tác giữ khóa trên mỗi đối tượng sẽ ngăn các thao tác khóa khác trên cùng một đối tượng được tiến hành, nhưng không chặn các thao tác lock-free.

lối vào đường dẫn

Một vị trí duy nhất trên import pathpath based finder tư vấn để tìm mô-đun để nhập.

công cụ tìm đường dẫn

Một finder được trả về bởi một lệnh gọi được trên sys.path_hooks (tức là path entry hook) biết cách định vị các mô-đun được cung cấp cho path entry.

Xem importlib.abc.PathEntryFinder để biết các phương thức mà trình tìm mục nhập đường dẫn triển khai.

móc nhập đường dẫn

Một lệnh có thể gọi được trong danh sách sys.path_hooks sẽ trả về path entry finder nếu nó biết cách tìm các mô-đun trên một path entry cụ thể.

công cụ tìm kiếm dựa trên đường dẫn

Một trong những meta path finders mặc định tìm kiếm import path cho các mô-đun.

đối tượng giống như đường dẫn

Một đối tượng đại diện cho đường dẫn hệ thống tập tin. Đối tượng giống đường dẫn là đối tượng str hoặc bytes đại diện cho một đường dẫn hoặc đối tượng triển khai giao thức os.PathLike. Một đối tượng hỗ trợ giao thức os.PathLike có thể được chuyển đổi thành đường dẫn hệ thống tệp str hoặc bytes bằng cách gọi hàm os.fspath(); Thay vào đó, os.fsdecode()os.fsencode() có thể được sử dụng để đảm bảo kết quả str hoặc bytes. Được giới thiệu bởi PEP 519.

PEP

Đề xuất cải tiến Python. Zz000zz là tài liệu thiết kế cung cấp thông tin cho cộng đồng Python hoặc mô tả một tính năng mới cho Python hoặc các quy trình hoặc môi trường của nó. PEP phải cung cấp thông số kỹ thuật ngắn gọn và lý do căn bản cho các tính năng được đề xuất.

PEP được dự định là cơ chế chính để đề xuất các tính năng mới quan trọng, để thu thập ý kiến đóng góp của cộng đồng về một vấn đề và ghi lại các quyết định thiết kế đã được đưa vào Python. Tác giả PEP chịu trách nhiệm xây dựng sự đồng thuận trong cộng đồng và ghi lại những ý kiến ​​bất đồng.

Xem PEP 1.

phần

Một tập hợp các tệp trong một thư mục (có thể được lưu trữ trong tệp zip) đóng góp vào gói không gian tên, như được định nghĩa trong PEP 420.

đối số vị trí

Xem argument.

tạm thời API

Zz000zz tạm thời là một cái đã được cố tình loại trừ khỏi các đảm bảo tương thích ngược của thư viện tiêu chuẩn. Mặc dù không mong đợi những thay đổi lớn đối với các giao diện như vậy, miễn là chúng được đánh dấu là tạm thời, những thay đổi không tương thích ngược (lên đến và bao gồm cả việc loại bỏ giao diện) có thể xảy ra nếu các nhà phát triển cốt lõi thấy cần thiết. Những thay đổi như vậy sẽ không được thực hiện một cách vô cớ -- chúng sẽ chỉ xảy ra nếu các sai sót cơ bản nghiêm trọng bị phát hiện đã bị bỏ sót trước khi đưa API vào.

Ngay cả đối với các API tạm thời, những thay đổi không tương thích ngược được coi là "giải pháp cuối cùng" - mọi nỗ lực sẽ vẫn được thực hiện để tìm giải pháp tương thích ngược cho bất kỳ vấn đề nào đã xác định.

Quá trình này cho phép thư viện tiêu chuẩn tiếp tục phát triển theo thời gian mà không mắc phải các lỗi thiết kế có vấn đề trong thời gian dài. Xem PEP 411 để biết thêm chi tiết.

gói tạm thời

Xem provisional API.

Python 3000

Biệt hiệu cho dòng phát hành Python 3.x (được đặt ra từ lâu khi việc phát hành phiên bản 3 là một điều gì đó trong tương lai xa.) Đây cũng được viết tắt là "Py3k".

Pythonic

Một ý tưởng hoặc đoạn mã bám sát các thành ngữ phổ biến nhất của ngôn ngữ Python, thay vì triển khai mã bằng cách sử dụng các khái niệm chung cho các ngôn ngữ khác. Ví dụ: một thành ngữ phổ biến trong Python là lặp qua tất cả các phần tử của một iterable bằng cách sử dụng câu lệnh for. Nhiều ngôn ngữ khác không có kiểu cấu trúc này, vì vậy những người không quen với Python đôi khi sử dụng bộ đếm số thay thế:

cho tôi trong phạm vi(len(thức ăn)):
    in(thực phẩm[i])

Ngược lại với trình dọn dẹp, phương thức Pythonic:

cho miếng trong thực phẩm:
    bản in (mảnh)
tên đủ điều kiện

Tên có dấu chấm hiển thị "đường dẫn" từ phạm vi toàn cục của mô-đun đến lớp, hàm hoặc phương thức được xác định trong mô-đun đó, như được định nghĩa trong PEP 3155. Đối với các hàm và lớp cấp cao nhất, tên đủ điều kiện giống với tên của đối tượng:

>>> lớp C:
... lớp D:
... def meth(tự):
... vượt qua
...
>>> C.__qualname__
'C'
>>> C.D.__qualname__
'CD'
>>> C.D.meth.__qualname__
'C.D.meth'

Khi được sử dụng để chỉ các mô-đun, fully qualified name có nghĩa là toàn bộ đường dẫn có dấu chấm đến mô-đun, bao gồm mọi gói chính, ví dụ: email.mime.text:

>>> nhập email.mime.text
>>> email.mime.text.__name__
'email.mime.text'
điều kiện cuộc đua

Một điều kiện của một chương trình trong đó hành vi phụ thuộc vào thời gian hoặc thứ tự tương đối của các sự kiện, đặc biệt là trong các chương trình đa luồng. Điều kiện đua có thể dẫn đến hành vi non-deterministic và các lỗi khó tái tạo. Zz001zz là một loại tình trạng dồn đuổi cụ thể liên quan đến quyền truy cập không đồng bộ vào bộ nhớ dùng chung. Kiểu mã hóa LBYL đặc biệt dễ bị ảnh hưởng bởi các điều kiện chạy đua trong mã đa luồng. Sử dụng lockssynchronization primitives khác giúp ngăn ngừa tình trạng chạy đua.

số lượng tham chiếu

Số lượng tham chiếu đến một đối tượng. Khi số lượng tham chiếu của một đối tượng giảm xuống 0, nó sẽ bị hủy phân bổ. Một số đối tượng là immortal và có số lượng tham chiếu không bao giờ được sửa đổi và do đó các đối tượng không bao giờ bị hủy phân bổ. Việc đếm tham chiếu thường không hiển thị đối với mã Python, nhưng nó là thành phần chính của quá trình triển khai CPython. Lập trình viên có thể gọi hàm sys.getrefcount() để trả về số tham chiếu cho một đối tượng cụ thể.

Trong CPython, số lượng tham chiếu không được coi là giá trị ổn định hoặc được xác định rõ ràng; số lượng tham chiếu đến một đối tượng và mức độ ảnh hưởng của con số đó bởi mã Python có thể khác nhau giữa các phiên bản.

gói thông thường

Một package truyền thống, chẳng hạn như một thư mục chứa tệp __init__.py.

Xem thêm namespace package.

người quay trở lại

Thuộc tính của một hàm hoặc lock cho phép nó được gọi hoặc thu được nhiều lần bởi cùng một luồng mà không gây ra lỗi hoặc deadlock.

Đối với các hàm, việc đăng nhập lại có nghĩa là hàm có thể được gọi lại một cách an toàn trước khi lệnh gọi trước đó hoàn thành, điều này rất quan trọng khi các hàm có thể được gọi đệ quy hoặc từ trình xử lý tín hiệu. Các hàm không an toàn theo luồng có thể là non-deterministic nếu chúng được gọi lại trong một chương trình đa luồng.

Đối với các khóa, threading.RLock (khóa đăng nhập lại) của Python được cấp lại, nghĩa là một luồng đã giữ khóa có thể lấy lại khóa đó mà không bị chặn. Ngược lại, threading.Lock không được đăng nhập lại - cố gắng lấy nó hai lần từ cùng một chuỗi sẽ gây ra bế tắc.

Xem thêm lockdeadlock.

REPL

Một từ viết tắt của "vòng lặp đọc-eval-in", một tên khác của trình thông dịch interactive.

__khe__

Một khai báo bên trong một lớp giúp tiết kiệm bộ nhớ bằng cách khai báo trước khoảng trống cho các thuộc tính của đối tượng và loại bỏ các từ điển đối tượng. Mặc dù phổ biến nhưng kỹ thuật này hơi khó thực hiện đúng và chỉ dành riêng cho những trường hợp hiếm hoi khi có số lượng lớn phiên bản trong một ứng dụng quan trọng về bộ nhớ.

trình tự

Một iterable hỗ trợ truy cập phần tử hiệu quả bằng cách sử dụng các chỉ số nguyên thông qua phương thức đặc biệt __getitem__() và xác định phương thức __len__() trả về độ dài của chuỗi. Một số loại trình tự tích hợp là list, str, tuplebytes. Lưu ý rằng dict cũng hỗ trợ __getitem__()__len__(), nhưng được coi là ánh xạ chứ không phải là một chuỗi vì việc tra cứu sử dụng các khóa hashable tùy ý thay vì số nguyên.

Lớp cơ sở trừu tượng collections.abc.Sequence xác định một giao diện phong phú hơn nhiều ngoài __getitem__()__len__(), thêm count(), index(), __contains__()__reversed__(). Các loại triển khai giao diện mở rộng này có thể được đăng ký rõ ràng bằng register(). Để biết thêm tài liệu về các phương pháp trình tự nói chung, hãy xem Common Sequence Operations.

thiết lập sự hiểu biết

Một cách nhỏ gọn để xử lý tất cả hoặc một phần các phần tử trong một lần lặp và trả về một tập hợp có kết quả. results = {c for c in 'abracadabra' if c not in 'abc'} tạo tập hợp các chuỗi {'r', 'd'}. Xem Hiển thị danh sách, bộ và từ điển.

công văn duy nhất

Một dạng gửi generic function trong đó việc triển khai được chọn dựa trên loại đối số duy nhất.

lát

Một đối tượng thuộc loại slice, được sử dụng để mô tả một phần của sequence. Một đối tượng lát cắt được tạo khi sử dụng dạng slicing của subscript notation, với dấu hai chấm bên trong dấu ngoặc vuông, chẳng hạn như trong variable_name[1:3:5].

phần mềm không được dùng nữa

Không nên sử dụng API mềm không được dùng nữa trong mã mới, nhưng mã hiện có sẽ an toàn khi sử dụng mã đó. Zz001zz vẫn được ghi lại và thử nghiệm nhưng sẽ không được cải tiến thêm.

Việc ngừng sử dụng mềm, không giống như việc ngừng sử dụng thông thường, không có kế hoạch loại bỏ API và sẽ không đưa ra cảnh báo.

Xem PEP 387: Soft Deprecation.

phương pháp đặc biệt

Một phương thức được Python gọi ngầm để thực hiện một thao tác nhất định trên một kiểu, chẳng hạn như phép cộng. Các phương thức như vậy có tên bắt đầu và kết thúc bằng dấu gạch dưới kép. Các phương pháp đặc biệt được ghi lại trong Tên phương thức đặc biệt.

thư viện chuẩn

Bộ sưu tập packages, modulesextension modules được phân phối như một phần của gói trình thông dịch Python chính thức. Tư cách thành viên chính xác của bộ sưu tập có thể thay đổi dựa trên nền tảng, thư viện hệ thống có sẵn hoặc các tiêu chí khác. Tài liệu có thể được tìm thấy tại Thư viện chuẩn Python.

Xem thêm sys.stdlib_module_names để biết danh sách tất cả các tên mô-đun thư viện tiêu chuẩn có thể có.

tuyên bố

Câu lệnh là một phần của bộ (một "khối" mã). Một câu lệnh là một expression hoặc một trong nhiều cấu trúc có từ khóa, chẳng hạn như if, while hoặc for.

kiểm tra kiểu tĩnh

Một công cụ bên ngoài đọc mã Python và phân tích nó, tìm kiếm các vấn đề như loại không chính xác. Xem thêm type hints và mô-đun typing.

stdlib

Viết tắt của standard library.

tài liệu tham khảo mạnh mẽ

Trong C API của Python, một tham chiếu mạnh là một tham chiếu đến một đối tượng được sở hữu bởi mã chứa tham chiếu. Tham chiếu mạnh được thực hiện bằng cách gọi Py_INCREF() khi tham chiếu được tạo và giải phóng bằng Py_DECREF() khi tham chiếu bị xóa.

Hàm Py_NewRef() có thể được sử dụng để tạo tham chiếu mạnh đến một đối tượng. Thông thường, hàm Py_DECREF() phải được gọi trên tham chiếu mạnh trước khi thoát khỏi phạm vi tham chiếu mạnh, để tránh rò rỉ một tham chiếu.

Xem thêm borrowed reference.

chỉ số dưới

Biểu thức trong ngoặc vuông của subscription expression, ví dụ: 3 trong items[3]. Thường được sử dụng để chọn một phần tử của vùng chứa. Còn được gọi là key khi đăng ký mapping hoặc index khi đăng ký sequence.

đồng bộ hóa nguyên thủy

Một khối xây dựng cơ bản để điều phối (đồng bộ hóa) việc thực thi nhiều luồng nhằm đảm bảo thread-safe truy cập vào các tài nguyên được chia sẻ. Mô-đun threading của Python cung cấp một số nguyên tắc đồng bộ hóa cơ bản bao gồm Lock, RLock, Semaphore, Condition, EventBarrier. Ngoài ra, mô-đun queue cung cấp hàng đợi nhiều nhà sản xuất, nhiều người tiêu dùng, đặc biệt hữu ích trong các chương trình đa luồng. Những nguyên hàm này giúp ngăn chặn race conditions và điều phối việc thực thi luồng. Xem thêm lock.

dây chữ T
dây chữ T

Các chuỗi ký tự có tiền tố t hoặc T thường được gọi là "chuỗi t" viết tắt của template string literals.

mã hóa văn bản

Chuỗi trong Python là một chuỗi các điểm mã Unicode (trong phạm vi U+0000--U+10FFFF). Để lưu trữ hoặc truyền một chuỗi, nó cần được tuần tự hóa thành một chuỗi byte.

Việc tuần tự hóa một chuỗi thành một chuỗi byte được gọi là "mã hóa" và việc tạo lại chuỗi từ chuỗi byte được gọi là "giải mã".

Có nhiều loại codecs tuần tự hóa văn bản khác nhau, được gọi chung là "mã hóa văn bản".

tập tin văn bản

Một file object có thể đọc và ghi các đối tượng str. Thông thường, một tệp văn bản thực sự truy cập vào luồng dữ liệu hướng byte và tự động xử lý text encoding. Ví dụ về tệp văn bản là các tệp được mở ở chế độ văn bản ('r' hoặc 'w'), sys.stdin, sys.stdout và các phiên bản của io.StringIO.

Xem thêm binary file để biết đối tượng tệp có thể đọc và ghi bytes-like objects.

trạng thái chủ đề

Thông tin được thời gian chạy CPython sử dụng để chạy trong luồng hệ điều hành. Ví dụ: điều này bao gồm ngoại lệ hiện tại, nếu có và trạng thái của trình thông dịch mã byte.

Mỗi trạng thái luồng được liên kết với một luồng hệ điều hành duy nhất, nhưng các luồng có thể có sẵn nhiều trạng thái luồng. Nhiều nhất, một trong số chúng có thể là attached cùng một lúc.

Cần có một attached thread state để gọi hầu hết C API của Python, trừ khi một hàm ghi lại rõ ràng cách khác. Trình thông dịch mã byte chỉ chạy ở trạng thái luồng được đính kèm.

Mỗi trạng thái luồng thuộc về một trình thông dịch duy nhất, nhưng mỗi trình thông dịch có thể có nhiều trạng thái luồng, bao gồm nhiều trạng thái cho cùng một luồng hệ điều hành. Trạng thái luồng từ nhiều trình thông dịch có thể được liên kết với cùng một luồng, nhưng chỉ một trạng thái có thể là attached trong luồng đó tại bất kỳ thời điểm nào.

Xem Thread State and the Global Interpreter Lock để biết thêm thông tin.

an toàn theo chủ đề

Một mô-đun, hàm hoặc lớp hoạt động chính xác khi được nhiều luồng sử dụng đồng thời. Mã an toàn luồng sử dụng synchronization primitives thích hợp như locks để bảo vệ trạng thái có thể thay đổi được chia sẻ hoặc được thiết kế để tránh hoàn toàn trạng thái có thể thay đổi được chia sẻ. Trong bản dựng free-threaded, các loại tích hợp sẵn như dict, listset sử dụng khóa bên trong để giúp nhiều thao tác trở nên an toàn theo luồng, mặc dù độ an toàn của luồng không nhất thiết phải được đảm bảo. Mã không an toàn cho luồng có thể gặp phải race conditionsdata races khi được sử dụng trong các chương trình đa luồng.

mã thông báo

Một đơn vị mã nguồn nhỏ, được tạo bởi lexical analyzer (còn gọi là tokenizer). Tên, số, chuỗi, toán tử, dòng mới và những thứ tương tự được biểu thị bằng mã thông báo.

Mô-đun tokenize hiển thị bộ phân tích từ vựng của Python. Mô-đun token chứa thông tin về các loại mã thông báo khác nhau.

chuỗi trích dẫn ba lần

Một chuỗi được giới hạn bởi ba trường hợp của dấu ngoặc kép (") hoặc dấu nháy đơn ('). Mặc dù chúng không cung cấp bất kỳ chức năng nào không có sẵn với chuỗi trích dẫn đơn nhưng chúng rất hữu ích vì một số lý do. Chúng cho phép bạn bao gồm dấu ngoặc đơn và dấu nháy kép không thoát trong một chuỗi và chúng có thể trải dài trên nhiều dòng mà không cần sử dụng ký tự tiếp nối, khiến chúng đặc biệt hữu ích khi viết chuỗi tài liệu.

loại

Loại đối tượng Python xác định loại đối tượng đó; mỗi đối tượng có một loại. Loại của một đối tượng có thể được truy cập dưới dạng thuộc tính __class__ của nó hoặc có thể được truy xuất bằng type(obj).

gõ bí danh

Từ đồng nghĩa với một loại, được tạo bằng cách gán loại đó cho một mã định danh.

Bí danh loại rất hữu ích để đơn giản hóa type hints. Ví dụ:

chắc chắn loại bỏ_gray_shades(
        màu sắc: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
    vượt qua

có thể được làm cho dễ đọc hơn như thế này

Màu = tuple[int, int, int]

def Remove_gray_shades(colors: list[Color]) -> list[Color]:
    vượt qua

Xem typingPEP 484 mô tả chức năng này.

gợi ý gõ

Một annotation chỉ định loại dự kiến cho một biến, thuộc tính lớp hoặc tham số hàm hoặc giá trị trả về.

Gợi ý loại là tùy chọn và không được Python thực thi nhưng chúng hữu ích với static type checkers. Họ cũng có thể hỗ trợ IDE hoàn thiện và tái cấu trúc mã.

Có thể truy cập gợi ý về các biến toàn cục, thuộc tính lớp và hàm, nhưng không phải biến cục bộ bằng typing.get_type_hints().

Xem typingPEP 484 mô tả chức năng này.

dòng mới phổ quát

Một cách diễn giải các luồng văn bản trong đó tất cả những điều sau đây được nhận dạng là kết thúc một dòng: quy ước cuối dòng Unix '\n', quy ước Windows '\r\n' và quy ước Macintosh cũ '\r'. Xem PEP 278PEP 3116, cũng như bytes.splitlines() để biết cách sử dụng bổ sung.

chú thích biến

Một annotation của một biến hoặc một thuộc tính lớp.

Khi chú thích một biến hoặc một thuộc tính lớp, phép gán là tùy chọn:

lớp C:
    trường: 'chú thích'

Chú thích biến thường được sử dụng cho type hints: ví dụ: biến này dự kiến ​​sẽ lấy các giá trị int:

đếm: int = 0

Cú pháp chú thích biến được giải thích trong phần Báo cáo bài tập có chú thích.

Xem function annotation, PEP 484PEP 526 mô tả chức năng này. Ngoài ra, hãy xem Các phương pháp hay nhất về chú thích để biết các phương pháp hay nhất khi làm việc với chú thích.

môi trường ảo

Môi trường thời gian chạy được cách ly hợp tác cho phép người dùng và ứng dụng Python cài đặt và nâng cấp các gói phân phối Python mà không can thiệp vào hoạt động của các ứng dụng Python khác chạy trên cùng hệ thống.

Xem thêm venv.

máy ảo

Một máy tính được xác định hoàn toàn bằng phần mềm. Máy ảo của Python thực thi bytecode do trình biên dịch mã byte phát ra.

người điều hành hải mã

Một cách nhẹ nhàng để tham khảo toán tử assignment expression := vì nó trông hơi giống một con hải mã nếu bạn quay đầu lại.

Thiền của Python

Danh sách các nguyên tắc và triết lý thiết kế Python hữu ích trong việc hiểu và sử dụng ngôn ngữ. Bạn có thể tìm thấy danh sách bằng cách nhập "import this" tại dấu nhắc tương tác.