Hàm bên trong hàm trong Python
Trong Python, bên trong một hàm có thể khai báo
các hàm khác. Giả sử chúng ta có một hàm bên ngoài
outer, bên trong nó có chứa
hàm inner:
def outer():
def inner():
pass
Ví dụ trên trông khá đơn giản.
Tuy nhiên, thường có những tình huống khi
trong thân hàm outer ngoài
inner còn thực hiện các
thao tác khác. Để đơn giản hóa mã, có thể
đưa inner ra khối mã
bên ngoài, nhưng hàm này sẽ chỉ được sử dụng
một lần và chỉ bên trong hàm
outer. Vì vậy, việc đưa nó ra ngoài
không có ý nghĩa.
Hãy xem xét một ví dụ, khi một danh sách
được truyền vào hàm outer.
Và với sự trợ giúp của hàm inner,
phần tử số của danh sách sẽ được nâng lên lũy thừa bình phương.
Để làm điều này, sau hàm inner
chúng ta khai báo một danh sách rỗng res, trong
đó sẽ tích lũy các phần tử
được nâng lên bình phương trong vòng lặp:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Hãy gọi hàm outer,
truyền cho nó tham số là một danh sách và in
kết quả ra console:
print(outer([2, 3, 5])) # sẽ in ra [4, 9, 25]
Viết một hàm bên ngoài và một hàm bên trong, việc phối hợp hoạt động của chúng sẽ in ra mỗi phần tử chuỗi trong danh sách với chữ cái đầu viết hoa.
Cho các hàm:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Viết lại mã sao cho func1
là hàm bên trong của func2.