Py修行路 python基础 (十三)匿名函数 与 内置函数
一、匿名函数
1.定义:
匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序。
2.语法格式:lambda 参数:表达式
lambda语句中,开头先写关键字lambda,冒号前是参数,可以有多个,用逗号隔开;冒号右边的为表达式,需要注意的是只能有一个表达式。由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收。
3.注意点:lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。lambda 函数不能包含命令,包含的表达式不能超过一个。
4.匿名函数优点:
- 使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
- 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题
- 使用lambda在某些时候然后代码更容易理解
5.应用:在内置函数 max() 求最大值,min()求最小值, map() 映射, reduce 合并, filter() 过滤 中会用到!
简单代码举例:
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
f = lambda k: salaries[k]
print(f)
print(f('egon'))
执行结果:
<function <lambda> at 0x0000000000413E18>
3000
二、内置函数

内置参数详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii
1.abs() 取绝对值 数据类型 必须是 整型!
print(abs(1))
print(abs(-1))
print(abs('a'))
执行结果:
1
1
Traceback (most recent call last):
File "F:/py_fullstack_s4/day25/内置函数.py", line 3, in <module>
print(abs('a'))
TypeError: bad operand type for abs(): 'str'
2.all(可迭代对象) 返回布尔值 只要任何一个值不为真,返回Flase,可迭代对象为空时,返回True
print(all(''))
print(all((1,'',None,0)))
print(all(i for i in range(1,10))) #从1开始取值,排除0
执行结果:
True
False
True
3.any(可迭代对象) 返回布尔值 只要任何一个值为真,返回True,可迭代对象为空时,返回Flase
print(any(''))
print(any([None,1,2,'']))
执行结果:
False
True
4.将十进制转换成 :bin() 二进制 hex() 十六进制 oct()八进制
print(bin(12)) #二进制
print(hex(12)) #十六进制
print(oct(12)) #八进制
执行结果:
0b1100
0xc
0o14
5.数据类型:int() 整型;str() 字符串;list()列表;tuple()元组;dict()字典;set() 集合;frozenset() 不可变集合
is 判断身份,身份运算,根据id去判断身份
num =1
s = "adxz"
l = [1,2.3,4]
d = {1:1,"z":2}
print(type(d))
print(type(l))
print(type(s))
print(num is 1) d = dict(x=1,y=2,z="") #生成字典的另一种方式
print(d)
s = {1,2,3,4,4,3,2,5} #集合
print(s)
s.add((6,7))
print(s)
f = frozenset(s) #不可变集合
print(f)
print(type(f))
执行结果:
<class 'dict'>
<class 'list'>
<class 'str'>
True
{'x': 1, 'y': 2, 'z': ''}
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5, (6, 7)}
frozenset({1, 2, 3, 4, 5, (6, 7)})
<class 'frozenset'>
6.bool() 判断布尔值
print(bool(2>1))
print(bool(2<1))
执行结果:
True
False
7.bytes() bytes 字节 指定编码格式否则报错 type() 查看变量 是 哪种数据类型
s = 'abcdefg'
print(s) #查看字符串s
print(type(s)) #查看字符串类型
s1 = bytes(s,encoding='utf-8') #查看字符串类型
print(s1)
执行结果:
abcdefg
<class 'str'>
b'abcdefg'
8.ASCII码转换 :chr() ASCII转换 数字转换成字符;ord() ASCII转换 字符转换成数字
print(chr(81)) #根据位置找值
print(ord('A')) #根据值找位置
执行结果:
Q
65
9.callable() 判断是否为函数,括号内传入函数名 complex() 定义复数
x = complex(1-2j) #定义一个复数
print(type(x)) #查看函数类型
print(x.real) #打印x 的实部
print(x.imag) #打印x 的虚部
print(callable(x)) #查看是否是函数 def test(): #定义函数
pass
print(callable(test)) #查看是否是函数
执行结果:
<class 'complex'>
1.0
-2.0
False
True
10.帮助 dir(对象) 查看对象都能调用什么方法;help()直接查看 函数 具体的帮助信息
a = 'hnaxhoqihcqew0'
print(dir(a)) #查看调用方法 help()直接查看具体的帮助信息
执行结果:
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
11.divmod(int1,int2) 两个数做除法 int1/int2;返回值是得到一个元组(整除的值,取余的值);主要应用于网页的分页
print(divmod(10,2))
print(divmod(10,3))
执行结果:
(5, 0)
(3, 1)
12.enumerate()
enumerate函数说明:
- 函数原型:enumerate(sequence, [start=0])
- 功能:将可循环序列sequence以start开始分别列出序列数据和数据下标(可自定义起始值)
- 即对一个可遍历的数据对象(如列表、元组或字符串),enumerate会将该数据对象组合为一个索引序列,同时列出数据和数据下标,以元组的形式输出结果
list = ['ni','hao','ma','hello','world']
for i in enumerate(list,1):
print(i)
执行结果:
(1, 'ni')
(2, 'hao')
(3, 'ma')
(4, 'hello')
(5, 'world')
13.hash() hash() 哈希算法,应用:进行数据校验
特性:
1、字符串改变,得到的数值必将改变
2、只要算法一致,得到的值永远不会变,长度也不会改变。
3、hash值不能逆推
#字符串类型
x = "hello"
y = 'hello' #x和y 两个值相等
print(hash(x))
print(hash(y))
y = 'hellobuxaoixax' #改变y
print(hash(x))
print(hash(y))
执行结果:
4282436752230277468
4282436752230277468
4282436752230277468
-397579801337672607
14.eval() 将字符串 转换成 表达式 形式 进行运算
15.id() id() 查看唯一标识身份信息 字符串一样,数字超过一定长度就不同
>>> x =10
>>> y =10
>>> print(id(x))
1393927552
>>> print(id(y))
1393927552
>>> x = 100000000000000000000000
>>> y = 100000000000000000000000
>>> print(id(x))
42716256
>>> print(id(y))
42716296
>>>
16.#拉链 zip()
zip(),放入两个迭代器,一一对应重新取值,以元组的形式输出。不管是某一方的个数多,都不会输出。
l1 = [1,2,3,4,5,6]
s = 'hello'
z = zip(l1,s)
for i in z:
print(i)
执行结果:
(1, 'h')
(2, 'e')
(3, 'l')
(4, 'l')
(5, 'o')
17.sorted() 排序 可迭代对象 得到一个新的返回值。返回值是列表,默认是升序; reverse = True 反转。降序; reversed() 取反,本末倒置
对字典排序,默认是按照字典的key去排序的
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
print(sorted(salaries)) #按照keys排序,依次比较字母的大小 从小到大
print(sorted(salaries,reverse = True)) #按照keys排序,依次比较字母的大小 从大到小
print(sorted(salaries,key = lambda x:salaries[x])) #按照values的值排keys的序,从小到大
l = [1,2,3,4
执行结果:
['alex', 'egon', 'wupeiqi', 'yuanhao']
['yuanhao', 'wupeiqi', 'egon', 'alex']
['yuanhao', 'egon', 'wupeiqi', 'alex']
#reversed()应用
l = [1,2,3,45,7] #定义初始列表
l1= reversed(l) #转换 会得到一个返回值
print(list(l1)) #list()一个一个的取值,生成一个列表
执行结果:
[7, 45, 3, 2, 1]
18.max() and min() 求最大值和最小值
max(*args,key=func) key可有可无。当需要用函数判断的时候,添加key. min与max的使用方法一致。
#max和min
print(max(1,2,3,4,10,3)) #直接比较
print(min(1,2,3,4,10,3))
print(max((1,'a'),(1,'b')))
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2500
}
def get_value(k):
return salaries[k]
print(max(salaries)) #比较keys
print(max(salaries,key=get_value)) #原始的定义一个函数
print(max(salaries,key=lambda k:salaries[k])) #使用lambda函数
print(min(salaries,key=lambda k:salaries[k]))
执行结果:
10
1
(1, 'b')
yuanhao
alex
alex
yuanhao
19.map 映射
map(func,list)
map()是 Python 内置的高阶函数,它接收一个函数 func 和一个list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
#map 映射 将原有的可迭代对象中的元素逐一拿出来处理后,返回一个新的可迭代对象
l = [1,2,3,45,7]
m = map(lambda item:item*2,l)
print(m)
print(list(m))
执行结果:
<map object at 0x00000000026E96A0>
[2, 4, 6, 90, 14]
20.reduce 合并规则 求多个参数的运算! (加减乘除)
from functools import reduce
l = range(100)
print(reduce(lambda x,y:x+y,l))
print(reduce(lambda x,y:x+y,l,100))
执行结果:
4950
5050
21.filter() 过滤器 会有一个判断,输出的结果是布尔值,会将布尔值为True的过滤出来。
filter(函数func,可迭代对象list)
filter()函数接收一个函数 func 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
#filter 过滤
name_l =[
{"name":'egon','age':120},
{"name":"fsw","age":1000},
{'name':'wang','age':2000},
{'name':'jie','age':18}
]
f = filter(lambda d:d['age']>100,name_l)
for i in f:
print(i)
执行结果:
{'name': 'egon', 'age': 120}
{'name': 'fsw', 'age': 1000}
{'name': 'wang', 'age': 2000}
23.其他
pow() 两个值求方,三个值是前两个求方然后值和第三个数再取余数
round() 带小数点的值,四舍六入五留双。。。
slice() 定义切片对象
vars() #局部变量
_import_('字符串') 将导入的字符串转成模块
#其他 #pow()
print(pow(3,2))
print(pow(3,2,2)) #round() 五舍六入
print(round(10.3))
print(round(10.5))
print(round(10.6))
print(round(10.9)) # slice 切片
l=[1,2,3,4,5,6,7,9]
print(l[2:5:2])
s=slice(2,5,2)
print(l[s]) #vars() 等同于局部变量
print(vars() is locals()) #_import_() 自定义模块
import time
# time.sleep(3)
print(time) m=__import__('time')
print(m)
m.sleep(3)
执行结果:
9
1
10
10
11
11
[3, 5]
[3, 5]
True
<module 'time' (built-in)>
<module 'time' (built-in)>
# #在面向对象里讲
# classmethod
# staticmethod
# property
#
# delattr
# hasattr
# getattr
# setattr
#
# issubclass
#
# super
Py修行路 python基础 (十三)匿名函数 与 内置函数的更多相关文章
- Py修行路 python基础 (十二) 协程函数应用 列表生成式 生成器表达式
一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._next_() 取下一个值 优点: 1.提供了 ...
- Py修行路 python基础 (九)作用域 函数嵌套 闭包
名称空间与作用域 变量,函数 分成三种 #内置名称空间 内置函数, 系统函数内部自定义的. python查看内置函数,命令: import builtins dir(builtins) #全局名称空 ...
- Py修行路 python基础 (十一)迭代器 与 生成器
一.什么是迭代? 迭代通俗的讲就是一个遍历重复的过程. 维基百科中 迭代(Iteration) 的一个通用概念是:重复某个过程的行为,这个过程中的每次重复称为一次迭代.具体对应到Python编程中就是 ...
- Py修行路 python基础 (十八) 反射 内置attr 包装
一.isinstance 和 issubclass1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象.2.issubclass(sub, super)检查sub类是否是 ...
- Py修行路 python基础(六)前期基础整理
计算机中,有且仅有CPU具有执行权限,能够执行指令的只有CPU! 人在应用程序上输入的文字或文本,叫做明文! 在屏幕上输入或是输出的是字符,计算机保存的是 有字符编码的 二进制数. 变量赋值规则:例如 ...
- Python基础(10)_内置函数、匿名函数、递归
一.内置函数 1.数学运算类 abs:求数值的绝对值 divmod:返回两个数值的商和余数,可用于计算页面数 >>> divmod(5,2) (2, 1) max:返回可迭代对象中的 ...
- python基础(14)-反射&类的内置函数
反射 几个反射相关的函数可参考python基础(10)-匿名函数&内置函数中2.2.4反射相关 类的一些内置函数 __str__()&__repr__() 重写__str__()函数类 ...
- Python基础(二)——常用内置函数
1. 常用内置函数 (1)isinstance(object, classinfo) 用于判断一个对象是否为某一类型. object 是实例对象 classinfo 是基本类型如 int, floa ...
- python基础7之python3的内置函数
官方介绍: python3:https://docs.python.org/3/library/functions.html?highlight=built#ascii python2:https:/ ...
随机推荐
- flash滚动图片遮住二级下拉菜单解决方法
如上图所示,在进行排版时,如果不注意会遇到二级下拉菜单被下边的img图片遮住.此种情况在ie7 8 中出现. 解决方法:给二级下拉菜单添加z-index:9999;position:relative; ...
- 【Demo】CSS3 3D转换
3D转换transform rotateX() 方法 rotateX()方法,围绕其在一个给定度数X轴旋转的元素. div { transform: rotateX(120deg); -webkit- ...
- WSL安装xfce4
参考:https://github.com/Microsoft/WSL/issues/637 安装组件 1. win10 上安装 Xming https://sourceforge.net/proje ...
- 七 web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术、设置用户代理
如果爬虫没有异常处理,那么爬行中一旦出现错误,程序将崩溃停止工作,有异常处理即使出现错误也能继续执行下去 1.常见状态吗 301:重定向到新的URL,永久性302:重定向到临时URL,非永久性304: ...
- SQL正则表达式
(转自:http://blog.csdn.net/xu1314/article/details/10174067) 当我们要进行一些简单的糊涂查询时用百分号(%),通配符(_)就可以了.其中%表达任意 ...
- 【牛客练习赛12-B】迷宫(BFS)
链接:https://www.nowcoder.net/acm/contest/68/B 题目描述 这是一个关于二维迷宫的题目.我们要从迷宫的起点 'S' 走到终点 'E',每一步我们只能选择上下左右 ...
- 使用sessionStorage实现页面间传值与传对象
问题描述:业务从A页面跳转到B页面,需要由A页面向B页面传入一个对象.B页面解析对象中的值,然后根据这些值做具体的业务逻辑. 一般的传值方法如下: A页面跳转到B页面时: b.html?xxx=xxx ...
- HAWQ取代传统数仓实践(十八)——层次维度
一.层次维度简介 大多数维度都具有一个或多个层次.例如,示例数据仓库中的日期维度就有一个四级层次:年.季度.月和日.这些级别用date_dim表里的列表示.日期维度是一个单路径层次,因为除了年-季度- ...
- PhotoPicker 从头到脚
1. 简介 PhotoPicker, 是一款开源的图片选择器.效果上和微信相似. 2. 使用方法 2.1 添加依赖 dependencies { compile 'me.iwf.photopicker ...
- => 应用在js回调函数中
=> 可以简化以前的回调函数的调用,具体来说: 今后,几乎所有的回调函数都可用箭头函数简化 比如: 1. 所有回调函数都可: 去function改=> 2. 如果函数体只有一句话: 可省略 ...