如何运行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?
答案 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解释器并导入文件。然后你可以测试你喜欢的所有:)