c语言的匿名函数的作用域,匿名函数、函数作用域

一、匿名函数

1.什么是匿名函数

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

2.匿名函数的声明

a.语法

变量名 = lambda 形参列表:返回值

b.说明

变量名 - 相当于函数名

lambda - 声明匿名函数的关键字

形参列表 - 和普通函数的形参列表一样

: - 固定写法

返回值 - 就相当于普通函数中只有一条return语句的函数体(不用写return)

匿名函数可以用关键字传参

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.全局变量和局部变量

a.全局变量 - 没有声明在函数或者类中的变量都是全局变量

全局变量的作用域是从声明开始,到整个文件结束

b.局部变量 - 声明在函数或者类中的变量

局部变量的作用域是从生命开始,到函数结束

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

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的变量,函数名就是变量名

函数名 -- 类型是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就是一个实参高阶函数

函数作为参数的应用:sort函数

列表.sort(key = None,reverse = False)

参数key - 要求是一个带有一个参数,并且返回值是布尔的函数。这儿的参数是

指向列表中的元素。确定按照元素的什么值进行排序

四、函数作为返回值

变量作为函数的返回值

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值