Сокращение для определения одинаковых функций Python?

#python #function

#python #функция

Вопрос:

Если у меня есть много переменных, которые я хочу инициализировать одним и тем же значением, я использую:

 a = b = c = ""
  

Существует ли аналогичное сокращение для определения многих функций, которые выполняют одно и то же? То есть ни одно из следующих действий:

 def x() = y() = z():
def x() = def y() = def z():
  

Ответ №1:

Вы можете просто назначать функции так, как вы бы назначали переменные.

 def z():
  whatever

x = y = z
  

Вы не можете сделать это в одной строке, если хотите использовать def , но если вы можете превратить это в lambda , вы можете сделать однострочный:

 x = y = z = lambda foo: bar()
  

Ответ №2:

Как насчет:

 def z():
    pass

x = y = z
  

Комментарии:

1. Дорогой Том: Я думаю, вы неправильно истолковали вопрос. Например, вы не читали вопрос. С любовью, Сантьяго.

2. На самом деле, что-то странное произошло в моем форматировании, и вторая часть моего ответа была обрезана. Ура, что испортили мой первый ответ!

3. Хаха, добро пожаловать в SO! возможно, ваши будущие ответы ответят на этот вопрос! 😛

Ответ №3:

Хм … функции тоже являются объектами, так что вы можете сделать это:

 def foo():
   pass

bar = foo
  

Как вы можете видеть, синтаксис тот же.

Зачем вам ЭТО НУЖНО, черт возьми, если я знаю.

Ответ №4:

вы можете сделать что-то вроде этого:

 def X():
    pass

Y = Z = X
  

Комментарии:

1. Имена функций должны быть в нижнем регистре; соответствующий регистр предназначен для имен классов.