专栏首页python3Python3匿名函数字典排序、生成式与

Python3匿名函数字典排序、生成式与

1. 参数匿名函数字典排序

函数的参数:

参数类型: 我们经常在看别人的代码中,经常出现def(*args,**kwargs)这样的表现形式;

*args           tuple(1,)
**kwargs        dict{"k" : "v"}

fun(*args,**keargs)
fun(1,2,3,4,5,a=10,b=40)

匿名函数:

匿名函数的定义: 顾名思义就是没有名字的函数,那为什么要设立匿名函数,他有什么作用? lambda函数是一种快速付款定义机器智能单行的最小函数,可以用在任何需要函数的地方.

def fun(x,y)
    return x*y

lambda方法: r=lambda x,y:x*y ss求绝对值(abs)

高阶函数:

map(f,list) 返回每个元素通过结果计算完的value的list

def f(x):
    return x*x

map(f,[1,2,3,4,5]) reduce(f,[1,2,3,4,5]) filter(lamdba x:x%2 == 1,[1,2,3,4,5]) sorted函数:

sorted(...)
    sorted(iterable,cmp=None,key=None,reverse=False) -->new sorted list

对字典进行排序:

按照value进行排序:

mm = dict(a=1,b=10,c=3,d=9)
print sorted(mm.iteritems(),key = lamdba d:d[1],reverse = True)
#/usr/bin/env python
# -*- coding:utf-8 -*-
# @time   :2018/1/28 18:55
# @Author :FengXiaoqing
# @file   :dicSort.py

def sortDictValue(dict1):
    print(sorted(dict1.items(),key=lambda d:d[1],reverse=False))

if __name__ == '__main__':
    aaa = dict(a=100,b=10,c=50,d=1)
    l = list()
    l = sortDictValue(aaa)
    print(l)
    print(sortDictValue(l))

2. 生成式和生成器

列表生成式格式:

[exp for val in collection if condition]

[x*x for x in xrange(10) if x*x%2 == 0]

生成器(generator):

方法一:

(exp for val in collection if condition)

方法二: 使用yield关键字,包含yield语句的函数会被特地编译成生成器。 yield可以理解力成return,但是并不退出,只是挂起,恢复的时候从yield下面开始执行。

生成式和生成器的区别:

列表显示生成式直接返回了表达式的结果列表,面生成器是一个对象,该对象包含了对表达式结果的计算引用,通过结果循环可以直接选举输出 生成器不会一次性列出所有的数据,当然你用到的时候,在列出来,更加节约内存的使用率。 类似 range(1,10) xrange(1,10)的区别,但是类型却不同。

#/usr/bin/env python
# -*- coding:utf-8 -*-
# @time   :2018/1/28 22:34
# @Author :FengXiaoqing
# @file   :production.py

a = [x*x for x in range(1,11) if x%2 ==0]
print (a)
print(type(a))

b = (x*x for x in range(1,11) if x%2 ==0)
print (b)
print(type(b))
for i in b:
    print(i)
print('#'*20)

def test(l):
    for i in l:
        yield i
        print("OK i = {0}".format(i))

m = test([1,2,3,4,5,6])
for i in m:
    print(i)
结果:
[4, 16, 36, 64, 100]
<class 'list'>
<generator object <genexpr> at 0x0000000002160D00>
<class 'generator'>
4
16
36
64
100
####################
1
OK i = 1
2
OK i = 2
3
OK i = 3
4
OK i = 4
5
OK i = 5
6
OK i = 6

3. 装饰器

装饰器的作用:

装饰器本质上是一个python函数,它可以让其他工具函数在不需要做任何代码变动的前提下增加额外功能 ,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能 本身无关的雷同代码并继续重用。 装饰器的作用简单点说:就是不改变 原来函数本身,在函数的前面或后面增加一些额外的功能 。 场景:京东购物,放入购物车后在结算前弹出的让你登录用户的窗口。

装饰器:

在了解装饰器之前 ,我们先来了解一个callable函数 说明: 1.方法用来检测对象是否可被调用 ,可被调用 批量的是对象测否使用()括号的方法调用 。 def a(): pass callable(a) 2.可调用 对象,在实际调用 也可测调用 失败;但是不可调用 对象,调用 肯定不成功。 3.类对象都 是可被调用 对象,类的实例对象是否可调用 对象,取决于类是否定义了call方法

装饰器例子:

#!/usr/bin/env python
import datetime

def hellow(fun):
    def preHello():
        print("########start##########“)
        fun()
        print("########end###########“)
    return preHello

原有方法:

def startend(func):
    def start():
        print("#########start#############")
        func()
        print("#########end#############")
    return start
def hello():
    print("hello world!")
hello = startend(hello)
hello()

改进后的使用方法:

def startend(func):
    def start():
        print("#########start#############")
        func()
        print("#########end#############")
    return start

@startend
def hello():
    print("hello world!")
hello()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python基础之函数和模块

    在函数定义下的第一行,添加连续的三对双引号,在双引号中间进行文字注释; 在函数调用处可以用ctrl+q,查看函数说明。 注释如下:

    py3study
  • python之day3(文件操作、字符转

    f=open(“yesterday”,”r”,encoding=”utf-8”)  #以只读模式打开文件

    py3study
  • python3-2笔记

    一.深复制和浅复制 1.引用和赋值 引用是一个值,指向某些数据 列表引用是指向一个列表的值 当你将列表赋给你一个变量时,实际上是将列表的‘引用’赋给了改变变量。...

    py3study
  • 实验四 Python函数编程实验

    函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段,它能够提高应用的模块性和代码的重复利用率。Python定义函数使用def关键字,格式如下:

    背雷管的小青年
  • Python闭包函数和装饰器

    1.概念:在一个外函数中定义了一个内函数,内函数运用了外函数的临时变量,并且外函数的返回值是内函数的引用 示例代码:演示函数嵌套和闭包。

    潇洒坤
  • Python基础之函数和模块

    在函数定义下的第一行,添加连续的三对双引号,在双引号中间进行文字注释; 在函数调用处可以用ctrl+q,查看函数说明。 注释如下:

    py3study
  • python之day3(文件操作、字符转

    f=open(“yesterday”,”r”,encoding=”utf-8”)  #以只读模式打开文件

    py3study
  • 【编程课堂】装饰器浅析

    Python 拥有丰富强大的功能和表达特性,其中之一便是装饰器,装饰器能够在不改变函数、方法、类本身的情况下丰富他们的功能。 比如,我们有一个函数 func ,...

    Crossin先生
  • Python基础语法(三)——函数

    抽象 抽象 抽象是数学中非常常见的概念。举个例子: 计算数列的和,比如:1 + 2 + 3 + ... + 100,写起来十分不方便,于是数学家发明了求和符号∑...

    zeruns
  • python3-2笔记

    一.深复制和浅复制 1.引用和赋值 引用是一个值,指向某些数据 列表引用是指向一个列表的值 当你将列表赋给你一个变量时,实际上是将列表的‘引用’赋给了改变变量。...

    py3study

扫码关注云+社区

领取腾讯云代金券