Порядок присваивания переменных Python - PullRequest
4 голосов
/ 28 июля 2010

Есть ли способ сделать присвоение переменной внутри вызова функции в Python? Что-то вроде

curr= []
curr.append(num = num/2)

Ответы [ 3 ]

8 голосов
/ 28 июля 2010

Nopey.Назначение - это оператор .Это не выражение , как в языках, производных от C.

4 голосов
/ 28 июля 2010

Я почти уверен, что помню, что одна из причин, по которой Python был создан, заключалась в том, чтобы избегать этих мерзостей, вместо этого отдавая предпочтение удобочитаемости, а не мнимой хитрости: -)

Что, мол, скажи, неправильно со следующим?1003 *

curr= []
num = num/2
curr.append(num)
0 голосов
/ 28 июля 2010

Даже если бы вы могли, побочные эффекты - отличный способ сделать ваш код нечитабельным, но нет ... Python интерпретирует это как аргумент ключевого слова.Самое близкое, к чему вы можете прийти:

class Assigner(object):
   def __init__(self, value):
      self.value = value
   def assign(self, newvalue):
      self.value = newvalue
      return self.value

 # ...
 num = Assigner(2)
 curr = []
 curr.append(num.assign(num.value / 2))
...