Computer >> Máy Tính >  >> Lập trình >> Python

Biến ngữ cảnh Python

Biến ngữ cảnh có thể có các giá trị khác nhau tùy thuộc vào ngữ cảnh của nó. Không giống như Thread-Local Storage trong đó mỗi luồng thực thi có thể có một giá trị khác nhau cho một biến, một biến ngữ cảnh có thể là một số ngữ cảnh trong một luồng thực thi. Điều này hữu ích trong việc theo dõi các biến trong các tác vụ không đồng bộ đồng thời.

Lớp ContextVar được sử dụng để khai báo và làm việc với các Biến ngữ cảnh.

import contextvars
name = contextvars.ContextVar("name", default = 'Hello')

Tham số mặc định tùy chọn được ContextVar.get () trả về khi không tìm thấy giá trị nào cho biến trong ngữ cảnh hiện tại.

tên: Tên của biến. Đây là thuộc tính chỉ đọc.

Các phương thức sau được định nghĩa trong lớp ContextVar

get () Trả về một giá trị cho biến ngữ cảnh cho ngữ cảnh hiện tại. Nếu không có giá trị nào cho biến trong ngữ cảnh hiện tại, phương thức sẽ -
  • trả về giá trị của đối số mặc định của phương thức, nếu được cung cấp - hoặc

  • trả về giá trị mặc định cho biến ngữ cảnh, nếu biến đó được tạo bằng một - hoặc

  • tăng lỗi Tra cứu.

set () Lệnh gọi để đặt giá trị mới cho biến ngữ cảnh trong ngữ cảnh hiện tại.
reset () Đặt lại biến ngữ cảnh về giá trị mà nó có trước khi ContextVar.set () tạo mã thông báo được sử dụng.

Lớp ngữ cảnh trong mô-đun vars ngữ cảnh là ánh xạ các Vars ngữ cảnh tới các giá trị của chúng.

Ngữ cảnh (): tạo một ngữ cảnh trống không có giá trị nào trong đó.

Để lấy bản sao của ngữ cảnh hiện tại, hãy sử dụng hàm copy_context ().

Phương thức run (callable, * args, ** kwargs) thực thi mã có thể gọi (* args, ** kwargs) trong đối tượng ngữ cảnh mà phương thức run được gọi và trả về kết quả của việc thực thi. Mọi thay đổi đối với bất kỳ biến ngữ cảnh nào mà có thể gọi thực hiện, sẽ được chứa trong đối tượng ngữ cảnh. Phương thức phát sinh RuntimeError khi được gọi trên cùng một đối tượng ngữ cảnh từ nhiều hơn một chuỗi hệ điều hành hoặc khi được gọi đệ quy.

copy () trả về một bản sao ngắn của đối tượng ngữ cảnh.
context [var] trả về giá trị của biến var ContextVar. Nếu biến không được đặt trong đối tượng ngữ cảnh, một Lỗi chính sẽ xuất hiện.
get () trả về giá trị cho var ngữ cảnh nếu nó có giá trị trong đối tượng ngữ cảnh. nếu không, nó trở về mặc định. Nếu mặc định không được cung cấp, hãy trả về Không.
iter () trả về một trình lặp trên các biến được lưu trữ trong đối tượng ngữ cảnh.
len () trả về số lượng biến được đặt trong đối tượng ngữ cảnh.
các phím () trả về danh sách tất cả các biến trong đối tượng ngữ cảnh.
giá trị () trả về danh sách các giá trị của tất cả các biến trong đối tượng ngữ cảnh.
items () trả về danh sách 2 bộ chứa tất cả các biến và giá trị của chúng trong đối tượng ngữ cảnh.