https://www.processon.com/view/link/5c10da0ce4b099ae3e137bf6
1.内置函数
内置函数就是python中提供的,可以直接拿来用的函数,比如print,input这样的.到python3.6.2版本时,python一共提供了68个内置函数
作用域相关:
locals() 返回当前作用域中的名字
globals() 返回全局作用域中的名字
迭代器相关:
range() 生成数据
next() 迭代器向下执行一次,内部实际使用了__next__()方法返回迭代器的下一个项目
iter() 获取迭代器,内部实际使用的是__iter__()方法来获取迭代器
字符串类型代码的执行
eval() 执行字符串类型的代码,并返回最终结果
print(eval('2+2')) # 4 n = 8 print(eval('2+n')) # 10 def func(): print(666) eval('func()') # 666
exec() 执行字符串类型的代码
exec(""" for i in range(10): print(i) """) exec(""" def func(): print("我是周杰伦") func() """)
compile() 将字符串类型的代码变异.代码对象能够通过exec语句来执行或者eval()进行求值
'''
参数说明:
1. resource 要执⾏行行的代码, 动态代码⽚片段
2. ⽂文件名, 代码存放的⽂文件名, 当传⼊入了了第⼀一个参数的时候, 这个参数给空就可以了了
3. 模式, 取值有3个,
1. exec: ⼀一般放⼀一些流程语句句的时候
2. eval: resource只存放⼀一个求值表达式.
3. single: resource存放的代码有交互的时候. mode应为single
'''
code1 = 'for i in range(10): print(i)'
c1 = compile(code1,"",mode='exec')
exec(c1)
code2 = '1+2+3'
c2 = compile(code2,"",mode='eval')
a = eval(c2)
print(a)
code3 = 'name = input('请输入你的名字:')'
c3 = compile(code3,"",mode = 'single')
exec(c3)
print(name)
有返回值的字符串形式的代码用eval().没有返回值的字符串形式的代码用exec().一般很少用到compile()
输入和输出相关:
input() 获取用户输入的内容 print() 打印输出
内存相关:
hash() 获取到对象的哈希值(int,str,bool,tuple)
id() 获取到对象的内存地址
文件操作相关:
open()用于口打开一个文件,创建一个文件句柄
模块相关:
__import__() 用于动态加载类和函数
帮助:
help() 函数用于查看函数或模块用途的详细说明
调用相关:
callable() 用于检查一个对象是否是可调用的,如果返回True,objuect有可能调用失败,但如果返回False,那调用绝对不会成功
查看内置属性:
dir() 查看对象的内置属性,方法,访问的对象中的__dir__()方法
基础数据类型相关:
数字相关:
bool() 将给顶的数据转换成bool值,如果不给值.返回False
int() 将给定的数据转换成int 值,如果不给治,返回0
float() 将给定的数据转换成float值,也就是小数
complex() 创建一个复数,第一个参数为实部,第二个参数为虚部.或者第一个参数直接用字符串来描述复数
进制转换:
bin() 将给的参数转换成二进制
otc() 将给的参数转换成八进制
hex() 将给的参数转换成十六进制
2.匿名函数
lamda匿名函数
为了解决一些简单的需求而设计的一句话函数
# 计算n的n次方
def func(n)
return n**n
print(func(10))
f = lambda n:n**n
print(f(10))
lambda表示的是匿名函数,不需要用def来声明,一句话就可以声明出一个函数
语法:
函数名 = lanmbda 参数:返回值
注意:
1.函数的参数可以有多个.多个参数之间用逗号隔开
2.匿名参数不管多复杂.只能写一行,且逻辑结束后直接返回数据
3.返回值和正常的函数一样,可以是任意数据类型
匿名函数并不是说一定没有名字.这里前面的变量就是一个函数名.说他是匿名原因是我们通过__name__查看的时候是没有名字的
统一都叫lambda.在调用的时候没有什么特别之处,像正常的函数调用即可
sorted()
排序函数.
语法:sorted(ITerable,key=None,reverse=False)
Iterable:可迭代对象
key:排序规则(排序函数),在sorted内部会将可第二代对象中的每一个元素传递给这个函数的参数.根据函数运算的结果进行排序
reverse:是否倒序.True:倒叙,False:正序
和函数组合使用
# 根据字符串⻓度进行排序
lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]
# 计算字符串串⻓长度
def func(s):
return len(s)
print(sorted(lst, key=func))
和lambda组合使用
# 根据字符串长度进行排序
lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]
# 计算字符串长度
def func(s):
return len(s)
print(sorted(lst, key=lambda s: len(s)))
lst = [{"id":1, "name":'alex', "age":18},
{"id":2, "name":'wusir', "age":16},
{"id":3, "name":'taibai', "age":17}]
# 按照年年龄对学⽣生信息进⾏行行排序
print(sorted(lst, key=lambda e: e['age']))
filter()
筛选函数
语法:filter(function,Iterable)
function:用来筛选的函数.在filer中会自动的把iterable中的元素传递给function.然后根据function返回的True或者False来判断是否保留此项数据
Iterable:可迭代对象
lst = [1,2,3,4,5,6,7]
ll = filter(lambda x: x%2==0, lst) # 筛选所有的偶数
print(ll)
print(list(ll))
lst = [{"id":1, "name":'alex', "age":18},
{"id":2, "name":'wusir', "age":16},
{"id":3, "name":'taibai', "age":17}]
fl = filter(lambda e: e['age'] > 16, lst) # 筛选年年龄⼤大于16的数据
print(list(fl))
map()
映射函数
语法:
map(function,iterable)可以对可迭代对象中的每一个元素进行映射.分别取执行function
计算列表中每个元素的平方,返回新列表
def func(e):
return e*e
mp = map(func,[1,2,3,4,5])
print(mp)
print(list(mp))
改写成lambda
print(list(map(lambda x: x*x,[1,2,3,4,5])))
计算两个列表中相同位置的数据的和
# 计算两个列表相同位置的数据的和
lst1 = [1, 2, 3, 4, 5]
lst2 = [2, 4, 6, 8, 10]
print(list(map(lambda x, y: x+y, lst1, lst2)))