Путаница в аргументах Python по умолчанию - PullRequest
0 голосов
/ 06 июня 2018

Поскольку я новичок в python, я начал тему аргументов по умолчанию. Согласно определению, я понял, что аргументы по умолчанию оцениваются только один раз и что в точке определения функции, но этот фрагмент кода созданпутаница

def f(a, L=None):
    if L is None:
        L = []
    L.append(a)
    return L

В приведенном выше коде L является переменной, модифицированной для отображения в списке при первом вызове функции ex.f (1) Но даже во второй раз, когда функция вызывается, L изменяется в списокпример .. f (1) f (2) Результаты в [1] [2] Не могли бы вы на самом деле быть точным в объяснении того, как выполняется приведенная выше оценка кода

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Каждый раз, когда вы вызываете f без второго параметра, создается новый список.Если вы хотите повторно использовать список, вам нужно сохранить результат f

new_list = f(1)
f(2, new_list)
print(new_list)

Будет выводить [1,2]

0 голосов
/ 06 июня 2018

Вы можете прочитать это для лучшего понимания передачи аргументов Python https://www.python -course.eu /pass_arguments.php

Короче говоря, вы не можете переопределить значение аргумента,Вы можете создать только локальную переменную L, которая указывает на новый список, который будет скрывать аргумент L.Но при следующем вызове функции аргумент L по-прежнему None, если только он не будет передан

...