ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

函数- eval()-lambda表达式和匿名函数-递归函数(阶乘练习)

2021-06-14 10:31:10  阅读:151  来源: 互联网

标签:函数 print eval 阶乘 tast01 表达式 lambda


1.lambda表达式和匿名函数

lambda表达式可以用来声明匿名函数。lambda函数是一种简单的,在同一行中定义函数的方法。
lambda函数实际生成了一个函数对象
lambda表达式只容许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。
lambda表达式:lambda arg1,arg2,arg3…

# lambda表达式使用
f1 = lambda a, b, c, d: a * b * c * d

def tast01(a, b, c, d):
    print("########")
    return a * b * c * d

print(f1(2, 3, 4, 6)) #输出:144

g = [lambda a: a * 2, lambda b: b * 3]
print(g[0](6))  #输出:12
print(g[0](2),g[1](3))  #输出:4  9

f2 = [tast01, tast01] #函数也是对象
print(f2[0](2, 3, 4, 6),f2[1](1,3,2,2))   #输出:144  12

2.eval()函数用法

将字符串str当成有效的表达式来求值并返回计算结果
语法:eval(source[,globals[,locals]])–>value
source:一个Python表达式或函数compile()返回的代码对象
globals:可选,必须是dictionary
locals:可选。任意映射对象

s = "print('abcdf')"
eval(s) #输出:abcdf

a = 10
b = 20
c = eval("a+b")
print(c) #输出:30

dict1 = dict(a=100, b=200)

d = eval("a+b")
print(d) #输出:30

f = eval("a+b", dict1)
print(f) #输出:300

3.递归函数_函数调用内存分析_栈帧的创建

递归函数指的是:
自己调用自己的函数,在函数内部直接或间接的自己调用自己。递归类似于大家中学数学学习过的“数学归纳法”。
每个递归函数必须包含两部分:
(1)终止条件:表示递归什么时候结束。一般用于返回值,不再调用自己。
(2)递归步骤 :把第n步的值和第n-1步相关联。

def tast01(n):
    print("tast01:",n)
#    tast02()  #在tast01中掉tast02
    if n==0:
        print("over")
    else:
        tast01(n-1)
    print("tast01***",n)

#def tast02():
#    print("tast02")

tast01(4)
#输出:
tast01: 4
tast01: 3
tast01: 2
tast01: 1
tast01: 0
over
tast01*** 0
tast01*** 1
tast01*** 2
tast01*** 3
tast01*** 4

递归函数_阶乘计算案例

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n - 1)


result = factorial(5)
print(result)
#输出:120

标签:函数,print,eval,阶乘,tast01,表达式,lambda
来源: https://blog.csdn.net/Z_J_1997/article/details/117898393

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有