Есть ли у python условная интерпретация кода? - PullRequest
1 голос
/ 06 мая 2020

Мне было интересно, есть ли в python что-то вроде условной интерпретации кода. Примерно так:

x = True
if x:
    for i in range(0, 10):
else:
    for i in range(0, 100):
# ------------------------------
        print(i) # this is the code inside either one these for loop heads

Я знаю, что могу это сделать:

x = True
if x:
    for i in range(0, 10):
        print(i)
else:
    for i in range(0, 100):
        print(i)

Но в моем случае у меня много кода for-l oop, и это не поможет Это будет очень хорошее решение.

Ответы [ 4 ]

3 голосов
/ 06 мая 2020

Всегда можно:

x = True

for i in range(0,10) if x else range(0, 100):
    print(i)
1 голос
/ 06 мая 2020

Нет, у него нет такого синтаксиса. Однако вы можете достичь той же цели и другими способами.

Например, извлеките часть, которая отличается (10 по сравнению с 100) из общей части (for in range(...) l oop):

limit = 10 if x else 100

for i in range(limit):
    print(i)

Или сохраните один из двух разных диапазонов в переменной и l oop сверх этого:

numbers = range(0, 10) if x else range(0, 100)

for i in numbers:
    print(i)

Или извлеките l oop в функцию, которая выполняет произвольное действие на каждой итерации:

def loop(limit, action):
    for i in range(limit):
        action(i)

loop(10 if x else 100, lambda i: print(i))
0 голосов
/ 06 мая 2020
if x:
    my_iter = range(0, 10)
else:
    my_iter = range(0, 100)
for i in my_iter:
     print(i) 
0 голосов
/ 06 мая 2020

Если хотите, вы можете сделать это.

x = True
for i in range(0, (10 if x else 20)):
    print(i)

Здесь оператор if else работает так result_if_true if condition else result_if_false.

...