作者keitheis (无)
看板Python
标题Re: [问题] from xxx import ooo
时间Wed Oct 24 11:47:47 2012
※ 引述《sheauhei ( )》之铭言:
: : → keitheis:不过不建议没写在开头的 import;不然要非常小心的使用 10/23 19:34
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 这说法个人有点其他想法,算借题发挥吧 :p
: 如果指的是上述例子为了绕过import exception的问题,
: 而延迟了import的时间点,
: 这本身做法就是有问题的...可以说是来乱的阿 orz
: 不过,在一般性来讲,个人建议是:
: "尽可能延迟module import的时间点,至到需要用到它。"
: 一个平常的例子就是,
: 如果只有在某个function中需要用到某个module,
: 那最好在function的local namesapce去import,
: 而不要在global namespace import。
: 简单的例子
: main.py:
: import a
: ...
: def executeA():
: a.func()
: a.py:
: import b
: def func():
: b.xxx() ...
: b.py:
: ....
: 在这个例子中,executeA()这个function,
: 可能从头到尾都不会被执行到,
: 但是却因为它,从main.py开始执行时,
: 就一路从a.py 一直到 b.py,
: 甚至更多的module都被import进来。
: (如果你目前在做的专案有上千个module,
: 你就会知道这恐怖了 囧...)
嗯嗯,受教了!
就效能为上而言我想这是可以认真考虑的
但就专案维护容易度而言,要找出一个程式用了(相依)哪些模组
我个人偏好,如 PEP 8 所推荐的,直接看档案开头容易
然後遇到哪里有效能问题,再来小心地处理
除非一开始就是在写效能导向程式(如 yyc XD)
否则太早最佳化是万恶之源?XD
: 建议是:
: main.py:
: def executeA():
: import a
: a.func()
: a.py:
: def func():
: import b
: b.xxx() ...
: b.py:
: ...
: 除非executeA()被执行到,
: 不然a.py 和 b.py 乃至於其後会用到的module
: 都不会被load到。
: ---
: 这原则的另个好处(?),
: 就是可以刚好绕过原原po的那种
: a import b, b import a问题.... orz
--
keitheis ")
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.205.229.126
1F:推 apua:大推「太早最佳化是万恶之源」 11/03 14:56