0

をエミュレートする関数を構築したいと思います from package_name import *。この質問は、globals(). globals()ただし、関数が定義されているモジュールに対してローカルです。

たとえば、 で次の関数を定義するとしますfirst_package.py

import imp

def load_contents(path):
  """Load everything from another package"""
  module = imp.load_source('', path)
  for k in dir(module):
    if not '__' in k:   # ignore __xxx__ private variables
      globals()[k] = getattr(module, k)

次に、次のコードを実行しますsecond_package.py

import first_package

first_package.load_contents('third_package.py')

何も起こりません。どうすればこれを修正できますか?

4

3 に答える 3

0

いつでも呼び出し元のグローバル辞書を関数に渡してから追加できます。

于 2013-07-31T06:01:48.890 に答える