函数--内置函数匿名函数
Posted lgw1171435560
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数--内置函数匿名函数相关的知识,希望对你有一定的参考价值。
一.内置函数。
作用域相关
globals()——获取全局变量的字典
locals()——获取执行本方法所在命名空间内的局部变量的字典
迭代器相关:
renge() 生成数据
next() 迭代器向下执行一次
iter() 获取迭代器,内部实际使用的是__iter__()方法来获取迭代器
字符串类型相关:
eval() 执?字符串类型的代码. 并返回最终结果,有返回值的字符串形式的代码用eval() exec() 执?字符串类型的代码,没有返回值的字符串形式的代码用exec() compile() 将字符串类型的代码变异. 代码对象能够通过exec语句来执?或者eval()进?求 值,很少用
输入输出相关:
input() 获取用户输入的内容 print() 打印输出
内存相关:
hash() 获取到对象的哈希值(int,str,bool,tuple)
id() 获取到对象的内存地址
文件操作相关:
open() 用于打开一个文件,创建一个文件句柄
模拟相关:
__import__() 用于动态加载类和函数
调用相关:
callable() 用于检查一个对象是否是可调用的,如果返回True,object有可能调用失败,但如何返回False,那调用绝对不会成功
查看内置属性:
dir() 查看对象的内置属性,方法,访问的是对象中的__idr__()方法
基础数据类型相关:
数字相关:
bool() 将给定的数据转换成bool值. 如果不给值. 返回False
int() 将给定的数据转换成int值. 如果不给值, 返回0
?oat() 将给定的数据转换成?oat值. 也就是?数
complex() 创建?个复数. 第?个参数为实部, 第?个参数为虚部. 或者第?个参数直接
?字符串来描述复数
进制转换:
bin() 将给的参数转换成?进制
otc() 将给的参数转换成八进制
hex() 将给的参数转换成?六进制
数学运算:
abs() 返回绝对值
divmode() 返回商和余数
round() 四舍五入
pow(a, b) 求a的b次幂, 如果有三个参数. 则求完次幂后对第三个数取余
sum() 求和
min() 求最?值
max() 求最?值
和数据结构相关:
列表和元组:
list() 将?个可迭代对象转换成列表
tuple() 将?个可迭代对象转换成元组
reversed() 将?个序列翻转, 返回翻转序列的迭代器
slice() 列表的切片
字符串相关:
str() 将数据转化成字符串
format() 与具体数据相关, ?于计算各种?数, 精算等
bytes() 把字符串转化成bytes类型 bytearray() 返回?个新字节数组. 这个数字?的元素是可变的, 并且每个元素的值得范围是[0,256) memoryview() 查看bytes在内存中的情况 ord() 输入字符找带字符编码的位置 chr() 输入位置数字找出对应的字符 ascii() 是ascii码中的返回该值 不是就返回u... repr() 返回?个对象的string形式,就是原封不动的输出, 引号和转义字符都不起作? %r 原封不动的写出来 name = ‘taibai‘ print(‘我叫%r‘ % name)
数据集合: dict() 创建一个字典 set() 创建一个集合 frozenset() 创建一个冻结的集合,冻结的集合不能进行添加和删除操作 其他相关: len() 返回一个对象中的元素的个数 sorted() 对可迭代对象进行排序操作 enumerate() 获取集合的枚举对象 lst = ["alex","wusir","taibai"] for index,el in enumerate(lst): print(str(index)+"==>"+el) all() 可迭代对象中全部都是True,结果才是True any() 可迭代对象中有一个是True,结果就是True zip() 函数用于将可迭代的对象作为参数,将对象总对应的元素打包成一个个元组,然后返回有这些元组组成的表,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同. filter() 过滤 map() 会根据提供的函数对指定序列做映射
二.匿名函数.
匿名函数统意的名字是: lambda
fn = lambda a,b :a+b #定义一个很简单的函数,复杂的函数不要用lambda ret = fn(3,5) print(ret) print(func) print(fn) #使用场景:配合着sorted,map,filter 一起使用
三、本节部分函数详解。
sorted 排序函数,让你自己取定义排序的规则
lst = [11,5,36,1,27,58] s = sorted(lst) #默认从小到大排序 print(s) lst = ["胡一菲", "张伟", "关谷神奇", "曾小贤吕小布", "诺澜"] #按照字符串长度排序 def func(s): return len(s) #返回长度 执行流程: 把可迭代对象中的每一项拿出来,作为参数传递给后面key函数.函数返回数字,根据数字进行排序 s = sorted(lst,ky = func) print(s) print(sorted(lst,key=lambda s:len(s)))
eval 函数是把字符串类型的数据作为代码进行执行
s = "18+2" ret = eval(s) # 执行字符串类型的代码 print(ret)
s = "{‘name‘:‘alex‘, ‘age‘:18, ‘isMan‘:False}" # 字符串
# 把字符串类型的代码还原回字典, 列表, 元组
ret = eval(s) # 侧重的有返回值
print(ret)
print(type(ret))
exec execute 函数执行字符串类型的代码,不能太长,不能太乱.
code = input("请输入你要执行的代码") exec(code) # 没有返回值. 想要返回值用eval print(a) # pycharm报错不一定准
compile 函数编译,把你要执行的代码先预编译.通过exec和eval可以执行我们的代码
code = ‘‘‘
for i in range(10):
if i % 2 == 0:
print(i)
‘‘‘
c = compile(code, "", "exec") # 预加载代码
# exec
exec(c) # 运行代码
# 可以使用complie写一个编程大赛.
map() 映射函数
lst = ["篮球", "打打台球", "唱歌", "爬慌山", "步"] m = map(lambda s: "爱好:"+s , lst) print(list(m)) lst = [1,5,78,12,16] # 计算每个数字的平方 print([i **2 for i in lst]) m = map(lambda i: i ** 2, lst) print(list(m))
filter 过滤
lst = ["张无忌", "张翠山", "范冰冰", "金毛狮王", "李冰冰"] 过滤掉姓张的人 把可迭代对象打开. 把内部元素一个一个的传递给前面的函数. 由这个函数决定此项是否保留 f = filter(lambda name : not name.startswith("张"), lst) print("__iter__" in dir(f)) # 可迭代对象 for el in f: print(el)
以上是关于函数--内置函数匿名函数的主要内容,如果未能解决你的问题,请参考以下文章