关于Python引用全局变量和局部变量的效率问题

检测均为处理数组数据,分为在函数内处理和在主函数处理同样的功能
问题为:原本在函数内调用局部变量效率高,所以加法操作局部变量中用时少,为什么而次方操作用时多
测试1处理为十次方
测试2处理为加法操作
以下为测试1

from time import time
def cc(x):
    for i in range(len(x)):
        x[i]**=10
    return
res=[i for i in range(1000000)]
a=time()
for i in range(len(res)):
    res[i]**=10
print(time()-a)
b=time()
res=cc(res)
print(time() - b)
'''
输出
0.4724574089050293 #主函数处理段运行时间
1.9870216846466064 #函数处理段运行时间
'''

以下为测试2

from time import time
def cc(x):
    for i in range(len(x)):
        x[i]+=ord('a')
    return
res=[i for i in range(10000000)]
a=time()
for i in range(len(res)):
    res[i]+=ord("a")
print(time()-a)
b=time()
res=cc(res)
print(time() - b)
'''
输出
1.774261474609375 #主函数处理段运行时间
1.3109838962554932 #函数处理段运行时间
'''

1.因为测试1经过次幂操作,已经是一个较大的数字了再进行一次幂操作,肯定慢了。正确的测试应该在print(time()-a),后面重新初始化res。
2.测试2中,因为是add操作,res经过第一次操作后,影响不大。
测试1正确的代码如下:


from time import time
def cc(x):
    for i in range(len(x)):
        x[i]**=10
    return
res=[i for i in range(1000000)]
a=time()
for i in range(len(res)):
    res[i]**=10
print(time()-a)
res=[i for i in range(1000000)]  # 重新初始化res,避免上一步计算后的大数值
b=time()
res=cc(res)
print(time() - b)
'''
输出
0.35755348205566406
0.34195947647094727
'''