Chuyển đến nội dung chính
Mô-đun 5 · Bài học 1 trong tổng số 417/36 trong khóa học~12 min
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

Python
def saluta(nome):
    return f"Ciao, {nome}!"

saluta("Ada")     # 'Ciao, Ada!'
  • def giớ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ề.
  • return gử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:

Python
def stampa_e_basta(x):
    print(x)

risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato)   # None

return trần (không có giá trị) cũng trả về None nhưng có thể đóng vai trò sớm thoát:

Python
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).

Python
def divisione_resto(a, b):
    return a // b, a % b

quoziente, resto = divisione_resto(17, 5)
# 3, 2

Chuỗ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.

Python
def area_cerchio(raggio):
    """Calcola l'area di un cerchio dato il raggio."""
    import math
    return math.pi * raggio ** 2

Phạ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.

Python
def f():
    x = 10
    return x

f()    # 10
x      # NameError: name 'x' is not defined

Hà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ó

tập thể dục#python.m5.l1.e1
Nỗ lực: 0Đang tải…

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ả`.

Đang tải trình chỉnh sửa…
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

tập thể dục#python.m5.l1.e2
Nỗ lực: 0Đang tải…

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)`.

Đang tải trình chỉnh sửa…
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

tập thể dục#python.m5.l1.e3
Nỗ lực: 0Đang tải…

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.

Đang tải trình chỉnh sửa…
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ử