2014-11-28 6 views
1

Утреннее все,Python условное присвоение переменной

Может кто-то посоветовать, можно добиться чего-то вроде этого:

def myFunction(someParam) 
    if someParam == 1: 
     return "This and that" 
    else: 
     return None 

someVariable = someVariable || myFunction(valuePassedIn) 

т.е., учитывая «someVariable» имеет существующее значение, я хочу сохранить, что значение или заменить его значением, возвращаемым из «myFunction», если это не None?

Очевидно, что я могу сделать что-то вроде:

if myFunction(valuePassedIn) != None: 
    someVariable = myFunction(valuePassedIn) 

Но это, конечно, звонит MYFUNCTION дважды. С другой стороны, я мог бы сделать:

myFuncRes = myFunction(valuePassedIn) 
if MyFuncRes != None: 
    someVariable = myFuncRes 

Но было бы хорошо, если бы я мог сократить это до одной строки кода, в соответствии с моей «||» строка в первом фрагменте кода выше. Очевидно, я видел conditional expressions documentation, но, если я не ошибаюсь, это все равно потребует дважды позвонить myFunction?

Я думаю, один другой вариант будет проходить someVariable в качестве дополнительного к парам myFunction и использовать это как «другое» возвращение вместо None, но я не могу избавиться от ощущения, что это своего рода грязный - и Python, вероятно, имеет что-то более гладкое, что я мог бы использовать?

Благодаря

+0

Заметим, что 'если someParam = 1' в вашем' myFunction' фактически делает задание, а не сравнение , – Wieland

+1

@Wieland было бы, если бы это не было 'SyntaxError' –

+0

Извините, опечатка с моей стороны .... Отредактировано;) –

ответ

3

Да, вы можете сделать это

Пожалуйста, проверьте ниже код

>>> a = 1 
>>> def test(b): 
...  return b*10 
... 
>>> c = a or test(2) 
>>> c 
1 
>>> a = 0 
>>> c = a or test(2) 
>>> c 
20 
Смежные вопросы