所以我能理解的是,你有很長的功能,如:
def long_func(blah, foo, *args):
...
...
my_val = long_func(foo, blah, a, b, c)
您所做的一切是:
def long_func(blah, foo, *args):
def short_func1():
...
def short_func2():
...
...
short_func1()
short_func2()
...
...
my_val = long_func(foo, blah, a, b, c)
你有很多更多的選擇,我將列出二:
它做成一個類
class SomeName(object):
def __init__(self, blah, foo, *args):
self.blah = blah
self.foo = foo
self.args = args
self.result = None # Might keep this for returning values or see (2)
def short_func1(self):
...
def short_func2(self):
...
def run(self): # name it as you like!
self.short_func1()
self.short_func2()
return self.result # (2) or return the last call, on you
...
my_val = SomeName(foo, blah, a, b, c).run()
製作另一個模塊並將short_funcs
放入其中。就像flyx所建議的那樣。
def long_func(foo, blah, *args):
from my_module import short_func1, short_func2
short_func1(foo)
short_func2(blah)
你想留的功能,還是會在OOP編程考慮? – tim
請參見[在python中定義私有模塊函數](http://stackoverflow.com/questions/1547145/defining-private-module-functions-in-python)。 – falsetru
我認爲最好將您的Python編程看作一組名稱空間和作用域。使用類,模塊和包作爲將某些類型的功能和行爲(方法)綁定(封裝)給某些給定類型(類)的實例的方式。嵌套應該謹慎使用,只能用於範圍界定或避免命名空間衝突。 –