【问题标题】:Python: How to write a sequence of code?Python:如何编写代码序列?
【发布时间】:2015-10-17 14:15:10
【问题描述】:

我目前正在自学 Python 3,但有一件事让我很困扰:我的意思是我所期望的一切,包括 lambda。但是,如何编写代码块?

例如我如何在python(2或3)中编写以下简单的程序代码:

(  (lambda () (display "hello ") (display "world") (newline))  )
=> hello world

现在python:

=> >>> lambda :print("hello") print("world");

【问题讨论】:

    标签: python lambda block


    【解决方案1】:

    你的意思是这样,

    >>> f = lambda : print("hello","world")
    >>> f
    <function <lambda> at 0x7faeca581d08>
    >>> f()
    hello world
    

    【讨论】:

      【解决方案2】:

      这不是您编写 Python 的方式。 Lambda 只是非常简单函数的语法糖,并且只能包含一个表达式。如果你想做其他事情,你必须写一个函数。

      def hello_world():
          print("hello")
          print("world")
      

      请注意,这不是 lambda 的事实没有任何区别;你仍然可以将hello_world 作为一等对象传递。

      【讨论】:

      • 很好的解释,但是你的代码打印了两行,而应该是一行:print('hello world')
      【解决方案3】:

      如果您真的想在 lambda 中对多个表达式进行排序,可以通过从多个子表达式构造数据结构来“伪造”它。 Python 将在构建数据结构时评估数据结构中的项目。元组是更有效的数据结构之一:

      >>> f = lambda: (print('Hello ', end=''), print('World'))
      >>> x = f()
      Hello World
      

      请注意,f 返回一个元组,其中包含两个 print 函数调用的返回值,每个调用都是 None。 p>

      >>> x
      (None, None)
      

      这会按照您期望的方式工作,因为 Python 保证按从左到右的顺序计算元组中的表达式 ,如下所述:

      【讨论】:

      • 我同意我的示例不是规范的 Python,但它确实回答了这个问题:它演示了如何在单个 lambda 中评估多个语句。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多