0

Python関数をどのように実行しますか。たとえば、test.pyという名前のファイルとその中の関数がある場合

def closest_to(l,v):
    num = l[0]
    diff_min = abs(l[0] - v)
    for i in xrange(1,len(l)):
        diff = abs(l[i] - v)
        if diff < diff_min:
            diff_min = diff
            num = l[i]
    return num

関数closest_toをどのようにテストしますか?

4

3 に答える 3

3

From: if __name__ == "__main__": は何をしますか?

スクリプトをコマンドとして Python インタープリターに渡して実行すると、 python myscript.py インデント レベル 0 のすべてのコードが実行されます。定義されている関数とクラスは、よく定義されていますが、それらのコードは実行されません。

したがって、スクリプトの内容が次の場合:

def closest_to(l,v):
    num = l[0]
    diff_min = abs(l[0] - v)
    for i in xrange(1,len(l)):
        diff = abs(l[i] - v)
        if diff < diff_min:
            diff_min = diff
            num = l[i]
    return num

if __name__ == '__main__':
    val1 = 10
    val2 = 200

    print 'Closes to %s, %s =' % val1, val2,
    print closest_to(val1, val2)

走るとき

$ python script.py

関数の結果を呼び出して出力します。または、doctests を使用しようとします。小さなメソッドを試したい場合は、管理が簡単です。

例えば:

def mysum(*args):
    """Returns the sum of all given arguments

    >>> mysum(1,2,3,4)
    10
    >>> mysum(1,2)
    3
    >>> mysum(1, -1)
    0
    >>> mysum(1)
    1
    """
    return sum(*args)

if __name__ == "__main__":
    import doctest
    doctest.testmod()

実行して試してみてください:

$ python mysum_script.py
于 2013-02-27T03:40:38.347 に答える
2

グローバルスコープの関数外のものはすべて、スクリプトの一部として実行されます。

def closest_to(l,v):
    num = l[0]
    diff_min = abs(l[0] - v)
    for i in xrange(1,len(l)):
        diff = abs(l[i] - v)
        if diff < diff_min:
            diff_min = diff
            num = l[i]
    return num

result = closest_to(val1, val2)
print result

関数定義のみを含むtest.pyが必要で、これらの関数を別のファイルから呼び出したい場合は、いずれかの関数を使用する必要があるファイルからtest.pyをインポートすることで可能です。

# Some-other-file.py
import test
result = test.closest_to(val1, val2)
print result

test.pyに多くの関数が含まれていて、そのうちのいくつかだけを使用することがわかっている場合は、これらの特定のいくつかをインポートできます。

# Another-file.py
from test import closest_to, farthest_to
result = closest_to(val1, val2)
print result
farthest_to(val1, val2)

関数farthest_toには戻り値がないため、関数を格納または印刷しようとはしていません。そのような値を保存/印刷しようとすると、何も得られません

于 2013-02-27T03:25:07.477 に答える
-2

Python インタープリターを起動して、ファイルをインポートします。次に、好きなものをすべてテストできます:)

于 2013-02-27T03:32:47.123 に答える