0

このコードをNameError実行しようとすると、「グローバル名 j が定義されていません」というメッセージが表示されます。どうすれば修正できますか?

def test(j):
    for i in range(j):
        j = i**2

if __name__=='__main__':
    from timeit import Timer
    j = 30
    t = Timer("test(j)","from __main__ import test")
    print( t.timeit(j))
4

1 に答える 1

3

Timerについては知りませんj。次のようなことをする必要があります"test(%d)" % j(または、文字列from __main__ import jの中に の定義も入れjます)。

また、 への引数は、関数timeitへの引数とは異なりますtest(そのため、 の異なる用途はj、おそらくあなたがすべきことや意味することではありません)。timeit 引数は、テスト関数の実行回数を示します。

ps質問をフォーマットするには、質問のコードをインデントする必要があることに注意してください

ppsここには使用しないというコメントがありましたfrom __main__ importが、実際には機能します!

于 2010-07-26T08:34:03.760 に答える