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

Không gian tên và phạm vi trong Python

Biến là tên (định danh) ánh xạ tới các đối tượng. Không gian tên là một từ điển của các tên biến (khóa) và các đối tượng (giá trị) tương ứng của chúng.

Một câu lệnh Python có thể truy cập các biến trong không gian tên cục bộ và trong không gian tên chung. Nếu một biến cục bộ và một biến toàn cục có cùng tên, thì biến cục bộ sẽ che khuất biến toàn cục.

Mỗi hàm có không gian tên cục bộ riêng của nó. Các phương thức lớp tuân theo quy tắc xác định phạm vi giống như các hàm thông thường.

Python đưa ra các phỏng đoán có học về việc các biến là cục bộ hay toàn cục. Nó giả định rằng bất kỳ biến nào được gán giá trị trong một hàm đều là cục bộ.

Do đó, để gán giá trị cho một biến toàn cục trong một hàm, trước tiên bạn phải sử dụng câu lệnh toàn cục.

Câu lệnh global VarName cho Python biết rằng VarName là một biến toàn cục. Python ngừng tìm kiếm không gian tên cục bộ cho biến.

Ví dụ, chúng tôi xác định một biến Money trong không gian tên chung. Trong hàm Money, chúng tôi gán cho Money một giá trị, do đó Python giả định Money là một biến cục bộ. Tuy nhiên, chúng tôi đã truy cập giá trị của biến cục bộ Money trước khi đặt nó, vì vậy kết quả là UnboundLocalError. Bỏ chú thích câu lệnh toàn cục sẽ khắc phục được sự cố.

#!/usr/bin/python
Money = 2000
def AddMoney():
# Uncomment the following line to fix the code:
# global Money
Money = Money + 1
print Money
AddMoney()
print Money