94 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			94 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Lambda Expressions | |||
|  | localeTitle: Лямбда-выражения | |||
|  | --- | |||
|  | ## Лямбда-выражения
 | |||
|  | 
 | |||
|  | Лямбда-выражения идеально используются, когда у нас есть что-то простое, чтобы быть сделанным, мы больше заинтересованы в быстром выполнении работы, а не в формальном названии функции. Лямбда-выражения также известны как анонимные функции. [Помогите нашему сообществу расширить его](https://github.com/freecodecamp/guides/tree/master/src/pages/python/lambda-expressions/index.md) . | |||
|  | 
 | |||
|  | Лямбда-выражения в Python - это короткий способ объявить небольшие и анонимные функции (нет необходимости указывать имя для лямбда-функций). Лямбда-функции ведут себя так же, как обычные функции, объявленные с ключевым словом `def` . Они пригождаются, когда вы хотите кратко определить небольшую функцию. Они могут содержать только одно выражение, поэтому они не подходят для функций с операторами потока управления. мастер | |||
|  | 
 | |||
|  | #### Синтаксис лямбда-функции
 | |||
|  | 
 | |||
|  | `lambda arguments: expression` | |||
|  | 
 | |||
|  | Лямбда-функции могут иметь любое количество аргументов, но только одно выражение | |||
|  | 
 | |||
|  | #### Пример кода
 | |||
|  | 
 | |||
|  | ```py | |||
|  | # Lambda function to calculate square of a number 
 | |||
|  |  square = lambda x: x ** 2  | |||
|  |  print(square(3)) # Output: 9  | |||
|  |   | |||
|  |  # Traditional function to calculate square of a number  | |||
|  |  def square1(num):  | |||
|  |   return num ** 2  | |||
|  |  print(square(5)) # Output: 25  | |||
|  | ``` | |||
|  | 
 | |||
|  | В приведенном выше примере `lambda x: x ** 2` дает анонимный функциональный объект, который может быть связан с любым именем. Таким образом, мы связали объект функции с `square` и, следовательно, с этого момента мы можем назвать `square` объект, как любая традиционная функция. например, `square(10)` | |||
|  | 
 | |||
|  | ## Примеры
 | |||
|  | 
 | |||
|  | ### начинающий
 | |||
|  | 
 | |||
|  | ```py | |||
|  | lambda_func = lambda x: x**2 # Function that takes an integer and returns its square  | |||
|  |  lambda_func(3) # Returns 9  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### промежуточный
 | |||
|  | 
 | |||
|  | ```py | |||
|  | lambda_func = lambda x: True if x**2 >= 10 else False  | |||
|  |  lambda_func(3) # Returns False  | |||
|  |  lambda_func(4) # Returns True  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### Сложный
 | |||
|  | 
 | |||
|  | ```py | |||
|  | my_dict = {"A": 1, "B": 2, "C": 3}  | |||
|  |  sorted(my_dict, key=lambda x: my_dict[x]%3) # Returns ['C', 'A', 'B']  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### Использование регистра
 | |||
|  | 
 | |||
|  | Предположим, вы хотите отфильтровать нечетные числа из `list` . Вы можете использовать цикл `for` : | |||
|  | 
 | |||
|  | ```python | |||
|  | my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  | |||
|  |  filtered = []  | |||
|  |   | |||
|  |  for num in my_list:  | |||
|  |      if num % 2 != 0:  | |||
|  |          filtered.append(num)  | |||
|  |   | |||
|  |  print(filtered)      # Python 2: print filtered  | |||
|  |  # [1, 3, 5, 7, 9]  | |||
|  |  ```  | |||
|  |   | |||
|  |  You could write this as a one liner with list-comprehensions  | |||
|  | ``` | |||
|  | 
 | |||
|  | питон filter = \[x для x в \[1, 2, 3, 4, 5, 6, 7, 8, 9, 10\], если x% 2! = 0\] \`\` \` | |||
|  | 
 | |||
|  | Но у вас может возникнуть соблазн использовать встроенную функцию `filter` . Зачем? Первый пример - немного подробный, однострочный может быть сложнее понять, где в качестве `filter` предлагает лучшее из обоих слов. Более того, встроенные функции обычно быстрее. | |||
|  | 
 | |||
|  | \`\` \`\` Питон my\_list = \[1, 2, 3, 4, 5, 6, 7, 8, 9, 10\] | |||
|  | 
 | |||
|  | filter = filter (lambda x: x% 2! = 0, my\_list) | |||
|  | 
 | |||
|  | Список (фильтруется) | |||
|  | 
 | |||
|  | # \[1, 3, 5, 7, 9\]
 | |||
|  | 
 | |||
|  | ` `` NOTE: in Python 3 built in function return generator objects, so you have to call` список `, while in Python 2 they return a` список `,` кортеж `or` строку\`. | |||
|  | 
 | |||
|  | Что случилось? Вы сказали, что `filter` принимает каждый элемент в `my_list` и применяет лямбда-выражения. Значения, возвращающие `False` , отфильтровываются. | |||
|  | 
 | |||
|  | #### Дополнительная информация:
 | |||
|  | 
 | |||
|  | *   [Официальный документ](https://docs.python.org/3/reference/expressions.html#lambda) | |||
|  | *   [Дальнейшее чтение](https://dbader.org/blog/python-lambda-functions) |