1. Phạm vi của biến khai báo trong hàm
Biến được khai báo bên trong một hàm chỉ có tác dụng trong phạm vi hàm đó. Chương trình chính không thể sử dụng biến này.
def func(a, b):
n = 10
a = a * 2
b = a + b
return a + b + n
a, b = 1, 2
print(func(a, b)) # Kết quả: 16
print(a, b) # Kết quả: (1, 2)
print(n) # Báo lỗi NameError vì n không tồn tại ngoài hàm.
Lưu ý:
- Các biến khai báo bên trong hàm không ảnh hưởng đến các biến cùng tên bên ngoài hàm.
- Nếu gọi một biến chưa được định nghĩa bên ngoài hàm, chương trình sẽ báo lỗi.
2. Phạm vi của biến khai báo ngoài hàm
Bên trong hàm có thể truy cập và sử dụng giá trị của biến đã khai báo trước đó ở bên ngoài hàm
Ví dụ 1:
N = 10
def f(a, b):
return a + b + N
print(f(1, 2)) # Kết quả: 13
Biến khai báo bên ngoài hàm có thể được sử dụng bên trong hàm nhưng không thể thay đổi giá trị của nó trừ khi sử dụng từ khóa global
.
Ví dụ 2:
t = 10
def f(n):
global t
t = 2 * n + 1
return t
print(f(1)) # Kết quả: 3
print(t) # Kết quả: 3
Lưu ý:
- Nếu không sử dụng từ khóa
global
, giá trị của biến khai báo bên ngoài sẽ không bị thay đổi bởi các thao tác bên trong hàm.
Thực hành
Nhiệm vụ 1: Viết hàm lọc danh sách các phần tử lớn hơn hoặc bằng giá trị x
def Select(A, x):
B = [] # Khởi tạo danh sách rỗng để lưu kết quả
for k in range(len(A)):
if A[k] >= x: # Kiểm tra nếu phần tử lớn hơn hoặc bằng x
B.append(A[k]) # Thêm phần tử vào danh sách kết quả B
return B # Trả về danh sách kết quả
# Ví dụ minh họa:
A = [1, 5, 3, 7, 2]
x = 4
print(Select(A, x)) # Kết quả: [5, 7]
Nhiệm vụ 2: Viết hàm chuyển đổi chữ hoa/thường/xuất hiện chữ hoa đầu mỗi từ
def Tach_tu(Str, c):
A = Str.split() # Tách chuỗi thành danh sách các từ
for k in range(len(A)):
if c == 0:
A[k] = A[k].upper() # Chuyển thành chữ in hoa
elif c == 1:
A[k] = A[k].lower() # Chuyển thành chữ in thường
elif c == 2:
A[k] = A[k].title() # Chuyển chữ cái đầu mỗi từ thành in hoa
return A
# Ví dụ minh họa:
Str = "hello world python"
print(Tach_tu(Str, c=0)) # Kết quả: ['HELLO', 'WORLD', 'PYTHON']
print(Tach_tu(Str, c=1)) # Kết quả: ['hello', 'world', 'python']
print(Tach_tu(Str, c=2)) # Kết quả: ['Hello', 'World', 'Python']
Nhiệm vụ 3: Xử lý danh sách số nguyên nhập từ bàn phím
Chương trình thực hiện lần lượt các bước sau:
- Nhập danh sách số nguyên.
- Lọc ra danh sách các số dương.
- Lọc ra danh sách các số âm.
def Nhap_Dulieu():
s = input("Nhập các số nguyên cách nhau bởi dấu cách: ")
A = list(map(int, s.split())) # Chuyển chuỗi nhập vào thành danh sách số nguyên
return A
def getB(A):
B = [x for x in A if x > 0] # Lọc ra các số lớn hơn 0
return B
def getC(A):
C = [x for x in A if x < 0] # Lọc ra các số nhỏ hơn 0
return C
# Chương trình chính:
A = Nhap_Dulieu()
print("Danh sách A:", A)
print("Danh sách B:", getB(A))
print("Danh sách C:", getC(A))