13lambda表达式和函数

#___author:  
#date: 2021/6/15
'''''
#lambda 表达式的使用 匿名函数
f = lambda a,b,c:a+b+c
print(f)
print(f(2,3,4))
d = [lambda a:a*2,lambda b:b*3, lambda c:c*4]
print(d)
print(d[0](6),d[1](3),d[2](4))
'''''
'''''
#测试eval()函数
#语法:eval(source[,globals[,locals]])->value
#参数:source:一个python表达式或函数compile()返回的代码对象
#globals:可选。必须是dictionary
#locals:可选,任意映射对象
a ='print("abcdef")'
eval(a)
a =10
b =120
c=eval('a+b')
print(c)
tsmt1 = dict(a =100,b=300)
d = eval('a+b',tsmt1)
print(d)
'''''
'''''
#递归函数
#终止条件
#表示递归什么时候结束,一般用于返回值,不在调用自己
#递归步骤
#把第n步的值和第n-1步相关联
#测试递归函数的基本原理
def tsmt01(n):
print("tsmt01",n)
if n == 0:
print("over")
else:
tsmt01(n-1)
print("tsmt01"*2,n)
def tsmt02():
print("tsmt02")
tsmt01(4)
#使用递归函数计算阶乘
def factorial(n):
if n == 1:
return 1
else:
return n*factorial(n-1)
a=factorial(5)
print(a)
'''''
'''''
#嵌套函数:在函数内部定义的函数
#测试嵌套函数(内部函数)的定义
def tsmt01():
print("tsmt01")
def tsmt02():
print("tsmt02")
tsmt02()
tsmt01()
def tsmt03(xing,ming):
print("{0}{1}".format(xing,ming))
def tsmt04(xing,ming):
print("{0}{1}".format(ming,xing))
def tsmt05(c,xing,ming): #嵌套函数
def tsmt01(a,b):
print("{0}{1}".format(a,b))
if c :
tsmt01(xing,ming)
else:
tsmt01(ming,xing)
tsmt05(True,"杨","正")
tsmt05(False,"杨","正")
'''''
'''''
#测试nonlocal,global关键字用法
a =100
def tsmt01():
b =10
def tsmt02():
global a #声明全局变量
print("tsmt02:",a)
nonlocal b #声明外部函数的局部变量
print("{0}".format(b))
b =20
a = 50
print(b)
print(a)
tsmt02()
print(b)

tsmt01()
print(a)
'''''
#LEGB规则
#python在查找“名称”时,是按照LEGB规则查找的Local--Enclosed--Global--Built in
#local:指的就是函数或者类的方法内部
#Enclosed 指的是嵌套函数(一个函数包裹另一个函数,闭包)
#Global:指的是模块中的全局变量
#Built in:指的是python为自己保留的特殊名称
#测试LEGB
str = "杨正"
def a():
#str = "123"
def b():
#str ="abc"
print("b:",str)
b()
a()
posted @ 2021-07-28 09:24  幻奇  阅读(50)  评论(0)    收藏  举报