Nội dung chính
Xem Sự khác biệt giữa biến toàn cầu và không cục bộ trong python là gì? 2024
Phạm vi được định nghĩa là một khu vực có thể truy cập các biến đủ điều kiện. Để thực thi bảo mật, ngôn ngữ lập trình cung cấp phương tiện để người dùng có thể xác định rõ ràng các phạm vi này
Điều quan trọng là phải hiểu việc sử dụng phạm vi và cách xử lý chúng. Trong bài viết này, chúng ta sẽ xem các phạm vi có sẵn trong Python là gì và cách làm việc với chúng
1. Phạm vi toàn cầu¶
Bất kỳ biến nào được định nghĩa bên ngoài hàm không lồng nhau được gọi là biến toàn cục. Như tên cho thấy, các biến toàn cục có thể được truy cập ở bất cứ đâu
Ví dụ. ¶
side = 5 # defined in global scope
def area():
return side * side
def circumference():
return 4 * side
print(f"Area of square is {area()}")
print(f"Circumference of square is {circumference()}")
đầu ra
Area of square is 25
Circumference of square is 20
Khi một hàm cố gắng thao tác các biến toàn cục, lỗi UnboundLocalError sẽ xuất hiện. Để khắc phục điều này, biến toàn cục được xác định lại bên trong hàm bằng cách sử dụng từ khóa
Area of square is 25
Circumference of square is 20
2. Bằng cách này, người dùng có thể sửa đổi các biến toàn cục mà không gặp lỗi
Ví dụ. ¶
Không có từ khóa toàn cầu
side = 5
def multiply_side(factor):
side *= factor
multiply_side(7)
print(f"Side length is {side}")
đầu ra
UnboundLocalError: local variable 'side' referenced before assignment
Với từ khóa toàn cầu
side = 5
def multiply_side(factor):
global side
side *= factor
multiply_side(7)
print(f"Side length is {side}")
đầu ra
Side length is 35
2. Phạm vi cục bộ¶
Theo mặc định, các biến được xác định bên trong một hàm có phạm vi cục bộ. Nó ngụ ý rằng các biến phạm vi cục bộ chỉ có thể được truy cập bên trong hàm cha và không nơi nào khác
Các biến cục bộ bị hủy ngay khi phạm vi không còn tồn tại
Ví dụ. ¶
side = 5
def area():
square_area = side * side # local scope
print(square_area)
đầu ra
________số 8
3. Phạm vi phi cục bộ¶
Các hàm lồng nhau giới thiệu một loại phạm vi mới được gọi là phạm vi
Area of square is 25
Circumference of square is 20
3. Khi một hàm lồng nhau muốn chia sẻ phạm vi cục bộ của các hàm cha, từ khóa
Area of square is 25
Circumference of square is 20
3 được sử dụng
Trong trường hợp này gun() đã khởi tạo biến mới var1 trong phạm vi của gun. var1 với giá trị 10 và var1 với giá trị 20 là hai biến khác nhau và duy nhất. var1 giữ giá trị 20 sẽ được truy cập mặc định trong gun()
Xem xét ví dụ trước, chúng ta biết rằng các khẩu súng sẽ khởi tạo một biến mới var1 trong phạm vi của chính nó. Nhưng khi thực hiện thì nó chưa tìm được giá trị của var1,
để thực hiện phép tính số học vì trước đó chưa gán giá trị cho var1 trong gun().
Python3
Side length is 35
0
Side length is 35
1
Side length is 35
2
Side length is 35
3
Area of square is 25
Circumference of square is 20
10
Area of square is 25
Circumference of square is 20
11
Side length is 35
2
Side length is 35
0
Area of square is 25
Circumference of square is 20
14
Area of square is 25
Circumference of square is 20
15
Side length is 35
08
Area of square is 25
Circumference of square is 20
15
Side length is 35
10
Area of square is 25
Circumference of square is 20
15
Side length is 35
12
Area of square is 25
Circumference of square is 20
15
Side length is 35
14
Area of square is 25
Circumference of square is 20
15
Side length is 35
16
Area of square is 25
Circumference of square is 20
15
Side length is 35
3
Area of square is 25
Circumference of square is 20
10
Side length is 35
3
Area of square is 25
Circumference of square is 20
12
Area of square is 25
Circumference of square is 20
11
Area of square is 25
Circumference of square is 20
15
Area of square is 25
Circumference of square is 20
16____117
Side length is 35
2
Area of square is 25
Circumference of square is 20
18
Area of square is 25
Circumference of square is 20
19
đầu ra.
Area of square is 25
Circumference of square is 20
1
Trong ví dụ này, trước khi khởi tạo var1 trong gun(). Chúng tôi đã nói rõ ràng với Python rằng, đừng khởi tạo một biến mới, thay vào đó hãy truy cập var1 đã có trên dòng 2. sử dụng từ khóa nonlocal Vì vậy, khi trình thông dịch thực hiện phép cộng, nó sẽ truy cập giá trị 10(đã có) và tránh được lỗi
Bây giờ chúng ta hãy chuyển sang từ khóa toàn cầu. Hãy xem xét các ví dụ được đưa ra dưới đây
Python3
Side length is 35
3
Area of square is 25
Circumference of square is 20
10
Area of square is 25
Circumference of square is 20
11
Side length is 35
0
Side length is 35
1
Side length is 35
2
Side length is 35
35
Side length is 35
36
Side length is 35
2
Area of square is 25
Circumference of square is 20
16____639
Area of square is 25
Circumference of square is 20
100
Area of square is 25
Circumference of square is 20
101
Area of square is 25
Circumference of square is 20
19
đầu ra.
side = 5
def multiply_side(factor):
side *= factor
multiply_side(7)
print(f"Side length is {side}")
5
Biến toàn cục var1 sẽ được đọc hoặc truy cập đơn giản bên trong hàm fun()
Python3
Side length is 35
3
Area of square is 25
Circumference of square is 20
10
Area of square is 25
Circumference of square is 20
11
Side length is 35
0
Side length is 35
1
Side length is 35
2
Area of square is 25
Circumference of square is 20
109
Side length is 35
2____1111
Side length is 35
2
Side length is 35
3
Area of square is 25
Circumference of square is 20
10
UnboundLocalError: local variable 'side' referenced before assignment
14
Side length is 35
2
Area of square is 25
Circumference of square is 20
16____639
Area of square is 25
Circumference of square is 20
100
Area of square is 25
Circumference of square is 20
101
Side length is 35
2
Area of square is 25
Circumference of square is 20
16____639
Area of square is 25
Circumference of square is 20
124
Area of square is 25
Circumference of square is 20
125
UnboundLocalError: local variable 'side' referenced before assignment
18
UnboundLocalError: local variable 'side' referenced before assignment
19
Area of square is 25
Circumference of square is 20
19
_______116____639____1100
Area of square is 25
Circumference of square is 20
101
Area of square is 25
Circumference of square is 20
16______639____1124
Area of square is 25
Circumference of square is 20
125
UnboundLocalError: local variable 'side' referenced before assignment
18
UnboundLocalError: local variable 'side' referenced before assignment
19
đầu ra.
UnboundLocalError: local variable 'side' referenced before assignment
1
Một biến mới var1 sẽ được khởi tạo trong fun(). Biến toàn cục var1 sẽ khác với biến cục bộ var1 của fun(). Theo mặc định trong fun(), các biến cục bộ sẽ được truy cập
Sự khác biệt giữa biến toàn cục và biến cục bộ trong Python là gì?
Biến cục bộ không cục bộ và cục bộ trong Python là gì?
Sự khác biệt giữa các biến cục bộ và toàn cầu là gì?
Biến không cục bộ trong Python là gì?
Bạn đang tìm hiểu bài viết: Sự khác biệt giữa biến toàn cầu và không cục bộ trong python là gì? 2024
HỆ THỐNG CỬA HÀNG TRÙM SỈ QUẢNG CHÂU
Điện thoại: 092.484.9483
Zalo: 092.484.9483
Facebook: https://facebook.com/giatlathuhuongcom/
Website: Trumsiquangchau.com
Địa chỉ: Ngõ 346 Nam Dư, Trần Phú, Hoàng Mai, Hà Nội.