Scope & arguments · Область видимости и аргументы
Local variables
- A variable made inside a function is local.
- It only exists while the function runs.
- Code outside the function cannot see it.
Локальные переменные
- Переменная, созданная внутри функции, является локальной.
- Она существует только во время выполнения функции.
- Код вне функции не может её увидеть.
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.
Глобальные переменные
- Переменная, созданная вне всех функций, является глобальной.
- Функция может читать глобальное значение.
- Чтобы изменить глобальную переменную внутри функции, нужен ключевое слово
global, но обычно чище создатьreturnновое значение.
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.
Значения по умолчанию
- Параметр может иметь значение по умолчанию:
def f(x, step=1):. - Если вызывающий код пропускает его, используется значение по умолчанию.
- Параметры со значениями по умолчанию идут после обычных параметров.
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.
Как передаются аргументы
- Python передает ссылку на объект, который вы ему даете.
- Числа и строки являются неизменяемыми: функция не может изменить значение вызывающего кода.
- Списки являются изменяемыми: изменения, сделанные внутри функции, действительно влияют на список вызывающего кода.
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.
В псевдокоде Cambridge (A-Level 9618)
BYVALпередает копию (вызывающий код не меняется);BYREFделит одни и те же данные (вызывающий код меняется).- ⚠️ Эти два ключевых слова используются только в A-Level 9618. В IGCSE 0478 каждый параметр передается по значению; для возврата результата используется
FUNCTIONи егоRETURN.
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.
Распространенные ошибки
- Переменная, созданная внутри функции, является локальной — её не видно снаружи.
- Аргументы заполняют параметры в том порядке, в котором они написаны.
- Чтобы использовать результат снаружи,
returnего и сохраните то, что вернется.
Now you try
- The checks call your function with different arguments.
- Press Check answer to test your code.
Теперь попробуйте сами
- Проверки вызывают вашу функцию с разными аргументами.
- Нажмите Check answer (Проверить ответ), чтобы протестировать свой код.
Arguments live in the call · Аргументы существуют только во время вызова
Each call gets its own copy of the arguments — they vanish when it returns. · Каждый вызов получает собственную копию аргументов — они исчезают после завершения вызова.
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!. · Напишите функцию greet(name, greeting="Hi"), которая возвращает последовательно значения greeting, затем , , затем name, затем !. Таким образом, значение переменной greet("Sam") станет равным Hi, Sam!, а значение переменной greet("Sam", "Hello") — равным Hello, Sam!.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
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. · Напишите функцию add_item(lst, x), которая добавляет элемент x в список lst. Не возвращайте ничего — список вызывающей программы изменится, поскольку списки являются изменяемыми объектами (mutable).
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
Write between(low, high, x) that returns True if x is from low to high (inclusive), otherwise False. · Напишите between(low, high, x), которая возвращает True, если x находится в диапазоне от low до high (включительно), иначе верните False.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
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]. · Напишите make_countdown(start, stop=1), которая возвращает список чисел, убывающих от start до stop. Таким образом, make_countdown(3) равно [3, 2, 1], а make_countdown(5, 3) равно [5, 4, 3].
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.