python lambda if嵌套_【Python入门自学笔记专辑】——函数嵌套-Lambda表达式

【Python入门自学笔记专辑】——函数嵌套-Lambda表达式

函数嵌套

前言

Python的函数有很多地方不同于c++,它的函数可以嵌套!c++程序员:望尘莫及,太可怕了!不过Python主要是基于c语言开发的,c工程师还是可以自豪的,c语言是要自己做功能,而python自带功能。学哪个各有好处。

正题

好了扯远了,继续说Python函数,python的一个函数可以嵌套多个函数,多个函数还可以嵌套。

def func():

def func1():

print("func1")

def func2():

print("func2")

def func2_1():

print("func2.1")

print("hello world")

比如上面的这个程序,func函数中嵌套了两个函数——func1和func2,func2又嵌套了func2_1,Python是支持这种情况的。

比如:

def func():

def func1():

print("func1")

def func2():

print("func2")

def func2_1():

print("func2.1")

print("func")

func()

那么输出结果是:

func

先来一个温馨提示:如果要调用函数,必须把函数放在调用的那行上面!

再看代码:

def func():

choose = int(input("> "))

def func1():

print("func1")

def func2():

print("func2")

def func2_1():

print("func2.1")

if choose == 1:

func1()

elif choose == 2:

func2()

print("func")

func()

func()

运行结果:

> 1

func1

func

> 2

func2

func

分析:

先调用进func函数,然后定义两个函数func1、func2然后选择,函数必须在选择的上面,不信大伙可以试试。

可能出现的错误

1

def func():

if choose == 1:

func1()

elif choose == 2:

func2()

choose = int(input("> "))

def func1():

print("func1")

def func2():

print("func2")

def func2_1():

print("func2.1")

print("func")

func()

报错信息:

UnboundLocalError: local variable 'func1' referenced before assignment

原因

语句在函数上面,无法调用

解决办法

把调用语句和函数换位置

2

def func():

choose = int(input("> "))

def func1():

print("func1")

def func2():

print("func2")

def func2_1():

print("func2.1")

if choose == 1:

func1()

elif choose == 2:

func2()

print("func")

func1()

报错信息

NameError: name 'func1' is not defined

原因

调用函数最多一层,比如在函数外面,不可能跨越两层调用func1函数,跨级太多😸。

解决办法

先调用进func函数,再调用func1,更高级的办法我也不知道😄呵呵o( ̄︶ ̄)o

Lambda表达式

前言

理解了函数类型和函数对象😀,学习Lambda就简单了,就是一种函数吧,准确的说,是个解决一两步的方法,小方法。😆

正题

Lambda是一种匿名函数,匿名函数也是函数,有函数类型,也可以创建函数对象。

定义Lambda表达式格式如下:

lambda 参数列表 : Lambda体

Lambda是关键字声明,这是一个Lambda表达式,“参数列表”与函数的参数列表是一样的,但不需要小括号括起来,冒号后面是“Lambda体”,Lambda表达式的主要代码在此处编写,类似于函数体😏。

**注意:**Lambda体部分不能是一个代码块,不能包含多余语句,只能有一条语句,语句会计算一个结果返回给Lambda表达式,但是与函数不同的是,不需要使用return语句返回。与其他语言中的Lambda表达式相比,Python中提供的Lambda表达式只能处理一些简单的运算。

实例:

#-*- coding = utf-8 -*-

def calculate_fun(opr):

'''

#定义相加函数

def add(a, b):

return a + b

#定义相减函数

def sub(a, b):

return a - b

'''

if opr == '+':

# return add

return lambda a, b : (a + b)

else:

# return sub

return lambda a, b : (a - b)

f1 = calculate_fun('+')

f2 = calculate_fun('-')

print(type(f1))

print("10 + 5 = {0}".format(f1(10, 5)))

print("10 - 5 = {0}".format(f2(10, 5)))

运行结果:

10 + 5 = 15

10 - 5 = 5

这个Lambda返回看来是“function”?

上面的程序注释部分原本是一个旧程序,大家可以把Lambda部分去掉,把注释部分恢复,可以再试试。😄

上面代码return lambda a, b : (a + b)替代了add()函数,return lambda a, b : (a - b)替代了sub()函数,使得函数更快。

The END

幕后

今天我又学习python了😎,哈哈,本人努力为大家写了一篇好文,也是给自己这个Python小白写的整理,Lambda这些东东还是有难度的,在VScode上忙碌2小时,弄明白了!😄,所以麻烦点一个赞,谢谢!😋

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值