Trong bài viết này, chúng tôi sẽ đề cập đến từ khóa toàn cầu, các quy tắc cơ bản cho từ khóa toàn cầu trong Python, sự khác biệt giữa biến cục bộ và biến toàn cầu và các ví dụ về từ khóa toàn cầu trong Python
Mục đích của các từ khóa toàn cầu trong python là gì?
Từ khóa toàn cầu là từ khóa cho phép người dùng sửa đổi một biến bên ngoài phạm vi hiện tại. Nó được sử dụng để tạo các biến toàn cục trong Python từ phạm vi không toàn cầu, tôi. e. bên trong một chức năng. Từ khóa toàn cục chỉ được sử dụng bên trong một hàm khi chúng ta muốn thực hiện các nhiệm vụ hoặc khi chúng ta muốn thay đổi một biến. Toàn cầu không cần thiết để in và truy cập
Quy tắc của từ khóa toàn cầu
- Nếu một biến được gán một giá trị ở bất kỳ đâu trong phần thân của hàm, thì biến đó được coi là biến cục bộ trừ khi được khai báo rõ ràng là biến toàn cục
- Các biến chỉ được tham chiếu bên trong một hàm là toàn cục
- Chúng tôi sử dụng từ khóa toàn cầu để sử dụng biến toàn cục bên trong một hàm
- Không cần sử dụng các từ khóa toàn cầu bên ngoài một chức năng
Sử dụng từ khóa toàn cầu trong Python. Để truy cập một biến toàn cục bên trong một hàm, không cần sử dụng từ khóa toàn cầu.
Từ khóa toàn cầu trong ví dụ về python
ví dụ 1. Truy cập biến toàn cục từ bên trong một hàm
Python3
# global variable
a
=
UnboundLocalError: local variable 'a' referenced before assignment0
UnboundLocalError: local variable 'a' referenced before assignment1
=
UnboundLocalError: local variable 'a' referenced before assignment3
UnboundLocalError: local variable 'a' referenced before assignment4
UnboundLocalError: local variable 'a' referenced before assignment5
UnboundLocalError: local variable 'a' referenced before assignment6
UnboundLocalError: local variable 'a' referenced before assignment7
UnboundLocalError: local variable 'a' referenced before assignment8
=
a
Value of x inside a function : 20 Value of x outside a function : 201
UnboundLocalError: local variable 'a' referenced before assignment1
UnboundLocalError: local variable 'a' referenced before assignment7
Value of x inside a function : 20 Value of x outside a function : 204
Value of x inside a function : 20 Value of x outside a function : 205
Value of x inside a function : 20 Value of x outside a function : 206
Value of x inside a function : 20 Value of x outside a function : 207
đầu ra
25
Nếu chúng ta cần gán một giá trị mới cho một biến toàn cục, thì chúng ta có thể làm điều đó bằng cách khai báo biến đó là toàn cục
ví dụ 2. Sửa đổi biến toàn cục từ bên trong hàm
Python3
a
=
UnboundLocalError: local variable 'a' referenced before assignment0
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]1
UnboundLocalError: local variable 'a' referenced before assignment5
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]3
UnboundLocalError: local variable 'a' referenced before assignment7
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]5
UnboundLocalError: local variable 'a' referenced before assignment7
UnboundLocalError: local variable 'a' referenced before assignment1
=
a
Value of x inside a function : 20 Value of x outside a function : 201
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]1
UnboundLocalError: local variable 'a' referenced before assignment7
a
=
UnboundLocalError: local variable 'a' referenced before assignment1
UnboundLocalError: local variable 'a' referenced before assignment7
Value of x inside a function : 20 Value of x outside a function : 204
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]8
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]9
đầu ra
UnboundLocalError: local variable 'a' referenced before assignment
Đầu ra này là một lỗi vì chúng tôi đang cố gắng gán giá trị cho một biến trong phạm vi bên ngoài. Điều này có thể được thực hiện với việc sử dụng một biến toàn cục
ví dụ 3. Thay đổi biến toàn cầu từ bên trong một hàm bằng cách sử dụng toàn cầu
Python3
1 2 geeksforgeeks0_______137_______
UnboundLocalError: local variable 'a' referenced before assignment0
UnboundLocalError: local variable 'a' referenced before assignment5
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]3
UnboundLocalError: local variable 'a' referenced before assignment7
1 2 geeksforgeeks6
UnboundLocalError: local variable 'a' referenced before assignment7
1 2 geeksforgeeks8
1 2 geeksforgeeks0
UnboundLocalError: local variable 'a' referenced before assignment7
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]5
UnboundLocalError: local variable 'a' referenced before assignment7
1 2 geeksforgeeks0
=
1 2 geeksforgeeks0
Value of x inside a function : 20 Value of x outside a function : 201
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]1
UnboundLocalError: local variable 'a' referenced before assignment7
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0# global variable
1# global variable
2
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]9
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0# global variable
6# global variable
2đầu ra
________số 8_______Trong ví dụ trên, trước tiên chúng ta định nghĩa x là một từ khóa toàn cục bên trong hàm change[]. Giá trị của x sau đó được tăng thêm 5, i. e. x=x+5 và do đó chúng tôi nhận được đầu ra là 20. Như chúng ta có thể thấy bằng cách thay đổi giá trị bên trong hàm change[], sự thay đổi cũng được phản ánh trong giá trị bên ngoài biến toàn cục
Sửa đổi các đối tượng có thể thay đổi toàn cầu
ví dụ 1. Sửa đổi các thành phần danh sách mà không sử dụng từ khóa toàn cầu
Tại đây, chúng ta có thể sửa đổi các thành phần danh sách được xác định trong phạm vi toàn cầu mà không cần sử dụng từ khóa toàn cầu. Bởi vì chúng tôi không sửa đổi đối tượng được liên kết với biến arr, nhưng chúng tôi đang sửa đổi các mục trong danh sách chứa. Vì danh sách là cấu trúc dữ liệu có thể thay đổi, do đó chúng tôi có thể sửa đổi nội dung của nó
Python3
# global variable
8=
a
0
UnboundLocalError: local variable 'a' referenced before assignment3
a
2a
3a
2a
5a
6
UnboundLocalError: local variable 'a' referenced before assignment5
a
8UnboundLocalError: local variable 'a' referenced before assignment7
=
0 =
1=
2 =
3# global variable
0=
5=
6=
7_______137_______8
Value of x inside a function : 20 Value of x outside a function : 201
=
UnboundLocalError: local variable 'a' referenced before assignment3
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0_______0_______04UnboundLocalError: local variable 'a' referenced before assignment05
UnboundLocalError: local variable 'a' referenced before assignment06
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0UnboundLocalError: local variable 'a' referenced before assignment09
UnboundLocalError: local variable 'a' referenced before assignment05
đầu ra
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]
ví dụ 2. Sửa đổi biến danh sách bằng từ khóa toàn cầu
Ở đây chúng tôi đang cố gán một danh sách mới cho biến toàn cục. Vì vậy, chúng ta cần sử dụng từ khóa toàn cầu khi một đối tượng mới được tạo. Ở đây nếu chúng ta không sử dụng từ khóa global thì một biến cục bộ mới arr sẽ được tạo với các phần tử danh sách mới. Nhưng biến toàn cục arr sẽ không thay đổi.
Python3
# global variable
8=
a
0
UnboundLocalError: local variable 'a' referenced before assignment3
a
2a
3a
2a
5a
6
UnboundLocalError: local variable 'a' referenced before assignment5
a
8UnboundLocalError: local variable 'a' referenced before assignment7
1 2 geeksforgeeks8
# global variable
8UnboundLocalError: local variable 'a' referenced before assignment7
# global variable
8=
a
0a
3a
2a
5a
2UnboundLocalError: local variable 'a' referenced before assignment33
a
6
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0_______0_______04UnboundLocalError: local variable 'a' referenced before assignment05
UnboundLocalError: local variable 'a' referenced before assignment06
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0UnboundLocalError: local variable 'a' referenced before assignment09
UnboundLocalError: local variable 'a' referenced before assignment05
đầu ra
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]
Biến toàn cầu trên các mô-đun Python
Cách tốt nhất để chia sẻ các biến toàn cục giữa các mô-đun khác nhau trong cùng một chương trình là tạo một mô-đun đặc biệt [thường được đặt tên là config hoặc cfg]. Nhập mô-đun cấu hình vào tất cả các mô-đun của ứng dụng của bạn; . Chỉ có một phiên bản của mỗi mô-đun và do đó, bất kỳ thay đổi nào được thực hiện đối với đối tượng mô-đun đều được phản ánh ở mọi nơi. Ví dụ: chia sẻ các biến toàn cục giữa các mô-đun
mã 1. Tạo cấu hình. tệp py để lưu trữ các biến toàn cục
Python3
1 2 geeksforgeeks0____137_______
UnboundLocalError: local variable 'a' referenced before assignment46
UnboundLocalError: local variable 'a' referenced before assignment47_______137_______
UnboundLocalError: local variable 'a' referenced before assignment46
UnboundLocalError: local variable 'a' referenced before assignment50
=
UnboundLocalError: local variable 'a' referenced before assignment52
mã 2. Tạo một sửa đổi. py để sửa đổi các biến toàn cục
Python3
UnboundLocalError: local variable 'a' referenced before assignment53
UnboundLocalError: local variable 'a' referenced before assignment54
UnboundLocalError: local variable 'a' referenced before assignment55
=
UnboundLocalError: local variable 'a' referenced before assignment57
UnboundLocalError: local variable 'a' referenced before assignment58
=
UnboundLocalError: local variable 'a' referenced before assignment60
UnboundLocalError: local variable 'a' referenced before assignment61
=
UnboundLocalError: local variable 'a' referenced before assignment63
Ở đây chúng tôi đã sửa đổi giá trị của x, y và z. Các biến này đã được xác định trong cấu hình mô-đun. py, do đó chúng tôi phải nhập mô-đun cấu hình và có thể sử dụng cấu hình. tên_biến để truy cập các biến này
Tạo một chính. py để sửa đổi các biến toàn cục
Python3
UnboundLocalError: local variable 'a' referenced before assignment53
UnboundLocalError: local variable 'a' referenced before assignment54
UnboundLocalError: local variable 'a' referenced before assignment53
UnboundLocalError: local variable 'a' referenced before assignment67
Value of x inside a function : 20 Value of x outside a function : 204
UnboundLocalError: local variable 'a' referenced before assignment69
Value of x inside a function : 20 Value of x outside a function : 204
UnboundLocalError: local variable 'a' referenced before assignment71
Value of x inside a function : 20 Value of x outside a function : 204
UnboundLocalError: local variable 'a' referenced before assignment73
đầu ra
1 2 geeksforgeeks
Toàn cầu trong các hàm lồng nhau
Để sử dụng toàn cầu bên trong một hàm lồng nhau, chúng ta phải khai báo một biến có từ khóa toàn cầu bên trong một hàm lồng nhau
Python3
UnboundLocalError: local variable 'a' referenced before assignment74
UnboundLocalError: local variable 'a' referenced before assignment75
UnboundLocalError: local variable 'a' referenced before assignment5
UnboundLocalError: local variable 'a' referenced before assignment6
UnboundLocalError: local variable 'a' referenced before assignment7
1 2 geeksforgeeks0
=
UnboundLocalError: local variable 'a' referenced before assignment0
UnboundLocalError: local variable 'a' referenced before assignment7
UnboundLocalError: local variable 'a' referenced before assignment5
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]3
=
7_______33_______8
1 2 geeksforgeeks0
=
7_______33_______0=
a
3
UnboundLocalError: local variable 'a' referenced before assignment7
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0UnboundLocalError: local variable 'a' referenced before assignment95
# global variable
2UnboundLocalError: local variable 'a' referenced before assignment7
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0Value of x inside a function : 20 Value of x outside a function : 2000
Value of x inside a function : 20 Value of x outside a function : 2001
UnboundLocalError: local variable 'a' referenced before assignment7
'arr' list before executing fun[]: [10, 20, 30] 'arr' list after executing fun[]: [20, 30, 40]9
UnboundLocalError: local variable 'a' referenced before assignment7
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0Value of x inside a function : 20 Value of x outside a function : 2007
# global variable
2
Value of x inside a function : 20 Value of x outside a function : 207
Value of x inside a function : 20 Value of x outside a function : 204
# global variable
0Value of x inside a function : 20 Value of x outside a function : 2012
# global variable
2đầu ra
Before making changing: 15 Making change After making change: 15 value of x 20
Trong ví dụ trên Trước và sau khi thực hiện thay đổi[], biến x nhận giá trị của biến cục bộ i. e x = 15. Bên ngoài hàm add[], biến x sẽ lấy giá trị được xác định trong hàm change[], i. e x = 20. Vì chúng ta đã sử dụng từ khóa global trong x để tạo biến toàn cục bên trong hàm change[] [phạm vi cục bộ]