1

マスター スクリプト (master.py) のファイル (libfun.py) で定義された「re」モジュールに依存する関数 (read_param) を呼び出しています。そうすると、NameError が発生します。

NameError: global name 're' is not defined

マスター スクリプトに re モジュールをインポートしましたが、インポートしたモジュール内の関数が使用できないようです。関数自体から 're' をインポートするのは無駄に思えるので、避けたいと思います。なぜこうなった?

(これは私の実際のコードではなく、最小限の例です):

libfun.py:

def read_param(paramname, paramfile):
    # code here depends on re module, e.g. calling re.split()

master.py:

#!/usr/bin/env python2

import re
import libfun as lf

lf.read_param('parameter', 'filename')
4

1 に答える 1

4

あなたは問題を後ろ向きに見ています。モジュールは自己完結型である必要があるため、独自の依存関係をすべて管理する必要があります。

15 の異なるスクリプトがあり、そのすべてでreadparam(). import reを使用するためだけに、これらの各スクリプトを強制的に にするのは意味がありませんreadparam()。それを 15 回インポートすることになり、ドキュメントまたはソース ファイルを読んで、それをインポートする必要があることさえ知る必要があります。

それを行う適切な方法はimport re、の上部にありlibfun.pyます。本体内でmaster.py使用しない限り、インポートする必要はありません。remaster.py

于 2012-11-28T17:21:13.673 に答える