这个不是Python的问题,不管你用那个编程语言都会碰到这个问题。也没有统一的解决方案。前面诸位提到的编辑器折叠代码的功能确实能部分解决问题,
但是从根子上讲,还是得靠合理地设计程序结构。我这里讲一些我自己的心得,供你作参考。
首先要合理使用Py的sub function
def outer():
def inner():
foobarblahdah
然后把很多nasty的东西放到inner里面。很多时候这种方法能解决很多问题。
此外,要合理使用generator。Py的generator是一个非常强大的工具,用得好,能让你的代码非常赏心悦目。比方说,很多时候,多层的
for while,就是要一环套一环地筛选对象。那么你完全可以这么写代码。
def func():
criteria1 = lambda : foo
criteria2 = lambda : bar
criteria3 = lambda : blah
criteria4 = lambda : dah
def gen1(object_set, *criteria):
for i in object_set:
play_with_foo_bar_blah_dah
yield i
def gen2(object_set, *criteria):
for i in object_set:
another_sieve_processing_algo
yield i
for i in gen(list_of_objs, (dar, blah)):
foobarblahdah
这个思路基本上就是在照抄twisted的defer了。criteria1,2,相当于单台机床,gen1,2,相当于排流水线,真正调用gen
(list_of_objs, (dar,blah))的时候,相当于投料正式生产。
此外,还要善于利用Py内置的shortcuts。比方dict的get,setdefault,以及or,and,if else赋值语句等等。
这个东西,说到底还是比较技巧性的。就是说,只要多读代码,retrospect自己的代码,或早或晚都能掌握的。
但是从根子上讲,还是得靠合理地设计程序结构。我这里讲一些我自己的心得,供你作参考。
首先要合理使用Py的sub function
def outer():
def inner():
foobarblahdah
然后把很多nasty的东西放到inner里面。很多时候这种方法能解决很多问题。
此外,要合理使用generator。Py的generator是一个非常强大的工具,用得好,能让你的代码非常赏心悦目。比方说,很多时候,多层的
for while,就是要一环套一环地筛选对象。那么你完全可以这么写代码。
def func():
criteria1 = lambda : foo
criteria2 = lambda : bar
criteria3 = lambda : blah
criteria4 = lambda : dah
def gen1(object_set, *criteria):
for i in object_set:
play_with_foo_bar_blah_dah
yield i
def gen2(object_set, *criteria):
for i in object_set:
another_sieve_processing_algo
yield i
for i in gen(list_of_objs, (dar, blah)):
foobarblahdah
这个思路基本上就是在照抄twisted的defer了。criteria1,2,相当于单台机床,gen1,2,相当于排流水线,真正调用gen
(list_of_objs, (dar,blah))的时候,相当于投料正式生产。
此外,还要善于利用Py内置的shortcuts。比方dict的get,setdefault,以及or,and,if else赋值语句等等。
这个东西,说到底还是比较技巧性的。就是说,只要多读代码,retrospect自己的代码,或早或晚都能掌握的。