2017-11-13 5 views

Antwort

1

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.

+0

Ah, tolle Illustration. –

0

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()

0

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.

Verwandte Themen