Biến Cục Bộ và Biến Toàn Cục trong Python

hướng dẫn học python tìm hiểu ngôn ngữ lập trình python nguyễn Đức mùi

Trong Python, biến toàn cục là những biến được khai báo bên ngoài tất cả các hàm và có phạm vi sử dụng trên toàn bộ chương trình. Ngược lại, biến cục bộ là những biến được khai báo bên trong một hàm và chỉ có thể được sử dụng trong phạm vi của hàm đó.

hướng dẫn học python tìm hiểu ngôn ngữ lập trình python nguyễn Đức mùi

Nói cách khác, biến cục bộ chỉ có thể truy cập được bên trong hàm mà nó được tạo ra, trong khi biến toàn cục có thể sử dụng ở bất kỳ đâu trong chương trình, kể cả bên trong các hàm.

1. Biến Cục Bộ trong Python

Khai báo và truy cập biến cục bộ

Biến cục bộ trong Python được tạo bên trong một hàm và chỉ có hiệu lực trong hàm đó. Nếu cố gắng truy cập biến này từ bên ngoài, chương trình sẽ báo lỗi.

Ví dụ về khai báo biến cục bộ:

def my_function():
    # Biến cục bộ
    text = "Tôi yêu lập trình Python"
    print(text)

# Gọi hàm
my_function()

Kết quả:

Tôi yêu lập trình Python

Nếu cố gắng truy cập biến text từ bên ngoài hàm, chương trình sẽ gặp lỗi:

def my_function():
    text = "Tôi yêu lập trình Python"
    print("Bên trong hàm:", text)

my_function()
print(text)  # Truy cập biến cục bộ từ ngoài hàm

Lỗi nhận được:

NameError: name 'text' is not defined

2. Biến Toàn Cục trong Python

Biến toàn cục là những biến được khai báo bên ngoài tất cả các hàm, có thể được sử dụng trong toàn bộ chương trình, bao gồm cả bên trong các hàm.

Ví dụ về khai báo biến toàn cục:

# Khai báo biến toàn cục
global_text = "Tôi yêu lập trình Python"

def my_function():
    print("Bên trong hàm:", global_text)

my_function()
print("Bên ngoài hàm:", global_text)

Kết quả:

Bên trong hàm: Tôi yêu lập trình Python
Bên ngoài hàm: Tôi yêu lập trình Python

Biến global_text được sử dụng cả bên trong và bên ngoài hàm mà không gặp lỗi.

3. Sự khác biệt giữa biến cục bộ và biến toàn cục

Điều gì sẽ xảy ra nếu một biến có cùng tên được khai báo cả ở phạm vi toàn cục và trong một hàm? Python sẽ ưu tiên sử dụng biến cục bộ trong phạm vi hàm đó.

Ví dụ:

# Biến toàn cục
text = "Tôi yêu lập trình Python"

def my_function():
    # Khai báo biến cục bộ có cùng tên
    text = "Lập trình thật thú vị!"
    print(text)

my_function()
print(text)

Kết quả:

Lập trình thật thú vị!
Tôi yêu lập trình Python

Hàm my_function() sử dụng giá trị của biến cục bộ thay vì biến toàn cục.

4. Cập nhật biến toàn cục trong hàm

Nếu cố gắng thay đổi giá trị của biến toàn cục bên trong một hàm mà không sử dụng từ khóa global, chương trình sẽ báo lỗi:

def my_function():
    text += " - Python"
    print(text)

text = "Lập trình với"
my_function()

Lỗi nhận được:

UnboundLocalError: local variable 'text' referenced before assignment

Sử dụng từ khóa global

Để thay đổi giá trị của biến toàn cục trong một hàm, chúng ta cần sử dụng từ khóa global:

text = "Python rất mạnh mẽ!"

def my_function():
    global text
    text += " - Một ngôn ngữ lập trình tuyệt vời!"
    print(text)

my_function()
print(text)

Kết quả:

Python rất mạnh mẽ! - Một ngôn ngữ lập trình tuyệt vời!
Python rất mạnh mẽ! - Một ngôn ngữ lập trình tuyệt vời!

Sau khi thay đổi giá trị trong hàm, biến toàn cục cũng bị thay đổi.

5. Kết hợp biến cục bộ và biến toàn cục

Một biến có thể hoạt động như một biến toàn cục, cục bộ hoặc có thể bị thay đổi bên trong một hàm bằng từ khóa global.

Ví dụ:

a = 1  # Biến toàn cục

def function_1():
    print("Bên trong function_1:", a)  # Sử dụng biến toàn cục

def function_2():
    a = 2  # Khai báo biến cục bộ
    print("Bên trong function_2:", a)

def function_3():
    global a
    a = 3  # Thay đổi biến toàn cục
    print("Bên trong function_3:", a)

print("Giá trị ban đầu:", a)
function_1()
print("Sau function_1:", a)
function_2()
print("Sau function_2:", a)
function_3()
print("Sau function_3:", a)

Kết quả:

Giá trị ban đầu: 1
Bên trong function_1: 1
Sau function_1: 1
Bên trong function_2: 2
Sau function_2: 1
Bên trong function_3: 3
Sau function_3: 3

6. Bảng So Sánh Biến Cục Bộ và Biến Toàn Cục

Tiêu chí so sánhBiến Toàn CụcBiến Cục Bộ
Khai báoBên ngoài tất cả các hàmBên trong một hàm
Thời gian tồn tạiTồn tại trong suốt chương trìnhTồn tại trong phạm vi hàm
Khả năng truy cậpCó thể truy cập ở mọi nơiChỉ có thể truy cập trong hàm
Chia sẻ dữ liệuCó thể chia sẻ dữ liệu giữa các hàmKhông thể chia sẻ dữ liệu giữa các hàm
Cần truyền tham số không?Không cầnCần nếu muốn truyền giá trị
Lưu trữLưu ở vị trí cố định do trình biên dịch quyết địnhLưu trên stack của hàm
Thay đổi giá trịNếu thay đổi, ảnh hưởng đến toàn bộ chương trìnhChỉ ảnh hưởng trong phạm vi hàm

Kết Luận

  • Biến cục bộ chỉ tồn tại trong một hàm và không thể truy cập từ bên ngoài.
  • Biến toàn cục có thể được sử dụng ở bất kỳ đâu trong chương trình.
  • Nếu muốn thay đổi biến toàn cục trong một hàm, cần sử dụng từ khóa global.
  • Khi một biến có cùng tên xuất hiện cả trong phạm vi toàn cục và cục bộ, biến cục bộ sẽ được ưu tiên trong hàm đó.

Hiểu rõ về biến cục bộ và toàn cục giúp lập trình viên kiểm soát phạm vi biến một cách chặt chẽ, tránh lỗi và viết mã nguồn tối ưu hơn. 🚀

Menu Python>>

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

error: Content is protected !!
Hotline: 039.2266.928
Khóa học Toefl
Phone now