Sunday, January 19, 2025

[Python] Lesson 23 – Variable scope

-

Variable scope là phạm vi mà một biến có thể được truy cập hoặc sử dụng trong chương trình. Python có hai loại phạm vi biến: global và local.

  1. Local scope: Biến được khai báo trong một hàm chỉ có thể được truy cập trong phạm vi của hàm đó.

Ví dụ:

def func():
    x = 10
    print(x)
    
func()
  1. Global scope: Biến được khai báo ở bên ngoài tất cả các hàm và có thể được truy cập trong toàn bộ chương trình.

Ví dụ:

x = 10

def func():
    print(x)

func()
  1. Nonlocal scope: Biến được khai báo trong một hàm con có thể được truy cập và thay đổi từ hàm cha của nó.

Ví dụ:

def parent():
    x = 10
    def child():
        nonlocal x
        x += 5
        print(x)
    child()

parent()

Trong ví dụ này, biến x được khai báo trong hàm cha parent(), nhưng có thể được truy cập và thay đổi từ hàm con child() bằng cách sử dụng nonlocal. Khi gọi hàm parent(), sẽ in ra giá trị 15, bởi vì x đã được tăng thêm 5 bởi hàm child().

Giả sử bạn có một chương trình Python để thực hiện các tác vụ đọc và xử lý dữ liệu từ một tập tin trên hệ thống Linux. Trong chương trình, bạn muốn sử dụng một biến để lưu trữ đường dẫn đến tập tin cần đọc. Bạn khai báo biến này ở bên ngoài hàm và gán giá trị cho nó trong hàm. Tuy nhiên, vì biến này được khai báo bên ngoài hàm, nó là một biến toàn cục và có thể truy cập từ bất kỳ nơi nào trong chương trình. Bạn cũng có thể khai báo một biến trong hàm và sử dụng nó chỉ trong phạm vi của hàm.

Ví dụ:

path = "/home/user/data.txt"

def read_file():
    # sử dụng biến toàn cục
    with open(path, 'r') as f:
        data = f.read()
    return data

def process_data():
    # khai báo biến trong hàm
    file_path = "/home/user/data.txt"
    with open(file_path, 'r') as f:
        data = f.read()
    # xử lý dữ liệu

Ở ví dụ trên, biến path là biến toàn cục và có thể truy cập từ bất kỳ hàm nào trong chương trình. Trong khi đó, biến file_path chỉ có thể sử dụng trong hàm process_data().

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories