变量作用域
-分类
-全局(global):在函数外部定义:整个全局范围都有效
-局部(local):在函数内部定义:仅在局部范围有效
-提升局部变量为全局变量
-使用global
-globals,locals内建函数
1 a = 1 2 b = 2 3 def fun(a,b): 4 c = 3 5 print("Locals = {0}".format(locals())) 6 print("Globals = {0}".format(globals())) #打印的不仅是a,b,还有其他所有的全局变量,包括python自带的 7 fun(a,b)
-eval()、exec()函数
-把一个字符串当成一个表达式执行,eval()返回表达式执行后的结果,exec()返回None
-语法
eval(string_code, globals=None, locals=None)
扫描二维码关注公众号,回复:
2946168 查看本文章
exec(string_code, globals=None, locals=None)
1 x = 100 2 y = 200 3 z1 = eval("x+y") 4 z2 = exec("x+y") 5 print(z1) #300 6 print(z2) #None 7 8 #以下eval和exec结果相同 9 z1 = eval("print('x+y=:',x+y)") #x+y=: 300 10 z2 = exec("print('x+y=:',x+y)") #x+y=: 300 11 print(z1) #None 12 print(z2) #None
-递归函数
-函数直接或者间接调用自身
-python对递归深度有限制,超过限度报错
1 #斐波那契数列,只考虑正常输入的n 2 def fib(n): 3 if n == 1 or n ==2: 4 return 1 5 return fib(n-2) + fib(n-1) 6 7 print(fib(5))
变量类型(内置数据结构)
-list
-使用下标访问,从0开始:print(l[2])
-分片操作:对列表进行任意一段的截取:print(l[1:3])
-包含左不包含右:只取l[1]和l[2]
-:左或者右不写,左边默认0,右边默认最后一个数据:print(l[:])
-有步长,默认为1:print(l[1:6:3]),最后一个是步长,修改为3
-下标可以超出范围,超出后不报错,不考虑多余的下标内容
-下标为负数:表示从右往左,最后一个下标为-1。注意:分片截取左边值比右边大时,步长注意需要使用负数
-set
-dict
-tuple