一 匿名函数

lambda函数也叫匿名函数,语法结构如下:

lambda x:x+1
x --> 形参
x+1 --> 返回值,相当于return x+1

实例(Python3.0+):

def foo(x):
return x+1
print(foo(1)) 运行结果:
>>> 2 # 使用lambda函数替换如上函数:
lambda x:x+1
f = lambda x:x+1
print(f(1)) 运行结果:
>>> 2    

例题:把字符串"sunwuk"变成'sunwuk_xiyouji'

def change_name(name):
return name + "_xiyouji"
print(change_name("sunwuk")) 运行结果:
>>> sunwuk_xiyouji ----------
使用lambda函数方法:
f = lambda x:x+"_xiyouji"
print(f('sunwuk')) 运行结果:
>>> sunwuk_xiyouji

以下是我复制过来的一些代码,正是通过这些代码让我对匿名函数有了一个比较深入的了解,很感谢不知名的作者。 

无参数匿名函数

实例(Python3.0+):

f = lambda :True
print(f()) 运行结果
>>> True 等价于如下函数
def f():
  reture True
print(f()) 运行结果
>>> True

字符串正常输出

实例(Python3.0+):

s = 'this is\na\ttest'
print(s)
print(s.split()) # split函数默认分割:空格,换行符,TAB键
print(' '.join(s.split())) 运行结果:
>>> this is
>>> a test
>>> ['this', 'is', 'a', 'test']
>>> this is a test 用join函数把列表转换成字符串
f = lambda :' '.join(s.split())
print(f())

print((lambda s:' '.join(s.split()))('this is\na\ttest')) 运行结果:
>>> this is a test """
print((lambda x:x+1)(12))
相当于把12作为形参传入lambda函数中
"""

带参数匿名函数

实例(Python3.0+):

# lambda x: x**3 一个参数
print((lambda x:x**3)(2)) 运行结果
>>> 8 # lambda x,y,z:(x+y+z) 多个参数
print((lambda x,y,z:(x+y+z))(1,2,3)) 运行结果:
>>> 6 # lambda x,y=3:(x*y) 允许参数存在默认值
print((lambda x,y=2:(x+y))(2)) 运行结果:
>>> 4

匿名函数调用  

实例(Python3.0+):

#直接赋值给一个变量,然后再像一般函数调用
f = lambda x,y,z:(x*y*z)
print(f(2,3,4)) # 返回一个元祖
a = lambda *z:z
print(a('Testing1','Testing2')) 运行结果:
>>> ('Testing1', 'Testing2') 上例中相当于使用了函数的不定长参数*args,返回值为元组
def foo(*args):
print(args) foo("zhubj","sunwk",'sas') 运行结果:
>>> ('zhubj', 'sunwk', 'sas') #返回一个字典
c = lambda **arg:arg
print(c(a=1,b=2)) 运行结果:
>>> {'a': 1, 'b': 2} 上例中相对于使用了函数的**kwargs参数,返回值为字典
def foo(x,**kwargs):
print(x)
print(kwargs) foo(1,a=2,b=3) 运行结果:
>>> 1
>>> {'a': 2, 'b': 3} #直接后面传递实参
print((lambda x,y:x if x > y else y)(1,2)) 运行结果:
>>> 2

  

Python3 匿名函数的更多相关文章

  1. python3 匿名函数,map/reduce/filter等函数结合应用

    匿名函数就是不需要显式的指定函数 # 平方函数 def func1(x): return x**2 print(func1) # 平方函数匿名函数写法 func2=lambda x:x**2 prin ...

  2. python3匿名函数

    当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外, ...

  3. 第十二天python3 匿名函数

    python借助lambda表达式构建匿名函数: 参数列表不需要小括号: 冒号是用来分割参数列表和表达式的: 不需要使用return,表达式的值,就是匿名函数返回值: lambda表达式(匿名函数)只 ...

  4. Python3 内置函数补充匿名函数

    Python3 匿名函数 定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 def func(x,y,z=1): return x+y+z print(func(1,2,3)) 匿名 ...

  5. Python 内置函数补充匿名函数

    Python3 匿名函数 定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 def func(x,y,z=1): return x+y+z print(func(1,2,3)) 匿名 ...

  6. 自学Python3.4-函数分类(匿名函数)

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  7. Python3基础(4)匿名函数、装饰器、生成器、迭代器、内置函数、json&pickle序列化、软件目录开发规范、不同目录间模块调用

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...

  8. python3.x 匿名函数lambda_扩展sort

    #匿名函数lambda 参数: 表达式关键字 lambda 说明它是一个匿名函数,冒号 : 前面的变量是该匿名函数的参数,冒号后面是函数的返回值,注意这里不需使用 return 关键字. ambda只 ...

  9. python3中匿名函数做参数,匿名函数做实参,eval关键字

    一:说到匿名函数,大家都感到陌生又熟悉,今天我带大家了解一下py3中的匿名函数,以及匿名函数作为函数的参数的情况 主要通过以下实例来说明: 实例一: newarr =[33,44444,6222,88 ...

随机推荐

  1. [iOS]UIDynamicAnimator动画

    创建动画 UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view]; 协议代理 ...

  2. objc中类方法里的self指的是什么

    所有转出“博客园”,请您注明出处:http://www.cnblogs.com/xiaobajiu/p/4121431.html objc中类方法里的self指的是什么 在objc中是可以在类方法中使 ...

  3. C# char[]与string互相转换的两种方法

    1.string转换为char[]:char[] string.ToCharArray(); static void Main(string[] args)        {            s ...

  4. chrome浏览器页面获取绑定返回顶部动画事件插件

    在chrome浏览器下页面加载: var top = $("body").scrollTop()  ; console.log(top)                      ...

  5. thinkphp+redis实现秒杀,缓存等功能

    秒杀是商城常见功能  php+redis是最常见的秒杀功能 1,安装redis,根据自己的php版本安装对应的redis扩展 首先查看phpinfo();php环境信息 2,下载redis https ...

  6. 原生js三级联动

    <!DOCTYPE html> <html lang="en"> <head> <title> 三级联动 </title> ...

  7. Angular5学习笔记 路由配置

    因为angular-cli脚手架的关系,所以配置路由可以通过命令行来创建路由文件 原本创建一个angular项目的命令是ng new 项目名,就可以了,但这样创建出来的项目是没有路由文件的. 如果需要 ...

  8. 【commons】邮件发送工具——commons-email

    一.概述 直接通过官网的overview进行了解,一句话概括如下: Commons Email aims to provide a API for sending email. It is built ...

  9. 20155224 实验一《Java开发环境的熟悉》实验报告

    实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版) ...

  10. C#基础之反射

    虽然还在学校读书,反射实际写的不多.但感觉反射在程序开发中用得还是挺多的,对我来说也是.NET中的一个难点.通过反射,我们可以在运行时获得.NET中的每一个类型的成员,这些类型包括类.结构.委托和枚举 ...