# globals 和 locals
a =1
b =2deffun(c,d):
e =111print("Locals={0}".format(locals()))# 打印当前全部局部变量print("Globals={0}".format(globals()))# 打印挡圈全部全局变量
fun(100,200)
eval() 函数
把一个字符串当成一个表达式来执行,返回表达式执行后的结果
语法: eval(string_code,globals=None,locals=None)
exec() 函数
跟eval功能类似,但不返回结果(实际上返回None)
语法: exec(string_code,globals=None,locals=None)
# eval() 函数案例
x =100
y =200# 执行 x + y# z = x + y
z1 = x + y
z2 =eval("x+y")print(z1)print(z2)print("*"*40)# exec() 函数案例
x =100
y =200# 执行 x + y# z = x + y
z1 = x + y
z2 =exec("x+y")print(z1)print(z2)
递归函数
函数直接或间接调用自身
优点:简洁,容易理解
缺点:对递归深度有限制,消耗资源大
python对递归深度有限制,超过限制将报错
在写递归程序的时候,一定注意结束条件
# 递归调用深度限制代码
x =0deffun():global x
x +=1print(x)# 函数调用自身
fun()# 调用函数
fun()
# 斐波那契数列# 第一个值为1,第二个值为1,从第三个值开始,其值等于前面两个值之和# 1,1,2,3,5,8,13...# n 表示第 n 个数字的斐波那契数列的值deffib(n):if n ==1:return1if n ==2:return1return fib(n-1)+ fib(n-2)# 计算第 n 个斐波那契数列的值
n =int(input("---->>>>你想知道第几个斐波那契数列的值?请输入正整数:"))print(fib(n))# 打印从第 1 到第 n 个斐波那契数列的值for i inrange(1,n+1):print("第{0}个斐波那契数列值为:{1}".format(i,fib(i)))