2014-12-19 3 views
0

У меня есть основные функции со следующими кодами:Как повторно использовать коды функций в Python

def func_0(): 
    codes_segment_a 
    codes_segment_b 
    codes_segment_c 

Многие другие мелкие функции обмена коды с func_0, но многие добавить некоторые новые коды. Возьмем следующую функцию в качестве примера:

def func_x(): 
    new codes... 
    codes_segment_a 
    codes_segment_b 
    new codes... 
    codes_segment_c 

Самый простой и наиболее tedicous решение я выясняю, чтобы скопировать и вставить общие коды. Но это выглядит так глупо, потому что у меня более 20 таких функций.

Я оставляю новые в python и, пожалуйста, дайте мне несколько предложений. Подробное объяснение или примеры являются весьма предпочтительными. Спасибо.

+6

Сделать эти сегменты кода функциями, если вы многократно их используете, поэтому функции существуют! – wnnmaw

+3

Почему бы не [ООП] (http://en.wikipedia.org/wiki/Object-oriented_programming)? – markcial

+0

Эти сегменты общего кода довольно короткие, скажем, 4 ~ 6 предложений долго. –

ответ

0

Один общий подход - использовать классы и наследование. Супер-упрощенный пример (но см Classes для того, как использовать классы и наследование правильно):

class Reuse(object): 
    def square(self, x): 
     return x**2 

class Specific(Reuse): 
    def times3(self,x): 
     return x*3 

sp = Specific() 
print(sp.times3(4)) 
print(sp.square(4)) 

Если вы поставите вспомогательные функции в «верхнем уровне ", а затем создайте новые классы, которые наследуются от этого, но которые содержат определенные функции, которые вам нужны, тогда вам нужно только один раз сделать служебные функции. Нет ничего плохого в том, чтобы делать очень короткие функции, даже 3-4 строки в длину, потому что это может улучшить читаемость и эффективность.

+0

Эти функции фактически являются внутренней функцией класса. Поэтому я смущаюсь использовать ООП для организации этих функций как нового класса, хотя неплохо использовать Наследование для реализации моей работы. Вы все еще предлагаете использовать ООП в этом случае? Благодарю. –

+0

Из вашего описания это подходящее время для использования наследования – iayork