【问题标题】:Python variable assignment order of operationsPython变量赋值操作顺序
【发布时间】:2011-03-21 23:08:59
【问题描述】:

有没有办法在 python 的函数调用中进行变量赋值?类似的东西

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

【问题讨论】:

    标签: python function variable-assignment


    【解决方案1】:

    不。分配是statement。它不是 expression,因为它在 C 派生语言中。

    【讨论】:

      【解决方案2】:

      我很确定我记得创建 Python 的原因之一是为了避免这些可憎的事情,而是更喜欢可读性而不是所谓的聪明 :-)

      请问,以下有什么问题?

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

      【讨论】:

      • 好吧,我明白你的意思,但我不明白为什么cur.append(num=num/2) 的可读性不如[x for x in range(1000,9999) if not [t for t in range(2,x) if not x%t]] 之类的东西
      • 我也不使用那些 :-) 我更像是你的“经典”Python 用户。
      【解决方案3】:

      即使可以,副作用表达式也是使代码不可读的好方法,但不是... 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))
      

      【讨论】:

      • 为什么,请告诉我,您是否会想到上述内容。 ;)
      • @msw,例如,有时人们会将“参考算法”从 C 转录到 Python,并且在这种转录的第一阶段尽可能接近 C 代码的结构是好主意(一个重构稍后以使代码像Python一样,更快等,一个参考算法的工作Python实现之后)。在使用 Python 制作原型代码以便稍后转录为 C 时,可以应用略有不同但不是大不相同的类似考虑:原型越接近 C 的结构,转录就越容易。
      • @alex,首先,请注意眨眼的笑脸;),然后注意与paxdiablo 答案第二句的词汇平行。然后请注意,Safyan 先生的回答中的“因为我可以,但实际上,不要”,以及它与等效的类似 C 的表达式有何不同。参看。 en.wiktionary.org/wiki/levity
      猜你喜欢
      • 1970-01-01
      • 2016-02-03
      • 2013-02-12
      • 1970-01-01
      • 2020-04-16
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多