函数作用域和集合列表字典元组

变量作用域

  • 变量由作用范围限制
  • 分类:按照作用域分类:
    • 全局(global):在函数外部定义
    • 局部(local):在函数内部定义
  • 变量的作用范围:
    • 全局变量:在整个全局范围都有效
    • 全局变量在局部可以使用
    • 局部变量在局部范围可以使用,局部变量在全局范围内无法使用
a1 = 100 #a1是全局变量
def fun():
    print(a1)
    print("I am in fun")
    a2 = 99 #a2 是局部变量,作用范围为fun
    print(a2)

print(a1)
fun()

运行结果:
100
100
I am in fun
99

如果此时在调用a2

a1 = 100 #a1是全局变量
def fun():
    print(a1)
    print("I am in fun")
    a2 = 99 #a2 是局部变量,作用范围为fun
    print(a2)

print(a1)
fun()
print(a2)

运行结果:
100
Traceback (most recent call last):
  File "C:/Users/adad/PycharmProjects/untitled2/1/1.py", line 141, in <module>
    print(a2)
NameError: name 'a2' is not defined
I am in fun
99

提升局部变量为全局变量

  • 使用global

def fun():
global b1
b1 = 100
print(b1)
b2 = 99
print(b2)
fun()
print(b1)

globals、locals 函数

  • 可以通过globals和locals显示局部变量和全局变量
a = 1
b = 2

def fun(c,d):
    e = 111
    print("Locals={0}".format(locals()))
    print("Globals={0}".format(globals()))
fun(100,200)

eval() 函数

  • 把一个字符串当成一个表达式来执行,返回表达式执行后的结果
x = 300
y = 200
z = eval("x+y")
print(z)

递归函数

  • 函数直接或间接调用自己
  • 有点:间接、理解容易
  • 缺点:对递归深度有限制,消耗资源大
x = 0
def fun():
    global x
    x +=1
    print(x)
    fun()
fun()

 

猜你喜欢

转载自www.cnblogs.com/wanglan/p/9254320.html