3

私はPythonが初めてです。私は現在 Py3k (Win) を使用しています。

ファイルのインストールに問題があり.pyます。基本的には、このページの一番下にあるレシピを使いたいと思っています。だから私はそれらを私のソースコードの.pyに入れたいと思っています。import

だから私はすべてのレシピをrecipes.pyファイルにコピーし、C:\Python3k\Lib\site-packages.

さて、import問題なく動作しますが、そこから任意の関数 (例: take) を呼び出そうとすると、global name 'islice' is not defined...だから、itertoolsインポートを追加する必要があると考えましたrecipes.py

それでも同じエラーが発生しますか? すべてのインスタンスを に変更する必要がありますitertools.<funcname>か? インポートをグローバルにするにはどうすればよいですか? これは新しい Py3k の変更ですか? 私が欠けているものはありますか?

前もって感謝します、 :)

4

1 に答える 1

7

密接に関連する 2 つの問題があります。

まず、 recipes.py内で、すべての itertools にアクセスする必要があります。

少なくとも、これはあなたが必要であることを意味します

import itertools

頂点で。ただし、この場合、あなたが言うように、すべての itertools 関数を として修飾する必要がありitertools.<funcname>ます。import itertools as it( and thenを使用することもできますit.<funcname>。)

第二に、あなたはできる

from itertools import islice, count, chain

ただし、必要な関数をすべてリストに入れる必要があります。

最後に、最もお勧めできませんが、おそらく最も簡単な方法は次のとおりです。

from itertools import *

これは、悪質で制御されていないと見なされるからのすべてで名前空間を汚染するため、危険ですitertoolsが、この場合はおそらくひどいものではありません。

第二に、 ;を使用 するすべてのコードで同様の問題が発生します。recipes.pyすべてを修飾するか、明示的にインポートする必要があります。だから、どちらか

import recipes
recipes.take(...)

また

from recipes import take
take(...)
于 2010-09-25T09:22:40.383 に答える