Biến là tên (identifier) ánh xạ đến đối tượng. Một namespace là dictionary của tên biến (keys) và đối tượng tương ứng (values).
Một câu lệnh Python có thể truy cập biến trong local namespace và global namespace. Nếu biến local và global trùng tên, biến local che biến global.
Mỗi hàm có namespace local riêng. Phương thức lớp tuân theo quy tắc scoping giống hàm thông thường.
Python đoán biến là local hay global. Nó giả định bất kỳ biến nào được gán giá trị trong hàm là local.
Do đó, để gán giá trị cho biến global bên trong hàm, bạn phải dùng câu lệnh global trước.
Câu lệnh global VarName báo cho Python biết VarName là biến global. Python ngừng tìm trong namespace local.
Ví dụ, ta định nghĩa biến Money trong global namespace. Trong hàm Money, ta gán giá trị cho Money, nên Python coi Money là local. Tuy nhiên, ta truy cập giá trị biến local Money trước khi gán, dẫn đến UnboundLocalError. Bỏ comment dòng global sẽ sửa lỗi.
#!/usr/bin/python
Money = 2000
def AddMoney():
# Uncomment dòng sau để sửa lỗi:
# global Money
Money = Money + 1
print Money
AddMoney()
print Money