[Tự Học Python] Biến Toàn Cục Và Biến Cục Bộ Trong Python - Cafedev
Có thể bạn quan tâm
🔥CHỌN LỌC TOP NHỮNG KHOÁ HỌC LẬP TRÌNH ONLINE NHIỀU NGƯỜI THEO HOC TẠI ĐÂY🔥
Biến toàn cục là biến được định nghĩa và khai báo bên ngoài hàm và chúng ta cần sử dụng chúng trong hàm.
# ----------------------------------------------------------- #Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam #@author cafedevn #Contact: [email protected] #Fanpage: https://www.facebook.com/cafedevn #Group: https://www.facebook.com/groups/cafedev.vn/ #Instagram: https://instagram.com/cafedevn #Twitter: https://twitter.com/CafedeVn #Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/ #Pinterest: https://www.pinterest.com/cafedevvn/ #YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/ # ----------------------------------------------------------- # This function uses global variable s def f(): print s # Global scope s = "I love Cafedev.vn" f()Kết quả:
I love Cafedev.vnBiến s được định nghĩa là chuỗi “I love Cafedev.vn”, trước khi chúng ta gọi hàm f(). Lệnh duy nhất trong hàm f() là câu lệnh “print s”. Vì không có biến s cục bộ, giá trị từ biến s toàn cục sẽ được sử dụng.
# ----------------------------------------------------------- #Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam #@author cafedevn #Contact: [email protected] #Fanpage: https://www.facebook.com/cafedevn #Group: https://www.facebook.com/groups/cafedev.vn/ #Instagram: https://instagram.com/cafedevn #Twitter: https://twitter.com/CafedeVn #Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/ #Pinterest: https://www.pinterest.com/cafedevvn/ #YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/ # ----------------------------------------------------------- # This function has a variable with # name same as s. def f(): s = "Me too." print s # Global scope s = "I love Cafedev.vn" f() print sKết quả:
Me too. I love Cafedev.vnNếu một biến có cùng tên cũng được định nghĩa bên trong phạm vi của hàm thì nó sẽ chỉ in giá trị được cung cấp bên trong hàm chứ không phải giá trị toàn cục.
Câu hỏi là: điều gì sẽ xảy ra nếu chúng ta thay đổi giá trị của biến s bên trong hàm f()? Nó cũng sẽ ảnh hưởng đến biến toàn cục chứ? Chúng ta kiểm tra nó trong đoạn code sau:
# ----------------------------------------------------------- #Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam #@author cafedevn #Contact: [email protected] #Fanpage: https://www.facebook.com/cafedevn #Group: https://www.facebook.com/groups/cafedev.vn/ #Instagram: https://instagram.com/cafedevn #Twitter: https://twitter.com/CafedeVn #Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/ #Pinterest: https://www.pinterest.com/cafedevvn/ #YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/ # ----------------------------------------------------------- def f(): print s # This program will NOT show error # if we comment below line. s = "Me too." print s # Global scope s = "I love cafedev" f() print sKết quả:
Line 2: undefined: Error: local variable 's' referenced before assignmentĐể chương trình trên hoạt động, chúng ta cần sử dụng từ khóa “global”. Chúng ta chỉ cần sử dụng từ khóa toàn cục trong một hàm nếu chúng ta muốn thực hiện các tác vụ/thay đổi chúng. Toàn cục là không cần thiết để in và truy cập. Tại sao vậy? Python có giả định rằng chúng ta muốn một biến cục bộ do các tác vụ cho biến s nằm bên bên trong hàm f(), vì vậy câu lệnh in đầu tiên hiện thông báo lỗi này. Bất kỳ biến nào được thay đổi hoặc tạo bên trong hàm là cục bộ nếu nó chưa được khai báo là biến toàn cục. Để nói với Python rằng chúng ta muốn sử dụng biến toàn cục, chúng ta phải sử dụng từ khóa toàn cục (global), có thể thấy trong ví dụ sau:
# ----------------------------------------------------------- #Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam #@author cafedevn #Contact: [email protected] #Fanpage: https://www.facebook.com/cafedevn #Group: https://www.facebook.com/groups/cafedev.vn/ #Instagram: https://instagram.com/cafedevn #Twitter: https://twitter.com/CafedeVn #Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/ #Pinterest: https://www.pinterest.com/cafedevvn/ #YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/ # ----------------------------------------------------------- # This function modifies the global variable 's' def f(): global s print s s = "Look for cafedev Python Section" print s # Global Scope s = "Python is great!" f() print sKết quả:
Python is great! Look for Geeksforgeeks Python Section. Look for Geeksforgeeks Python Section.Một ví dụ hay khác:
a = 1 # Uses global because there is no local 'a' def f(): print 'Inside f() : ', a # Variable 'a' is redefined as a local def g(): a = 2 print 'Inside g() : ',a # Uses global keyword to modify global 'a' def h(): global a a = 3 print 'Inside h() : ',a # Global scope print 'global : ',a f() print 'global : ',a g() print 'global : ',a h() print 'global : ',aKết quả:
global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3Nguồn và Tài liệu tiếng anh tham khảo:
- w3school
- python.org
- geeksforgeeks
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
- Group Facebook
- Fanpage
- Youtube
- Trang chủ
Chào thân ái và quyết thắng!
Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!
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ừ 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 18. Biến Toàn Cục Và Cục Bộ - Python Dainganxanh
-
Bài 6: Biến Và Cách Khai Báo Biến Trong Python - Môi Trường