一 匿名函数

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. java环境变量配置(win7)

    JDK1.8 1.单击“计算机-属性-高级系统设置”,单击“环境变量”.在“系统变量”栏下单击“新建”,创建新的系统环境变量. 2.  (1)新建->变量名"JAVA_HOME&quo ...

  2. 【leetcode】804

    import java.util.*; import java.lang.*; public class Test{ public static int fun_solve(String[] word ...

  3. JS-面向对象相关

    onload 初始化 类似 构造函数初始化对象 全局变量 ->  属性 函数 ->  方法 面向对象中最重要的就是 this的理解  this报错的原因  定时器的使用 function ...

  4. python通过xlsxwriter模块将文字写入xlsx文件

    #今天和大家一起学习通过python的xlsxwriter模块 xlsxwriter模块主要用来生成excel表格,插入数据.插入图标等表格操作等. 环境:python 3 1)安装 xlsxwrit ...

  5. 领扣-两数之和-Python实现

    领扣每日一题 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...

  6. win下python环境搭建以及安装pip、django

    1. 安装python并配置 下载安装python,这里我下载的是python2.7,听说2.7比较好用 地址:https://www.python.org/downloads/source/ 记住你 ...

  7. linux使用docker-compose部署软件配置

    本篇将分享一些 docker-compose 的配置,可参考其总结自己的一套基于docker的开发/生产环境配置.下面话不多说了,来一起看看详细的介绍吧 安装docker及docker-compose ...

  8. 20155310第一周JAVA实验报告

    20155310第一周JAVA实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 使用JDK和IDE编译.运行简单 ...

  9. 20155327 2016-2017-3 《Java程序设计》第4周学习总结

    20155327 2016-2017-3 <Java程序设计>第4周学习总结 教材学习内容总结 一. 理解封装.继承.多态的关系 封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方 ...

  10. WPF MVVM从入门到精通5:PasswordBox的绑定

    原文:WPF MVVM从入门到精通5:PasswordBox的绑定   WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通 ...