函数(IX)的课后问题
使用timeit模块时,我的代码写成这样,为啥运行会报错呢?def fibR(n):
if n == 1 or n == 2:
return 1
else:
return fibR(n-1) + fibR(n-2)
def main():
n=int(input("take a number:"))
t1=timeit.timeit("fibR(n)", setup="from __main__ import fibR,n",number = 1)
print(t1)
错误报的是ImportError: cannot import name 'n' from '__main__' 因为你把 n 写在了 main 函数里面,导入模块是没法导出函数里面的变量的,函数里面的变量不在全局作用域
你要把 n=int(input("take a number:")) 放到 main 函数的外面:
def fibR(n):
if n == 1 or n == 2:
return 1
else:
return fibR(n-1) + fibR(n-2)
n=int(input("take a number:"))
def main():
t1=timeit.timeit("fibR(n)", setup="from __main__ import fibR,n",number = 1)
print(t1)
页:
[1]