Вопросы и задачки для подготовки к собеседованиям и прокачки навыков
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Другие наши проекты: https://tprg.ru/media
Post #3555
1.39K
PY @quiz_python
Showing posts older than #3558 · Back to latest
def multiple(x, y):
x = 2 # Изменяется только локальное имя
y = [3, 4]
return x, y # Новые значения возвращаются в виде кортежа
X = 1
L = [1, 2]
Z = multiple(X, L) # Результаты присваиваются именам в вызывающей программе
print(Z) # (2, [3, 4]) — это кортеж

func(**словарь) передает все пары ключ / значение в словаре как отдельные ключевые аргументы. dct указаны элементы: функция распределит их поименно. Такой тип сопоставления аргументов называется «ключевое». foo(first = 1, second = 'Текст') # как интерпретатор видит аргументы
foo(arg1, arg2), где аргументы сопоставляются по их положению. Чтобы оно заработало со словарем dct, придется передать их так:foo(dct['first'], dct['second'])

X = 1
a = X # Разделяют тот же самый объект в памяти
a = 2 # Переустанавливает только a, значением X по-прежнему будет 1
print(X)

def changer(a, b): # Аргументам присваиваются ссылки на объекты
a = 2 # Изменяет только значение локального имени
b[0] = 'spam' # Изменяет разделяемый объект на месте
X = 1
L = [2, 3]
changer(X, L) # Передача изменяемого и неизменяемого объектов
print(X, L) # X остается прежним, L отличается

Spam', поскольку оператор nonlocal означает, что присваивание X внутри вложенной функции изменяет X в локальной области видимости объемлющей функции. Без этого оператора присваивания классифицировало X бы как локальную переменную во вложенной функции, делая ее другой переменной; тогда код выводил бы 'Ni'.
Ni' в одной строке, затем 'Spam' в другой, потому что print() во вложенной функции находит имя в локальной области видимости объемлющей функции, а отображение в конце находит переменную в глобальной области видимости.
Ni', поскольку объявление global заставляет переменную, присваиваемую внутри функции, ссылаться на переменную в объемлющей глобальной области видимости.