Scope & arguments · Phạm vi & tham số
Local variables
- A variable made inside a function is local.
- It only exists while the function runs.
- Code outside the function cannot see it.
Biến cục bộ
- Biến được tạo bên trong hàm là biến cục bộ.
- Nó chỉ tồn tại trong suốt quá trình hàm chạy.
- Mã nằm ngoài hàm không thể nhìn thấy nó.
def make_message():
note = "secret"
print(note)
make_message()
# print(note) would be an error: note is local
Global variables
- A variable made outside all functions is global.
- A function can read a global value.
- To change a global inside a function you need the
globalkeyword — but it is usually cleaner toreturna value instead.
Biến toàn cục
- Biến được tạo ngoài tất cả các hàm là biến toàn cục.
- Hàm có thể đọc một giá trị toàn cục.
- Để thay đổi biến toàn cục bên trong hàm, bạn cần từ khóa
global— nhưng thường sạch sẽ hơn nếureturnmột giá trị mới thay vì thay đổi trực tiếp.
Default values
- A parameter can have a default value:
def f(x, step=1):. - If the caller leaves it out, the default is used.
- Parameters with defaults come after the normal ones.
Giá trị mặc định
- Một tham số có thể có giá trị mặc định:
def f(x, step=1):. - Nếu người gọi bỏ qua, giá trị mặc định sẽ được sử dụng.
- Các tham số có giá trị mặc định phải đứng sau các tham số bình thường.
def power(base, exp=2):
return base ** exp
print(power(5))
print(power(2, 3))
How arguments are passed
- Python passes a reference to the object you give it.
- Numbers and strings are immutable: a function cannot change the caller's value.
- Lists are mutable: changes made inside a function do affect the caller's list.
Cách số đối được truyền vào
- Python truyền một tham chiếu đến đối tượng mà bạn cung cấp.
- Số và chuỗi là không thể thay đổi (immutable): hàm không thể thay đổi giá trị của người gọi.
- Danh sách là có thể thay đổi (mutable): những thay đổi được thực hiện bên trong hàm sẽ ảnh hưởng đến danh sách của người gọi.
def try_change(n):
n = n + 100 # changes only the local copy
print(n)
x = 5
try_change(x)
print(x) # x is still 5
In Cambridge pseudocode (A-Level 9618)
BYVALpasses a copy (caller unchanged);BYREFshares the same data (caller changed).- ⚠️ These two keywords are A-Level 9618 only. IGCSE 0478 passes every parameter by value; to send a result back you use a
FUNCTIONandRETURNit.
Trong pseudocode Cambridge (A-Level 9618)
BYVALtruyền một bản sao (người gọi không bị thay đổi);BYREFchia sẻ cùng dữ liệu (người gọi bị thay đổi).- ⚠️ Hai từ khóa này chỉ dành riêng cho A-Level 9618. IGCSE 0478 truyền mọi tham số theo giá trị; để gửi kết quả trở lại, bạn dùng một
FUNCTIONvàRETURNnó.
PROCEDURE Increase(BYREF N : INTEGER)
N ← N + 1
ENDPROCEDURE
PROCEDURE Show(BYVAL N : INTEGER)
OUTPUT N
ENDPROCEDURE
Common mistakes
- A variable made inside a function is local — it cannot be seen outside.
- Arguments fill the parameters in the order you write them.
- To use a result outside,
returnit and store what comes back.
Lỗi thường gặp
- Biến được tạo bên trong hàm là biến cục bộ — nó không thể được nhìn thấy ở bên ngoài.
- Số đối điền vào các tham số theo thứ tự bạn viết.
- Để sử dụng kết quả ở bên ngoài,
returnnó và lưu lại giá trị trả về.
Now you try
- The checks call your function with different arguments.
- Press Check answer to test your code.
Bây giờ bạn thử
- Các bài kiểm tra sẽ gọi hàm của bạn với các số đối khác nhau.
- Nhấn Check answer (Kiểm tra câu trả lời) để thử mã của bạn.
Arguments live in the call · Tham số tồn tại trong lời gọi
Each call gets its own copy of the arguments — they vanish when it returns. · Mỗi lời gọi nhận được bản sao riêng của các tham số — chúng biến mất khi trả về.
Write greet(name, greeting="Hi") that returns greeting, then , , then name, then !. So greet("Sam") is Hi, Sam! and greet("Sam", "Hello") is Hello, Sam!. · Viết greet(name, greeting="Hi") trả về greeting, sau đó , , rồi name, và cuối cùng là !. Do đó, greet("Sam") sẽ là Hi, Sam! và greet("Sam", "Hello") sẽ là Hello, Sam!.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Write add_item(lst, x) that appends x to the list lst. Do not return anything — the caller's list should change because lists are mutable. · Viết add_item(lst, x) thêm x vào danh sách lst. Không trả về gì cả — danh sách của người gọi sẽ thay đổi vì danh sách có thể thay đổi được.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Write between(low, high, x) that returns True if x is from low to high (inclusive), otherwise False. · Viết between(low, high, x) trả về True nếu x nằm trong khoảng từ low đến high (bao gồm cả hai đầu mút), ngược lại thì trả về False.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Write make_countdown(start, stop=1) that returns a list counting down from start to stop. So make_countdown(3) is [3, 2, 1] and make_countdown(5, 3) is [5, 4, 3]. · Viết make_countdown(start, stop=1) trả về danh sách đếm ngược từ start đến stop. Vậy make_countdown(3) là [3, 2, 1] và make_countdown(5, 3) là [5, 4, 3].
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.