如何运行一个Python函数
怎么运行一个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