Bài 18. Biến Toàn Cục Và Cục Bộ - Python Dainganxanh
Có thể bạn quan tâm
Biến cục bộ (local) là biến có hiệu lực trong nội bộ của hàm. Biến toàn cục (global) là biến có hiệu lực trong toàn chương trình - tuy nhiên nó cần được khai báo để có thể hoạt động trong thân hàm.
hashtag1. Biến toàn cục (global)
Ví dụ 1
Copyx ="biến toàn cục - global" deffoo(): print("x trong hàm:", x) foo() print("x ngoài hàm:", x)Output:
x trong hàm: biến toàn cục - global x ngoài hàm: biến toàn cục - global
Xét ví dụ 2
Copyx ="biến global " deffoo(): x = x *2 print(x) foo()Output: Báo lỗi "UnboundLocalError: local variable 'x' referenced before assignment"
Biến x được khai báo ngoài hàm và được gán giá trị là "biến global". Tuy nhiên, câu lệnh ở dòng 4 có sử dụng biến x trong hàm (lúc này x được coi làm một local và chưa được khai báo) nên phát sinh lỗi.
Để khắc phục lỗi này ta có thể khai báo biến x trong hàm là biến toàn cục với keyword global như sau:
Ouput: biến global biến global
hashtag2. Biến cục bộ (local)
Thông thường, chúng ta khai báo một biến bên trong hàm để tạo một biến cục bộ. Ví dụ như sau:
Output: local
Tuy nhiên, chương trình sau đây sẽ báo lỗi
Output: NameError: name 'y' is not defined
Nguyên nhân: Chương trình trên gọi biến y ngoài hàm trong khi biến y là một biến local (chỉ có phạm vi hoạt động trong hàm, biến y sẽ bị hủy khi thoát khỏi hàm foo())
hashtag3. Biến không cục bộ (nonlocal)
Sử dụng khái niệm global, local trong trường hợp hàm trong hàm. Xét ví dụ dau:
Output: inner: nonlocal outer: nonlocal 5
Giải thích: Vì inner là một hàm trong hàm nên để biến x trong hàm inner() có thể hoạt động ngoài thân hàm inner() thì phải khai báo với từ khóa nonlocal. Lúc này x trong hàm inner() chính là x của hàm outter().
hashtag4. Ví dụ tổng hợp
hashtagVí dụ 4.1
Output: global global local
hashtagVí dụ 4.2
Output : local x: 10 global x: 5
Ở ví dụ này biến global và local cùng có tên là x. Tuy nhiên do phạm vi hoạt động của global và local là rạch ròi nên chương trình là hợp lệ và hoạt động bình thường.
hashtagVí dụ 4.3
Xem xét kỹ ví dụ sau để thấy phạm vi biến global, local và nonlocal
Output:
x - y ngoài hàm,trước khi gọi hàm foo: 25 - hai lăm x - y trước khi gọi hàm bar: 20 - hai mươi x - y sau khi gọi hàm bar: 35 - hai mươi x - y ngoài hàm, sau khi gọi foo: 25 - ba lăm
hashtag
Từ khóa » Khai Báo Biến Global Trong Python
-
Biến Toàn Cục (global), Biến Cục Bộ (local), Biến Nonlocal Trong Python
-
Từ Khóa Global Trong Python
-
Biến Toàn Cục Và Biến Cục Bộ Trong Python - Freetuts
-
Phân Biệt Các Biến Global, Local Và Nonlocal Trong Python - Góc Học IT
-
Từ Khóa Global Trong Python - Viblo
-
Biến Toàn Cục (global), Biến Cục Bộ ... - Vay Tiền Online Bằng CMND
-
[Tự Học Python] Biến Toàn Cục Và Biến Cục Bộ Trong Python - Cafedev
-
Từ Khóa Global Trong Python - TEK4
-
Tìm Hiểu Về Từ Khóa Global Trong Python - T3H
-
Biến Toàn Cục, Biến Cục Bộ, Biến Nonlocal Trong Python
-
Sự Khác Nhau Của 2 Loại Biến Trong Python Global Và Local Variables
-
Kiểu Dữ Liệu Function Trong Python - Biến Locals Và Globals
-
Bài 6: Biến Và Cách Khai Báo Biến Trong Python - Môi Trường