Nói chung, một biến được xác định trong một khối chỉ khả dụng trong khối đó. Nó không thể truy cập bên ngoài khối. Biến như vậy được gọi là biến cục bộ. Định danh đối số chính thức cũng hoạt động như các biến cục bộ
Ví dụ sau đây sẽ nhấn mạnh điểm này. Nỗ lực in một biến cục bộ bên ngoài phạm vi của nó sẽ làm tăng ngoại lệ
>>> greet[]
Hello Steve
>>> name
Traceback [most recent call last]:
File "", line 1, in name
NameError: name 'name' is not defined
0Thí dụ. Biến cục bộ
Sao chépdef greet[]:
name = 'Steve'
print['Hello ', name]
Ở đây,
>>> greet[]
Hello Steve
>>> name
Traceback [most recent call last]:
File "", line 1, in name
NameError: name 'name' is not defined
1 là một biến cục bộ cho hàm >>> greet[]
Hello Steve
>>> name
Traceback [most recent call last]:
File "", line 1, in name
NameError: name 'name' is not defined
2 và không thể truy cập được bên ngoài nóThí dụ. Biến cục bộ
Sao chép>>> greet[]
Hello Steve
>>> name
Traceback [most recent call last]:
File "", line 1, in name
NameError: name 'name' is not defined
Bất kỳ biến nào có mặt bên ngoài bất kỳ khối chức năng nào được gọi là biến toàn cục. Giá trị của nó có thể truy cập từ bên trong bất kỳ chức năng nào. Trong ví dụ sau, biến
>>> greet[]
Hello Steve
>>> name
Traceback [most recent call last]:
File "", line 1, in name
NameError: name 'name' is not defined
1 được khởi tạo trước khi định nghĩa hàm. Do đó, nó là một biến toàn cầuThí dụ. Biến toàn cầu
Sao chépname='John'
def greet[]:
print ["Hello ", name]
Bây giờ, bạn có thể truy cập biến toàn cục
>>> greet[]
Hello Steve
>>> name
Traceback [most recent call last]:
File "", line 1, in name
NameError: name 'name' is not defined
1 vì nó đã được định nghĩa ngoài hàm________số 8
Tuy nhiên, nếu chúng ta gán một giá trị khác cho một biến được khai báo toàn cầu bên trong hàm, thì một biến cục bộ mới sẽ được tạo trong không gian tên của hàm. Phép gán này sẽ không làm thay đổi giá trị của biến toàn cục. Ví dụ
Thí dụ. Biến cục bộ và biến toàn cầu
Sao chépname = 'Steve'
def greet[]:
name = 'Bill'
print['Hello ', name]
Bây giờ, việc thay đổi giá trị của biến toàn cục
>>> greet[]
Hello Steve
>>> name
Traceback [most recent call last]:
File "", line 1, in name
NameError: name 'name' is not defined
1 bên trong một hàm sẽ không ảnh hưởng đến giá trị toàn cục của nódef greet[]:
name = 'Steve'
print['Hello ', name]
1Nếu bạn cần truy cập và thay đổi giá trị của biến toàn cục từ bên trong một hàm, quyền này được cấp bởi từ khóa
>>> greet[]
Hello Steve
>>> name
Traceback [most recent call last]:
File "", line 1, in name
NameError: name 'name' is not defined
6Thí dụ. Truy cập các biến toàn cầu
Sao chépdef greet[]:
name = 'Steve'
print['Hello ', name]
3Ở trên sẽ hiển thị đầu ra sau trong trình bao Python
def greet[]:
name = 'Steve'
print['Hello ', name]
4Cũng có thể sử dụng đồng thời biến toàn cục và biến cục bộ có cùng tên. Hàm tích hợp
>>> greet[]
Hello Steve
>>> name
Traceback [most recent call last]:
File "", line 1, in name
NameError: name 'name' is not defined
7 trả về một đối tượng từ điển của tất cả các biến toàn cục và các giá trị tương ứng của chúng. Sử dụng tên của biến làm khóa, giá trị của nó có thể được truy cập và sửa đổiThí dụ. Biến toàn cục
Sao chépdef greet[]:
name = 'Steve'
print['Hello ', name]
6Kết quả của đoạn mã trên cho thấy xung đột giữa các biến toàn cục và biến cục bộ có cùng tên và cách giải quyết