python匿名函数调用_python内置函数与匿名函数

内置函数就是Python个解释器里自带的函数,不用定义可以直接拿来调用。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。

8213809.html

1128771-20180106102757456-183063811.png

上面的68个函数是按首字母顺序排列的,我们这里按照函数的用途来分为6大类。这里分类介绍他们中重点的几个。

1128771-20180106103022799-1215777462.png

作用域相关的2个。

1128771-20180106103420831-1412132634.png

基于字典的形式获取局部变量和全局变量

globals()——获取全局变量的字典

locals()——获取执行本方法所在命名空间内的局部变量的字典

其他类有12个。

1128771-20180106110207253-1643706957.png

input() 用户交互函数,输入的内容返回值是str

print() 输出

eval() 将字符串类型的代码执行并返回结果,一般用于计算

exec()将自字符串类型的代码执行,一般用于执行流程语句

type(o) 返回变量o的数据类型

hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。

open() 打开一个文件,返回一个文件操作符(文件句柄)

操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)

可以用encoding指定编码.

dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量。

迭代器生成器相关的有3个。

1128771-20180106112757503-136904609.png

range()函数可以生成一个可迭代对象,但不是迭代器,可以通脱for循环来遍历内部元素。

基础数据类型有38个。

1128771-20180106113335424-753256005.png

其中和数字相关的14个

1128771-20180106113555299-271884682.png

数字——数据类型相关:bool,int,float,complex

数字——进制转换相关:bin,oct,hex

数字——数学运算:abs,divmod,min,max,sum,round,pow

和数据相关的有24个。

1128771-20180106114016299-1379354858.png

1128771-20180106114044378-607060527.png

1128771-20180106114121299-2062869602.png

重点讲zip()、filter()、map()、sorted()

zip()是拉链函数,依次把两个可迭代对象对应的元素拿出来组成一个元组,它的返回值是个迭代器。

filter()过滤可迭代对象的,使其符合函数要求。

map()使可迭代对象经过函数处理后的结果

sorted()排序,可以指定排序的方式。

匿名函数的定义方法:

函数名 = lambda参数 :返回值#参数可以有多个,用逗号隔开#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值#返回值和正常的函数一样可以是任意数据类型

我们可以看出,匿名函数并不是真的不能有名字。

匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了~~~

举3个例子

#1.下面程序的输出结果是:

d= lambda p:p*2t= lambda p:p*3x= 2x=d(x)

x=t(x)

x=d(x)print (x)#24

#2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

#答案一

test = lambda t1,t2 :[{i:j} for i,j inzip(t1,t2)]print(test(t1,t2))#答案二

print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))#还可以这样写

print([{i:j} for i,j inzip(t1,t2)])

#3.以下代码的输出是什么?请给出答案并解释。

defmultipliers():return [lambda x:i*x for i in range(4)]print([m(2) for m in multipliers()]) #[6,6,6,6]#请修改multipliers的定义来产生期望的结果。#修改后的代码:

defmultipliers():return (lambda x:i*x for i in range(4))print([m(2) for m in multipliers()]) #[1,2,4,6]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值