我有以下的例子中的Python:Python函数是否将输入参数复制到函数中?
import numpy as np
import timeit
# array size
m = 3000
# square array
a = np.random.rand(m, m)
# column vector
b = np.random.rand(m)
# solve
ti = timeit.default_timer()
x = np.linalg.solve(a, b)
tf = timeit.default_timer()
# solve function
def solver(a, b):
x = np.linalg.solve(a, b)
return x
tii = timeit.default_timer()
x = solver(a, b)
tff = timeit.default_timer()
print('time1 ', tf-ti)
print('time2 ', tff-tii)
不使用的功能(时间1)VS使用函数(时间2)的时间的比较是:
time1 0.6199771239989786
time2 0.5945519460001378
似乎有被轻微两种方法之间的区别。输入参数如何处理函数solver
,它们是否被复制或者它们是否传递给函数的内部?
如果按相反顺序运行测试,时间会发生什么变化? – AShelly
@ashelly很有趣,如果我按照相反的顺序运行测试时间切换 – wigging
哦,是的,没有额外的函数调用它是慢的;-)当然,在第一次调用之前,有一些初始化要完成。 – Daniel