匿名函数、函数作用域

2019-01-05  本文已影响0人  有趣的恶魔QAQ

一、匿名函数

1.什么是匿名函数

函数的另外一种表现形式,还是函数,只适用于函数功能比较简单的函数(声明的格式和普通的函数不一样)

2.匿名函数的声明

a.语法
b.说明
匿名函数可以用关键字传参
func1 = lambda x, y=0: x+y
print(func1(1))
print(func1(y=520, x=1314))
匿名函数可以设置不定长参数
func2 = lambda *nums: sum(nums)
print(func2(1314, 520))

二、函数的作用域

1.什么是变量的作用域

就是变量能够使用的范围

2.全局变量和局部变量
总结:当我们调用函数的时候,系统会自动在栈区间专门为这个函数开辟一块独立的内容空间,用来保存在函数中声明的变量(形参也是属于声明在函数中的变量),当函数调用结束后,这个函数对应的栈区间会自动销毁 ---(函数调用过程是一个压栈的过程)
1.全局变量

a = 520

2.全局变量
这儿的y也是全局变量
for y in range(3):
    print(y)
print('外面:', y)

def func1():
    print('函数里面:', y )
func1()

3.局部变量

a.函数的形参就相当于声明在函数中的变量,所以是局部变量
# num1是局部变量
def func2(num1):
    print(num1)
func2(10)

4.局部变量和全局变量同名

cc = 520  # 此处为全局变量

def func3():
    cc = 1314  # 此处为局部变量
    print('函数里:', cc)  # 打印局部变量
func3()

print(cc)  # 打印出来的为全局变量

3.global - 在函数中声明一个全局变量(只能在函数中使用)

在函数中:
global 变量名
变量名 = 值

lc = 520
def func4():
    global lc  # 若注释掉此行,则结果为1314,520
    lc = 1314
    print(lc)
func4()
print(lc)

4.nonlocal - 想要在局部的局部中取修改布局变量的值

语法:
nonlocal 局部变量
局部变量 = 值

def func5():
    abc = 123

    def func6():
        nonlocal abc
        abc =333
        print('fun6:', abc)
    func6()
    print('func5:', abc)
func5()

三、函数作为变量

python中声明函数其实就是声明一个数据是function的变量,函数名就是变量名

1.给别的变量赋值

对比如下:

# 声明了一个列表变量list1
list1 = [1, 2, 3]
# 实用列表变量给另外一个变量list2赋值
list2 = list1
# 赋值后list2可以当成列表来用
print(list2[1])

# 声明一个函数变量func1
def func1():
    return 10
# 使用函数变量给另外一个变量func2赋值
func2 = func1
# 赋值后func2就可以当成函数来使用
func2()
print(func2())

2.变量作为容器类数据的元素

def func3():
    print('abc')
    return 10
list3 = [func3, func3(10), 100]
print(list3)
print(list3[0](1))

3.变量作为函数的实参

四、函数作为返回值

变量作为函数的返回值
函数1作为函数2的返回值 - 函数2是返回值高阶函数

上一篇 下一篇

猜你喜欢

热点阅读