2015-10-17 3 views
0

В настоящее время я преподаю себе python 3, и есть одна вещь, которая меня беспокоит: я имею в виду, что есть все, что я ожидаю, в том числе лямбда. Но как я написал блок кода?Python: Как написать последовательность кода?

Например, как я пишу следующий простой программный код в Python (2 или 3):

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

Сейчас питон:

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

ответ

1

Думаю, вы имели в виду это,

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

Это не то, как вы пишете Python. Lambdas - синтаксический сахар для очень простой функции только и могут содержать только одно выражение. Если вы хотите сделать что-нибудь еще, вам нужно написать функцию.

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

Обратите внимание, что тот факт, что это не лямбда, не имеет никакого значения; вы все равно можете пройти hello_world как объект первого класса.

+0

Хорошее объяснение, но ваш код печатает две строки, когда это должно быть одно: 'print ('hello world')' –

0

Если вы действительно хотите упорядочить несколько выражений внутри лямбда, можно создать «подделку», построив структуру данных из нескольких подвыражений. Python будет оценивать элементы в структуре данных, поскольку он создает структуру данных. Кортеж является одним из наиболее эффективных структур данных для использования:

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

Обратите внимание, что е возвращает кортеж, содержащий возвращенные значения вызовов функций на два печать, каждый из которых не является Ни.

>>> x 
(None, None) 

Это работает так, как вы ожидаете, что это работает, потому что Python гарантированно оценить выражения в кортеже , чтобы слева направо, как описано здесь:

Смежные вопросы