Sự khác biệt giữa biến toàn cầu và không cục bộ trong python là gì?

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()

Sự khác biệt giữa biến toàn cầu và không cục bộ trong python là gì?

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ì?

Sự khác biệt giữa biến cục bộ và biến toàn cục là gì? . Global variables have the entire program as their scope, whereas local variables have only the function in which they are defined as their scope.

Biến cục bộ không cục bộ và cục bộ trong Python là gì?

Trong python, các biến không cục bộ đề cập đến tất cả các biến được khai báo trong các hàm lồng nhau . Phạm vi cục bộ của một biến không cục bộ không được xác định. Về cơ bản, điều này có nghĩa là biến không tồn tại trong phạm vi cục bộ cũng như trong phạm vi toàn cầu.

Sự khác biệt giữa các biến cục bộ và toàn cầu là gì?

Sự khác biệt chính giữa biến Toàn cầu và biến cục bộ là các biến toàn cục có thể được truy cập trên toàn cầu trong toàn bộ chương trình, trong khi các biến cục bộ chỉ có thể được truy cập trong hàm hoặc khối mà chúng được xác định.

Biến không cục bộ trong Python là gì?

Từ khóa nonlocal là được sử dụng để làm việc với các biến bên trong các hàm lồng nhau, trong đó biến không được thuộc về hàm bên trong . Sử dụng từ khóa nonlocal để khai báo rằng biến không cục bộ.