如何运行一个Python函数

0 投票
3 回答
703 浏览
提问于 2025-04-17 17:16

怎么运行一个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函数呢?

3 个回答

-2

我会先启动Python解释器,然后导入这个文件。这样你就可以随便测试了 :)

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没有返回值,所以没有尝试去存储或打印这个值。如果你试图存储或打印这样的值,你会得到none

3

来自:if __name__ == "__main__": 是干什么的?

当你通过命令行运行你的脚本时,比如说:

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

撰写回答