Bài học theo mô-đun (1/4)
def và trả lại
hàm là khối mã có thể tái sử dụng: bạn xác định mã đó một lần bằng def,
sau đó gọi nó bao nhiêu lần tùy thích. Các hàm tạo mã theo mô-đun,
có thể kiểm tra và tự ghi lại.
Cú pháp cơ bản
def saluta(nome):
return f"Ciao, {nome}!"
saluta("Ada") # 'Ciao, Ada!'defgiới thiệu hàm, theo sau là tên và các thông số trong dấu ngoặc đơn.:mở khối thụt lề.returngửi lại một giá trị cho người gọi và kết thúc hàm.
Rõ ràng return so với ẩn None
Nếu bạn không viết return, hàm sẽ ngầm trả về None:
def stampa_e_basta(x):
print(x)
risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato) # Nonereturn trần (không có giá trị) cũng trả về None nhưng có thể đóng vai trò sớm
thoát:
def primo_pari(nums):
for n in nums:
if n % 2 == 0:
return n
return None # explicit: communicates "not found"Nhiều giá trị? Trả về một bộ dữ liệu
Python không có "tham số ngoài": để trả về nhiều thứ, hãy trả về một tuple (thường được người gọi giải nén).
def divisione_resto(a, b):
return a // b, a % b
quoziente, resto = divisione_resto(17, 5)
# 3, 2Chuỗi tài liệu: tài liệu tích hợp
Chuỗi đầu tiên bên trong hàm là docstring: nó hiển thị trong
help(fn) và dưới dạng chú giải công cụ trong IDE.
def area_cerchio(raggio):
"""Calcola l'area di un cerchio dato il raggio."""
import math
return math.pi * raggio ** 2Phạm vi: biến cục bộ
Các biến được xác định bên trong hàm là cục bộ: chúng không tồn tại bên ngoài.
def f():
x = 10
return x
f() # 10
x # NameError: name 'x' is not definedHàm luôn trả về một cái gì đó
Trong Python, nếu một hàm không khai báo rõ ràng câu lệnh return hoặc có return trống, thì hàm đó sẽ ngầm trả về giá trị đặc biệt None. Không có hàm nào không trả về giá trị.
Hãy thử nó
Xác định hàm `double(x)` trả về `x * 2`. Sau đó gọi nó bằng 7 và gán kết quả cho `result`. Đánh giá `kết quả`.
Hiển thị gợi ý
Sử dụng trả về x * 2.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Xác định `min_max(nums)` trả về một bộ dữ liệu `(tối thiểu, tối đa)`. Gọi nó trên `[3, 1, 4, 1, 5, 9, 2, 6]` và giải nén kết quả thành `mn, mx`. Đánh Giá `(mn, mx)`.
Hiển thị gợi ý
trả về tối thiểu (số), tối đa (số)
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
Xác định hàm \`is_palindrome(text)\` trả về \`True\` nếu chuỗi đầu vào bằng với phiên bản đảo ngược của nó và \`False\` nếu ngược lại. Kiểm tra hàm với \`is_palindrome("radar")\` làm biểu thức cuối cùng.
Hiển thị gợi ý
Sử dụng cắt text[::-1] để đảo ngược chuỗi và so sánh nó với văn bản gốc.
Giải pháp khả dụng sau 3 lần thử