Передача переменной из одной функции в другую

У меня есть функция, способная много работать в ней, поэтому я решил разделить ее на более мелкие функции и вызвать все мои функции блока внутри одной функции. → например

def main_function(self):
 time_subtraction(self)
 pay_calculation(self,todays_hours)

и ->

def time_subtraction(self):
 todays_hours = datetime.combine(datetime(1,1,1,0,0,0), single_object2) - datetime.combine(datetime(1,1,1,0,0,0),single_object)
 return todays_hours

Так что я пытаюсь сделать здесь, чтобы сделать todays_hours доступными для моей main_function. Я прочитал много документации и других ресурсов, но, судя по всему, я все еще борюсь с этим аспектом.

EDIT - это не метод класса. Его просто файл, где у меня много функций, и я импортирую его там, где это необходимо.

1 ответ

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

pay_calculation(self, time_subtraction(self))

... или сохранить значение, чтобы его можно было передать:

hours = time_subtraction(self)
pay_calculation(self, hours)

В качестве побочного примечания, если это методы в классе, вы должны называть их self.time_subtraction(), self.pay_calculation(hours) и т.д., А не time_subtraction(self) и т.д. И если они не являются методами в классе, может быть, они и должны быть.

Часто имеет смысл использовать функцию для экземпляра Spam, а для метода спама - отправлять self как первый аргумент, и в этом случае все это нормально. Но тот факт, что вы определили def time_subtraction(self): подразумевает, что не то, что здесь происходит, и вы путаетесь о методах против обычных функций.

licensed under cc by-sa 3.0 with attribution.