Параметризованиие функции: продолжение
Попробуйте запустить код в редакторе.
Вот что вы увидите в консоли:
TypeError: message() missing 1 required positional argument: 'number'
output
Это наверняка выглядит лучше:
def message(number):
print("Enter a number:", number)
message(1)
Более того, это лучше себя ведет. Код выдаст следующий результат:
Enter a number: 1
output
Видите, как это работает? Значение аргумента, используемого во время вызова (1
), было передано в функцию, установив начальное значение параметра с именем number
.
Мы должны обратить Ваше внимание на одно важное обстоятельство.
Допустимо и возможно иметь переменную с таким же именем, как у параметра функции.
Код иллюстрирует этот феномен:
def message(number):
print("Enter a number:", number)
number = 1234
message(1)
print(number)
Подобная ситуация активирует механизм, называемый затенением:
- параметр
x
затеняет любую переменную с таким же именем, но... - ... только внутри функции, определяющей параметр.
Параметр с именем number
- это не то же самое, что и переменная с именем number
.
Это означает, что приведенный выше фрагмент даст следующий вывод:
Enter a number: 1
1234
output