码迷,mamicode.com
首页 > 编程语言 > 详细

python 内置函数与匿名函数

时间:2019-01-12 16:38:19      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:return语句   浮点   mod   play   字符   数据结构   app   例子   closed   

内置函数

 内置函数是python提供的可以直接调用的函数,截至版本3.6.2,python一共有68个内置函数,根据作用不同可以分为作用域相关、迭代器生成器相关、基础数据类型相关和其他

技术分享图片

 

 作用域相关

 locals(): 以字典的形式返回当前作用域内的内容

globals():以字典的形式返回全局作用域内的内容

迭代器生成器相关

range: 创建一个整数对象,通常用于for循环

next: 内部实际使用了__next__方法,返回迭代器的下一个项目

基础数据类型相关

1. 数字相关

bool: 将给定参数转化成bool类型,如果没有参数返回False

int: 将字符串和数字转化成整型,int有三点需要注意

(1) int转化浮点数是向0取整,int(2.8) = 2, int(-3.9) = -3

(2) int("0b1101", base=2) = 13,base=2表示字符串中的数字以二进制表示

(3) int("hey", base=35) = 21349,base=35表示字符串中的数字以35进制表示,这里的有效base范围为2~36(10+26)

 2. 数学运算

abs:函数返回数字的绝对值。

divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。

round:保留浮点数的小数位数,默认保留整数。

pow:求x**y次幂。(三个参数为x**y的结果对z取余)

技术分享图片
print(abs(-5))  # 5

print(divmod(7,2))  # (3, 1)

print(round(7/3,2))  # 2.33
print(round(7/3))  # 2
print(round(3.32567,3))  # 3.326

print(pow(2,3))  # 两个参数为2**3次幂
print(pow(2,3,3))  # 三个参数为2**3次幂,对3取余。
View Code

 

sum:对可迭代对象进行求和计算(可设置初始值)。

min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)。

max:返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)。

技术分享图片
print(sum([1,2,3]))
print(sum((1,2,3),100))

print(min([1,2,3]))  # 返回此序列最小值

ret = min([1,2,-5,],key=abs)  # 按照绝对值的大小,返回此序列最小值
print(ret)

dic = {a:3,b:2,c:1}
print(min(dic,key=lambda x:dic[x]))
# x为dic的key,lambda的返回值(即dic的值进行比较)返回最小的值对应的键


print(max([1,2,3]))  # 返回此序列最大值

ret = max([1,2,-5,],key=abs)  # 按照绝对值的大小,返回此序列最大值
print(ret)

dic = {a:3,b:2,c:1}
print(max(dic,key=lambda x:dic[x]))
# x为dic的key,lambda的返回值(即dic的值进行比较)返回最大的值对应的键
View Code

 

3. 数据结构

总结

技术分享图片

 

 

匿名函数

来看一个函数

def func(x, y):
    return x + y

print(func(3, 4))

像这样函数体只有return语句的函数可以改写成一行的匿名函数(lambda),如下

func2 = lambda x, y: x + y

下面来写一个匿名函数,传入三个参数,返回三个数相乘的结果

func = lambda x, y, z: x*y*z

总结一下,匿名函数的特点:

1. 只有返回值的函数可以用lambda函数代替

2. 匿名函数只能用一行

3. 匿名函数的语法为lambda 参数1,参数2,... : 返回值

4. 匿名函数多与内置函数相结合

 需要注意的是匿名函数在内存中只有一个,下面来看一个例子

v = [lambda:x for x in range(10)]
print(v)
print(v[0])
print(v[0]())

执行结果

技术分享图片
[<function <listcomp>.<lambda> at 0x000001DAFD64B950>, <function <listcomp>.<lambda> at 0x000001DAFD64BA60>, <function <listcomp>.<lambda> at 0x000001DAFD64B9D8>, <function <listcomp>.<lambda> at 0x000001DAFD64BAE8>, <function <listcomp>.<lambda> at 0x000001DAFD64BB70>, <function <listcomp>.<lambda> at 0x000001DAFD64BBF8>, <function <listcomp>.<lambda> at 0x000001DAFD64BC80>, <function <listcomp>.<lambda> at 0x000001DAFD64BD08>, <function <listcomp>.<lambda> at 0x000001DAFD64BD90>, <function <listcomp>.<lambda> at 0x000001DAFD64BE18>]
<function <listcomp>.<lambda> at 0x000001DAFD64B950>
9
View Code

为什么会出现这种结果呢,因为lambda只有一个,实际上添加到列表v里面的是同一个lambda,上述代码相当于

v = []
for x in range(10):
    func1 = lambda: x
    v.append(func1)

 

python 内置函数与匿名函数

标签:return语句   浮点   mod   play   字符   数据结构   app   例子   closed   

原文地址:https://www.cnblogs.com/zzliu/p/10222793.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!