一 匿名函数

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

  

最新文章

  1. 使用IdleTest进行TDD单元测试驱动开发演练(3) 之 ASP.NET MVC
  2. Spring之ResourceLoader加载资源
  3. The 2015 China Collegiate Programming Contest K Game Rooms hdu 5550
  4. Hibernate的第一次测试解析
  5. [Virtualization][qemu][kvm][virtio] 使用 QEMU/KVM 模拟网卡多队列
  6. DomFlags - 给 DOM 添加书签,方便调试
  7. 解决Fiddler无法抓到手机的会话包
  8. VB的判断语句和循环语句
  9. Linux内核中的GPIO系统之(3):pin controller driver代码分析
  10. MyBatis的两个配置文件
  11. [cocoapods速成] cocoapods的基本用法和自制 podspec
  12. ASP.NET MVC 5 学习教程:通过控制器访问模型的数据
  13. html5shiv.js和respond.min.js
  14. Spring集成RabbitMQ-连接和消息模板
  15. Swing-JTable的渲染器与编辑器使用demo
  16. MyBatis Generator代码自动生成工具的使用
  17. CMDB资产管理系统开发【day25】:表结构设计2
  18. [ 10.05 ]CF每日一题系列—— 962B贪心和思维?
  19. ASYNC_NETWORK_IO和PREEMPTIVE_OS_WAITFORSINGLEOBJECT等待事件
  20. 学习ReentrantLock

热门文章

  1. es6 入坑笔记(三)---数组,对象扩展
  2. Android开发 使用HBuilder的缓存方法
  3. 十个常见的Java异常出现原因
  4. 学在Java之前
  5. 20155223 2006-2007-2 《Java程序设计》第4周学习总结
  6. 20155233 实验一 Java开发环境的熟悉(Linux + IDEA)
  7. 20155235 2017-2018-1 《Java程序设计》第2周学习总结
  8. 好玩的虚拟机和有趣的Linux系统 ——20155332
  9. [2016北京集训试题8]连在一起的幻想乡[dp+无向图计数]
  10. CF 1025 D. Recovering BST