Wenn ich Funktionen für Bereichsparameter verwende, werden sie jedes Mal aufgerufen?Sind die Parameter für den Bereich() bei jeder Iteration der Schleife neu bewertet?
for i in range(min(some_list), max(other_list)):
...
Wenn ich Funktionen für Bereichsparameter verwende, werden sie jedes Mal aufgerufen?Sind die Parameter für den Bereich() bei jeder Iteration der Schleife neu bewertet?
for i in range(min(some_list), max(other_list)):
...
Es wird einfach, Ihre Frage zu beantworten mit ein kleines Experiment.
In [294]: def foo(n):
...: print('in foo')
...: return n
...:
In [295]: for i in range(foo(5)):
...: print(i)
...:
in foo
0
1
2
3
4
Also, ja, die Parameter zu range
sind nur einmal, ähnlich wie die Parameter zu jedem anderen Funktionsaufruf ausgewertet.
Ah, tolle Illustration. –
Wie stack_n_queue in den Kommentaren beantwortet:
Nein, for i in range(min(some_list), max(other_list))
Aufruf in den Funktionen nicht zur Folge haben werden als Argumente übergeben bei jeder Iteration immer genannt range()
Die Funktionen min
und max
werden aufgerufen, bevor das range
Objekt/die Liste erstellt wird, d. H. Argumentausdrücke werden vor Funktionsaufruf ausgewertet.
Daher werden sie nur einmal aufgerufen.
Nein. Sie werden einmal aufgerufen. –
Großartig. Danke für die schnelle Antwort! –