一、lamcda的用法
在python中有一个匿名函数lambda,匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序。在C++11和C#中都有匿名函数的存在。下面看看在python中匿名函数的使用。
1、lambda只是一个表达式,函数体比def简单很多;
2、lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去; 3、lambda表达式是起到一个函数速写的作用,允许在代码内嵌入一个函数的定义。 代码如下:测试lamcda的用法
#lamcda的用法
f = lambda a,b,c,d:a*b*c*d
print(f(1,5,5,7))
def test1(a,b,c,d):
return a*b*c*d
g = [test1,test1]#函数也是对象
print(g[0](1,5,5,7))
print('__'*80)
结果如下 ?
175 175
二、eval的用法
eval()函数用来执行一个字符串表达式,并返回表达式的值。还可以把字符串转化为list、tuple、dict。
eval函数的用法:
#eval的用法
s = "print('abcde')"
eval(s)
a = 10
b = 20
c = eval("a+b")
print(c)
dict1 = dict(a=100, b=200)
d = eval("a+b", dict1)
print(d)
结果如下:
abcde 30 300
进程已结束,退出代码0
三、使用组合和继承实现代码的复用
#使用继承实现代码的复用
class A1:
def say_a1(self):
print("a1,a1,a1")
class A2(A1):
pass
A2().say_a1()
#同样的效果。使用组合实现
class A3:
def say_a2(self):
print("a2 a2 a2")
class A4:#也就是A4拥有A3对象
def __init__(self,a):
self.a = a
A4(A3()).a.say_a2()
print('---'*50)
#测试ha-a的关系
class MobilePhone:
def __init__(self, cpu, screen):
self.cpu = cpu
self.screen = screen
class cpu:
def calculate(self):
print("cpu对象",self)
class screen:
def show(self):
print("我希望看到我的未来年薪50w")
m = MobilePhone(cpu(),screen())
m.cpu.calculate()
m.screen.show()
|