BÀI 28: PHẠM VI CỦA BIẾN

 

BÀI 28: PHẠM VI CỦA BIẾN

A. Yêu Cầu Cần Đạt

  • Hiểu và trình bày được ý nghĩa của phạm vi hoạt động của biến trong chương trình và hàm.



B. Nội Dung Bài Học

1. Phạm Vi Của Biến Khai Báo Trong Hàm

  • Các biến được khai báo bên trong một hàm chỉ được sử dụng bên trong hàm đó. Chương trình chính không thể truy cập được.

Ví dụ:

>>> def func(a, b): n = 10 a = a * 2 b = a + b return a + b + n >>> a = 1 >>> b = 2 >>> func(a, b) # Kết quả: 16 >>> a, b # Biến bên ngoài không bị thay đổi (1,2) >>> n # Lỗi vì n chỉ tồn tại trong hàm func Traceback (most recent call last): NameError: name 'n' is not defined
  • Như vậy, trong Python tất cả các biến khai báo bên trong hàm đều có tính cục bộ, không có hiệu lực bên ngoài hàm.

2. Phạm Vi Của Biến Khai Báo Ngoài Hàm

Ví dụ 1: Biến khai báo bên ngoài hàm không tác động bên trong hàm

>>> def f(n): t = n + 1 return t >>> t = 10 >>> f(5) # Kết quả: 6 >>> t # Biến t bên ngoài không thay đổi 10

Ví dụ 2: Hàm có thể truy cập biến khai báo bên ngoài

>>> def f(a, b): return a + b + N >>> N = 10 >>> f(1, 2) # Kết quả: 13

Lưu ý:

  • Muốn thay đổi biến bên ngoài hàm, ta dùng từ khoá global
>>> def f(n): global t t = 2 * n + 1 return t >>> t = 10 >>> f(1) # Kết quả: 3 >>> t # Biến t bên ngoài đã thay đổi 3

Tóm lại:

  • Biến khai báo bên trong hàm chỉ có tác dụng trong hàm.
  • Biến bên ngoài hàm có thể được truy cập trong hàm, nhưng không thay đổi được trừ khi dùng global.

C. Củng Cố - VẬn Dụng

Thực Hành

Nhiệm vụ 1: Lọc các phần tử lớn hơn x trong danh sách A

def Select(A, x): B = [] for k in A: if k >= x: B.append(k) return B

Nhiệm vụ 2: Tách từ trong xâu và chuyển đổi kiểu chữ

def Tach_tu(Str, c): words = Str.split() if c == 0: return [word.upper() for word in words] elif c == 1: return [word.lower() for word in words] elif c == 2: return [word.title() for word in words] return words

Nhiệm vụ 3: Chương trình thao tác danh sách

def nhap_danh_sach(): A = list(map(int, input("Nhập danh sách các số: ").split())) return A def loc_duong(A): return [x for x in A if x > 0] def loc_am(A): return [x for x in A if x < 0] # Chương trình chính A = nhap_danh_sach() print("Danh sách A:", A) print("Danh sách số dương:", loc_duong(A)) print("Danh sách số âm:", loc_am(A))


D. TRẮC NGHIỆM 

Mới hơn Cũ hơn
Đọc tiếp:
Lên đầu trang