Python语言之Python笔记(十五):匿名函数和@property
小标 2018-08-09 来源 : 阅读 1005 评论 0

摘要:本文主要向大家介绍了Python语言之Python笔记(十五):匿名函数和@property,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言之Python笔记(十五):匿名函数和@property,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

(一)匿名函数
不想显式定义函数的时候,可以使用匿名函数。

1 def f(x):
2     return x*x

4 #将匿名函数赋值给一个变量
5 result = lambda x:x*x

7 print(result(5))
8 print(f(5))

通过输出可以看出, lambda x:x*x  实际上就是:

1 def f(x):
2     return x*x

 lambda关键字表示一个匿名函数,通过上面的对比可以看出冒号前面的x就是函数的参数,后面的表达式就是该匿名函数的返回值。
匿名函数只有一个表达式,不需要写return,因为表达式的结果就是该匿名函数的返回值。
例1:

1 def divisible(n):

3     return n % 2 == 0
4 #这里解释下filter(function, iterable)函数,第一个参数为函数,第二个为序列
5 #序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
6 the_list =list( filter(divisible,range(20)))

使用匿名函数重写上面的代码:下面这个和上面的是一样的

1 the_list = list(filter(lambda n: n % 2 == 0,range(20)))

例2:
匿名函数也可以定义多个参数

1 def f(x,y):

3     return x+y

5 l = lambda x,y: x + y

7 print(f(1,3))
8 print(l(1,3))

(二)@property
 例如:现在有一个可以存储人类年龄的类

 1 class people():
 2 
 3     def __init__(self,age=1):
 4         self.age = age
 5 
 6 #通过下面p = people()   p.age = 100,我们可以设置人的年龄
 7 
 8 p = people()
 9 p.age = 100
10 print(p.age)

现在有一个新需求,要求年龄只能输入大于0的整数。有一个解决方式就是隐藏属性,我们可以定义getter和setter接口来操作属性

 1 class people():
 2 
 3     def __init__(self,age=1):
 4         self.set_age(age)
 5 
 6     #返回年龄
 7     def get_age(self):
 8         return self._age
 9     #设置年龄
10     def set_age(self,value):
11        if  value <= 0  or not isinstance(value,int) :
12            raise ValueError('请输入大于0的整数')
13        self._age = value
14 
15 p = people(20)
16 print(p.get_age())
17 p.set_age(25)
18 print(p.get_age())


上面的代码可以实现需求,但是有一种更简单的方式就是使用@property,使用@property的实现代码

 1 class people():
 2 
 3     def __init__(self,age=1):
 4         self._age = age
 5     #在返回属性的方法上,使用@property修饰符
 6     @property
 7     def age(self):
 8         return self._age
 9 
10     #在设置属性的方法中使用 属性.setter 修饰符
11     @age.setter
12     def age(self,value):
13        if  value <= 0  or not isinstance(value,int) :
14            raise ValueError('请输入大于0的整数')
15        self._age = value
16 
17 p = people()
18 
19 p.age = 20 #和之前的 p.set_age(20) 是一样的
20 print(p.age) #获取属性的值,和之前 p.get_age()的效果是一样的

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程