如何运行python函数

时间:2013-02-27 03:22:51

标签: python linux

如何运行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

我如何测试函数nearest_to?

3 个答案:

答案 0 :(得分:3)

来自:What does if __name__ == "__main__": do?

  

通过将脚本作为命令传递给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

答案 1 :(得分: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 没有任何返回值,因此不会尝试存储或打印它。如果您尝试存储/打印此类值,则会获得

答案 2 :(得分:-2)

我会启动python解释器并导入文件。然后你可以测试你喜欢的所有:)