函数--内置函数、匿名函数、

一.内置函数。

二.匿名函数.

三、本节部分函数详解.

 

一.内置函数。

作用域相关

 globals()——获取全局变量的字典
 locals()——获取执行本方法所在命名空间内的局部变量的字典

 

 迭代器相关:

renge()  生成数据
next()   迭代器向下执行一次
iter()    获取迭代器,内部实际使用的是__iter__()方法来获取迭代器

 

 字符串类型相关:

eval()  执⾏字符串类型的代码.有返回值
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
        float()  将给定的数据转换成float值. 也就是⼩数
        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

lambda 参数: 返回值(条件为真情况下返回此值) ,参数

fn = lambda a,b :a+b  #定义一个很简单的函数,复杂的函数不要用lambda
ret = fn(3,5)
print(ret)
print(func)
print(fn)  
 
#使用场景:配合着sorted,map,filter 一起使用

三、本节部分函数详解。

sorted(iterable, key=None, reverse=False)    排序函数,默认返回新列表,自己定义排序的规则,参数1为可迭代对象,参数2为比较元素,参数3为排序规则(reverse=True为降序 , reverse=False为升序默认)

sort()  是应用在list上的方法,list的sort方法返回的是对已经存在的列表进行操作

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()  此函数可以把字符串类型的数据还原为执行代码,说白了,就是去掉双引号.

注意:eval(),在给数据量很大的还原回原类型时,有可能回出现内存溢出现象,所以,特别是在网络传输时尽量用json格式编写和解除,防止溢出.

用途:可以把读取出来的文件,用此方法还原为字典、列表、元组,方便进行修改,改完后,再用str()强转回字符串,就可以再写进去了,文件修改可以用到

s = "18+2"
ret = eval(s) # 执行字符串类型的代码
print(ret)

s = "{'name':'alex', 'age':18, 'isMan':False}" # 字符串
# 把字符串类型的代码还原回字典, 列表, 元组
ret = eval(s) # 侧重的有返回值
print(ret)
print(type(ret))

 

 exec()    执行字符串类型的代码,说白了,就是把注释或者交互模式的内容直接当作程序来运行,这个比较危险,一般不用

code = input("请输入你要执行的代码")
exec(code) # 没有返回值. 想要返回值用eval
print(code)   # 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)
#filter(function,object) #如果obj是个字典,则迭代这个字典,每次输出一个字典得key给function函数调用,
filter得返回值是个可迭代的内存地址,用list()或者for才可查看.

 

函数__内置函数、匿名函数(相关练习)

posted @ 2018-12-12 17:57  Tank-Li  阅读(233)  评论(0编辑  收藏  举报