2010年11月24日水曜日

Pythonはまりメモなど

移植時にはまったデフォルト引数の挙動。

>>> def f(a=[]):
...     print a
...     a.append('a')
... 
>>> f()
[]
>>> f()
['a']
>>> f()
['a', 'a']
>>> 
関数定義時に固定されるからと言うのが理由。すっかり忘れてた。


モジュール名を差し替えるやりかた。Python Hack-a-thonでPyQt4のHands Onに出たときから何とか出来ないかなーと思っていたもの(LinuxではPyQt4, WindowsでPySideをつかっているので)
まあこれでも長いけど…

sys.modules['モジュール名'] = モジュールオブジェクトでできる。

import sys
try:
    import PyQt
except:
    import PySide
    sys.modules['PyQt'] = PySide
from PyQt import QtCore
from PyQt import QtGui

0 件のコメント:

コメントを投稿