(一)匿名函数

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

 def f(x):
return x*x #将匿名函数赋值给一个变量
result = lambda x:x*x print(result(5))
print(f(5))

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

 def f(x):
return x*x

lambda关键字表示一个匿名函数,通过上面的对比可以看出冒号前面的x就是函数的参数,后面的表达式就是该匿名函数的返回值。

匿名函数只有一个表达式,不需要写return,因为表达式的结果就是该匿名函数的返回值。

例1:

 def divisible(n):

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

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

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

例2:

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

 def f(x,y):

     return x+y

 l = lambda x,y: x + y

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

(二)@property

例如:现在有一个可以存储人类年龄的类

 class people():

     def __init__(self,age=1):
self.age = age #通过下面p = people() p.age = 100,我们可以设置人的年龄 p = people()
p.age = 100
print(p.age)

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

 class people():

     def __init__(self,age=1):
self.set_age(age) #返回年龄
def get_age(self):
return self._age
#设置年龄
def set_age(self,value):
if value <= 0 or not isinstance(value,int) :
raise ValueError('请输入大于0的整数')
self._age = value p = people(20)
print(p.get_age())
p.set_age(25)
print(p.get_age())

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

 class people():

     def __init__(self,age=1):
self._age = age
#在返回属性的方法上,使用@property修饰符
@property
def age(self):
return self._age #在设置属性的方法中使用 属性.setter 修饰符
@age.setter
def age(self,value):
if value <= 0 or not isinstance(value,int) :
raise ValueError('请输入大于0的整数')
self._age = value p = people() p.age = 20 #和之前的 p.set_age(20) 是一样的
print(p.age) #获取属性的值,和之前 p.get_age()的效果是一样的

Python笔记(十五):匿名函数和@property的更多相关文章

  1. Python笔记(十一)_匿名函数与map()、filter()

    匿名函数 无需显式定义函数名,和函数过程,使代码更精简的lambda表达式 函数没有命名,不用担心函数名的冲突 冒号前面代表函数的参数,后面表示计算过程 >>>func=lambda ...

  2. Python笔记(十五)_异常处理

    try-except语句 try: 被检测代码 except Exception [as reason]: 出现异常后的处理代码 例: try: sum = 1+' f=open('未定义文件.txt ...

  3. python笔记十五(面向对象及其特性)

    一.面向对象: class(类):一类拥有共同属性对象的抽象:定义了这些对象的属性和方法object(对象):是一个类实例化后的实例,类必须经过实例化才可以在程序中调用: 由于之前学习过java,对类 ...

  4. Python学习笔记(十)匿名函数

    摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431843456 ...

  5. Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块

    Python第十五天  datetime模块 time模块   thread模块  threading模块  Queue队列模块  multiprocessing模块  paramiko模块  fab ...

  6. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  7. 初学 Python(十五)——装饰器

    初学 Python(十五)--装饰器 初学 Python,主要整理一些学习到的知识点,这次是生成器. #-*- coding:utf-8 -*- import functools def curren ...

  8. 孤荷凌寒自学python第二十五天初识python的time模块

    孤荷凌寒自学python第二十五天python的time模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 通过对time模块添加引用,就可以使用python的time模块来进行相关的时间操 ...

  9. 孤荷凌寒自学python第十五天python循环控制语句

    孤荷凌寒自学python第十五天python循环控制语句 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中只有两种循环控制语句 一.while循环 while 条件判断式 1: ...

  10. 初学 Python(十三)——匿名函数

    初学 Python(十三)--匿名函数 初学 Python,主要整理一些学习到的知识点,这次是匿名函数. # -*- coding:utf-8 -*- #关键字lambda定义的函数都是匿名函数 #做 ...

随机推荐

  1. salesforce lightning零基础学习(十二) 自定义Lookup组件的实现

    本篇参考:http://sfdcmonkey.com/2017/01/07/custom-lookup-lightning-component/,在参考的demo中进行了简单的改动和优化. 我们在ht ...

  2. SpringBoot报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;

    错误:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String ...

  3. Perl语法的基本规则

    因为是比较凌乱的用法规则收集,所以能看懂则看,不能看懂也无所谓.以后也会遇到. Perl脚本第一行使用#!.Perl的后缀名一般为".plx"或".pl",运行 ...

  4. 翻译:DECLARE HANDLER语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:DECLARE HANDLER的译文. 原文:https://mariadb.com/kb/en/library/declare-handler/我提交到MariaDB官 ...

  5. Redis 初次见面

    目录 Redis 特性 使用场景 初次使用 安装(Linux) 配置 启动 redis 的 3 种方法 使用 redis 客户端 关闭 redis 服务 Redis 版本说明 引用 1 Redis 特 ...

  6. 简化开发:Lombok的使用

    Java中优雅的使用Lombok 1.简介 Lombok 是一种 Java实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO), 它通过注释实现这一目的.一个标准的 ...

  7. Spring Boot搭建Web项目常用功能

    搭建WEB项目过程中,哪些点需要注意: 1.技术选型: 前端:freemarker.vue 后端:spring boot.spring mvc 2.如何包装返回统一结构结果数据? 首先要弄清楚为什么要 ...

  8. JQuery官方学习资料(译):$( document ).ready()

         一个页面直到document是”ready“才能被安全的操作,Jquery为你检查这种状态.代码包含在$( document ).ready()的内部将会仅仅运行一次在页面Document ...

  9. pdf.js插件使用记录,在线打开pdf

    天记录一个js库:pdf.js.主要是实现在线打开pdf功能.因为项目需求需要能在线查看pdf文档,所以就研究了一下这个控件. 有些人很好奇,在线打开pdf文档浏览器不是支持吗.是的你说的都是现代浏览 ...

  10. mysql的coalesce使用技巧

    今天无意间发现mysql的coalesce, coalesce()解释:返回参数中的第一个非空表达式(从左向右依次类推): 使用示例:a,b,c三个变量. ,); // Return 2 select ...