Вот код, который выглядит как ваша первая попытка:
def absolute_value(x): #define a function "absolute_value"
"""returns the absolute value of x.
"""
if x < 0:
return -x
else:
return x
Однако он избегает присваивания, которое не является выражением.
Вот альтернативный подход с использованием индексированного кортежа для создания троичного выражения :
def absolute_value(x):
return (x , -x ) [x < 0]
Последнее, на что следует обратить внимание: ваш код подразумевает, что вы можете поверить, что способ передать значение обратно вызывающей программе - это изменить аргумент x
. Однако значение x
не изменяет параметр, используемый при вызове absolute_value (). Рассмотрим этот код, вызывающий вашу вторую функцию:
>>> x = -3
>>> print absolute_value(x)
3
>>> print x
-3
Как вы можете видеть, x
все еще имеет значение, которое было до вызова. Значение передается обратно в вызывающую функцию как возвращаемое значение. Итак, вот как вам нужно вызвать функцию для изменения x:
>>> print x ; x=absolute_value(x)
-3
>>> print x
3
То есть вам нужно явно присвоить возвращаемое значение x
.