day10总结:匿名函数、变量的作用域(2019-04-26)

1. 什么是匿名函数

  • 匿名函数就是没有名字的函数

1)语法

lambda 参数列表:返回值

2)说明

  • lambda :关键字
  • 参数列表 :相当于普通函数的形参列表,变量1,变量2,...
  • :固定写法
  • 返回值 :相当于普通函数函数体中的return语句;可以是除了赋值语句以外的任何语句
  • 注意
    a. 匿名函数本质还是函数,之前函数中讲的语法绝大多数都适用(但通过类型名对参数类型说明是不支持的,因为会出现多的冒号,有歧义)
    b. 匿名函数能做的事情,普通函数都可以做,只是匿名函数简洁

2.变量的作用域

  • 指变量的使用范围
  • 全局变量、局部变量

1)全局变量

  • 没有声明在函数/类中的变量都是全局变量,全局变量的作用域是从变量声明开始整个py文件结束
a = 10    # a是全局变量

if True:
    print('if:', a)

for x in range(4):
    print('for:', a)

def func1():
    print('函数:', a)
func1()
for num in range(3):
    temp = 100    # temp是全局变量
    print(num)    # num是全局变量
    if 3 > 2:
        temp2 = 200   # temp2是全局变量

print('循环外:', num, temp, temp2)

def func2():
    print('函数里:', num, temp, temp2)

func2()

2)局部变量

  • 声明在函数中的变量都是局部变量,作用域是从变量声明到函数结束
  • 注意:形参也是局部变量
  • 当在调用函数的时候,系统会自动的在内存的栈区间为这个函数开辟一个独立的内存区域,用来保存在函数中声明的变量或者产生的数据。当函数调用结束后,这块内存区域会自动销毁

3. global和nonlocal

1)global

  • 在函数声明一个全局变量(只能在函数中使用)
global 变量名
变量名 = 值
x1 = 100

def func4():
    global x1   # 说明后面的x1是一个全局变量
    x1 = 200
    print('函数中:', x1)

func4()
print('函数外面:', x1)

2)nonlocal

  • 想要在局部的局部中去修改一个局部变量的值,就使用nonlocal
def func5():
    x2 = 100

    def func6():
        nonlocal x2
        x2 = 200
        print('函数中的函数:', x2)
    func6()

    print('函数中:', x2)


func5()
# print(x2)


def func7():
    global x4
    x4 = 100

func7()

你可能感兴趣的:(day10总结:匿名函数、变量的作用域(2019-04-26))