Ở bài này ta sẽ tìm hiểu về Scope trong python. Một tính chất của biến trong python giúp chúng ta quản lý trạng thái của biến. Một biến chỉ có sẵn trong vùng mà nó được tạo. Điều này được gọi là scope (phạm vi).
Local scope
Một biến được tạo bên trong một hàm thuộc phạm vi cục bộ của hàm đó và chỉ có thể được sử dụng bên trong hàm đó.
Ví dụ: Một biến được tạo bên trong một hàm có sẵn bên trong hàm đó:
def myfunc(): x = 300 print(x) myfunc()
Function bên trong function
Như đã giải thích trong ví dụ trên, biến xkhông có sẵn bên ngoài hàm, nhưng nó có sẵn cho bất kỳ hàm nào bên trong hàm:
Ví dụ: Biến cục bộ có thể được truy cập từ một hàm trong hàm:
def myfunc(): x = 300 def myinnerfunc(): print(x) myinnerfunc() myfunc()
Global scope
Biến được tạo trong phần chính của mã Python là biến toàn cục và thuộc phạm vi toàn cục.
Các biến toàn cục có sẵn trong mọi phạm vi, toàn cục và cục bộ.
Ví dụ: Một biến được tạo bên ngoài hàm là biến toàn cục và bất kỳ ai cũng có thể sử dụng:
x = 300 def myfunc(): print(x) myfunc() print(x)
Đặt tên biến
Nếu bạn thao tác với cùng một tên biến bên trong và bên ngoài hàm, Python sẽ coi chúng là hai biến riêng biệt, một biến có sẵn trong phạm vi toàn cục (bên ngoài hàm) và một biến có sẵn trong phạm vi cục bộ (bên trong hàm):
Ví dụ: Hàm sẽ in local x và sau đó mã sẽ in global x:
x = 300 def myfunc(): x = 200 print(x) myfunc() print(x) >>> 200 300
Từ khoá global
- Nếu bạn cần tạo một biến toàn cục nhưng bị kẹt trong phạm vi cục bộ, bạn có thể sử dụng từ khóa global.
Từ khóa global làm cho biến có tính toàn cục.
Ví dụ: Nếu bạn sử dụng từ khóa global, biến sẽ thuộc phạm vi toàn cục:
def myfunc(): global x x = 300 myfunc() print(x)
- Ngoài ra, hãy sử dụng từ khóa global nếu bạn muốn thay đổi biến toàn cục bên trong hàm.
Ví dụ: Để thay đổi giá trị của biến toàn cục bên trong hàm, hãy tham chiếu biến đó bằng cách sử dụng từ khóa global:
x = 300 def myfunc(): global x x = 200 myfunc() print(x)
Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 3 tháng của SmartData.
Nếu bạn thấy bài viết hay và hữu ích, bạn có thể tham gia các kênh sau của SmartData để nhận được nhiều hơn nữa: