python中的内置函数(一), lambda, filter, map

时间:2022-09-15 19:57:33

python中的内置函数(一), lambda, filter, map

https://www.processon.com/view/link/5c10da0ce4b099ae3e137bf6

1.内置函数

python中的内置函数(一), lambda, filter, map

  内置函数就是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)))