Bài này sẽ giải thích một chút về biến toàn cục và biến cục bộ trong Python để bạn hiểu phạm vi hoạt động của chúng, tránh được những lỗi ngớ ngẩn không hiểu tại sao có khai báo biến mà vẫn bị lỗi.

1. Biến toàn cục là gì?

Trong Python, một biến được khai báo bên ngoài hàm hoặc trong phạm vi toàn cục được gọi là biến toàn cục. Điều này có nghĩa, biến toàn cục có thể được truy cập bên trong hoặc bên ngoài hàm.

Biến toàn cục có tên gọi là Global Variable.

Hãy xem một ví dụ về cách tạo một biến toàn cục trong Python.

Global Variable
1
2
3
4
5
6
7
x = "global"
def foo():
    print("x inside :", x)
foo()
print("x outside:", x)

Khi chạy chương trình này thì kết quả sẽ như sau:

1
2
x inside : global
x outside: global

Trong đoạn code trên thì biến x là biến toàn cục bởi nó được khai báo bên ngoài hàm, nằm tại vị trí cấp cao nhất của ứng dụng.  Giống như Javascript, trong hàm có thể sử dụng biến cục bộ mà không cần phải thông qua việc truyền tham số.

Chuyện gì sảy ra nếu bạn cố tình thay đổi giá trị của x bên trong hàm foo()?

1
2
3
4
5
6
x = "global"
def foo():
    x = x * 2
    print(x)
foo()

Khi chạy chương trình thì sẽ bị lỗi như sau:

1
UnboundLocalError: local variable 'x' referenced before assignment

Lý do tại sao? Tại vì bên trong hàm foo() bạn đã thay đổi giá trị cho biến x nên mặc nhiên nó sẽ hiểu biến x là biến cục bổ, mà biến cục bộ thì đoạn code x = x * 2 sẽ sai vì biến x chưa được khai báo.

2. Biến cục bộ là gì?

Trong Python biến cục bộ được hiểu là biến được khai báo bên trong hàm hoặc phạm vi cục bộ, những biến này gọi là biến cục bộ.

Biến cục bộ có tên gọi là Local Variable.

Hãy xem ví dụ dưới đây:

1
2
3
4
5
def foo():
    y = "local"
foo()
print(y)

Do biến y là biến cục bộ nằm bên trong hàm foo() nên đoạn codeprint(y) là sai, bạn không thể sử dụng biến cục bộ ở bên ngoài hàm được.

Chạy lên kết quả sẽ như sau:

1
NameError: name 'y' is not defined

3. Từ khóa global

Để tường minh trong việc sử dụng biến cục bộ ở trong hàm thì Python cung cấp từ khóa global, khi khai báo từ khóa nào cho một biến bất kì thì trình biên dịch sẽ tự hiểu biến đó sẽ trỏ tới một biến cục bộ nằm bên ngoài hàm.

Ví dụ: Sử dụng từ khóa global

1
2
3
4
5
6
7
8
9
10
x = "global"
def foo():
    global x
    y = "local"
    x = x * 2
    print(x)
    print(y)
    
foo()

Chạy lên kết quả sẽ như sau:

1
2
global global
local

Nếu ở ví dụ ở phần 1 bị sai vì ta đã thay đổi giá trị cho biến x thì trong ví dụ này lại đúng, tại sao? Tại vì ta đã sử dụng từ khóa global để trỏ đến biến cục bộ bên ngoài.

4. Lời kết

Khó khăn nhất là việc khai báo trùng tên ở biến toàn cục và biến cục bộ, vì vậy lời khuyên bạn nên sử dụng biến một cách khoa học, khai báo bằng tham số truyền vào nếu muốn sử dụng biến toàn cục ở bên trong hàm.

Như vậy là mình đã giới thiệu xong khái niệm về biến cục bộ và biến toàn cục trong Python, hy vọng bạn sẽ hiểu ý nghĩa của từng loại biến để sử dụng cho đúng mục đích.

Nguồn:https://freetuts.net

 

 

ĐĂNG KÝ THÀNH VIÊN

NẾU NỘI DUNG HỮU ÍCH HÃY XEM QUẢNG CÁO ĐỂ ỦNG HỘ

NẾU NỘI DUNG HỮU ÍCH HÃY XEM QUẢNG CÁO ĐỂ ỦNG HỘ

Được quan tâm nhiều nhất

  • iPhone 11 Pro Max Teardown - Tiny Motherboard & BIG Battery!

  • Apple Watch Series 5 Teardown - Always on Display Explained

  • Apple Watch Series 4 Teardown

  • Phim Ngắn Đột Kích - Phiên bản 10 năm trước

Bạn thấy bài viết này thế nào?
Thể hiện yêu thương tác giả ở đây nhé!

Thích bài viết

thích

Chia sẻ ngay!

phuongle

Thành viên từ: 10/12/2019

Điểm uy tín: 5,987

SMod: 1,289 hướng dẫn đã chia sẻ

Team

Lập Trình Thành viên của Lập Trình

1 Thành viên

1,289 bài viết

Thêm bình luận

Bình luận bằng tài khoản Facebook

After viewing your support content - Please click advertisement for Support & Donate us team! Đóng