匿名函数、内置函数

1  匿名函数

2  内置函数


 6.17 匿名函数

# 匿名就是没有名字
def func(x,y,z=1):
    return x+y+z

# 匿名
lambda x,y,z=1:x+y+z  #与函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,除非让其有名字
func=lambda x,y,z=1:x+y+z
func(1,2,3)
#让其有名字就没有意义
#有名函数与匿名函数的对比:
有名函数:循环使用,保存了名字,通过名字就可以重复引用函数功能
匿名函数:一次性使用,随时随时定义
应用:max,min,sorted,map,reduce,filter

6.18 内置函数

更多内置函数:https://docs.python.org/3/library/functions.html?highlight=built#ascii 

 

# zip 拉链函数
l1=[1,2,3]
s1='hello'
res=zip(l1,s1) #合并多个可迭代对象成元组
print(list(res)) #迭代器可以用list和next来查看
[(1, 'h'), (2, 'e'), (3, 'l')]

res=zip(salaries.values(),salaries.keys()) #把values放在前面 max会取values的最大值
print(max(res)[1])
# max 
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
def f1(k):
    return salaries[k]
print(max(salaries,key=lambda k:salaries[k])) #key后面指定一个功能 迭代出的结果传给key
print(min(salaries,key=lambda k:salaries[k]))
# sorted
print(sorted(salaries,key=lambda k:salaries[k]))
print(sorted(salaries,key=lambda k:salaries[k],reverse=True)) #反序
#map
l=['alex','wupeiqi','yuanhao','huanghongwei']
print(list(map(lambda x:x+'_SB',l))) #映射函数 功能放第一位置
#reduce
from functools import reduce
print(reduce(lambda x,y:x+y,range(1,101),100)) #合并函数 最后为初始值 5150
#filter
l=['alex_SB','wupeiqi_SB','yuuanhao_SB','hhw','egon']
res=filter(lambda name:name.endswith('SB'),l) #过滤函数
print(list(res))

 

# 优先掌握
max  #最大
min  #最小
sorted  #排序
map  #映射
from _functools import reduce  #合并
filter  #过滤
sum  #总和
bool  #布尔 布尔值为假:0,None,空
chr  #转ascii
divmod  #显示商和余数的一个元组
enumerate  #索引+值
id   #id优先看内存地址
input  #输入
print  #打印
isinstance  #是否是某类型
iter  #迭代对象
len   #长度 
open  #文件打开
pow   #先幂次方后取余
type  #类型
zip   #拉链函数
dict,int,list,tuple,str,float,set,frozenset,complex  #数据类型
#面向对象
classmethod 
staticmethod 
property 
getattr 
hasattr 
setattr 
delattr 
super 
isinstance 
issubclass 
object.__dict__ 
#其他内置函数
#abs
print(abs(-1)) #求绝对值
#all
print(all([1,'a',[]])) #返回迭代对象的所有值都是True则返回True 可迭代对象为空也是True
print(all([])) #可迭代对象为空也是True
# any
print(any([0,None,'',1])) #True 只要1个为真 就返回True 和all相对
print(any([])) #False 和all相反 
#bin , oct , hex
print(bin(10)) #十进制转二进制 0b1010
print(oct(10)) #十进制转八进制 0o12
print(hex(10)) #十进制转十六进制 0xa
#布尔值为假:0,None,空
bool()
#bytes
print('hello'.encode('utf-8'))
print(bytes('hello',encoding='utf-8')) #字节串
#callable
print(callable(max)) #判断是否被调用
#chr , ord
print(chr(65)) #按ascii 把数字转字符
print(ord('A')) #字符转数字
#complex复数
x=1-2j  #x=complex(1-2j)
print(type(x))
print(x.real) #实部
print(x.imag) #虚部
#数据类型: dict,int,list,tuple,str,float,set,frozenset,complex
s=set({1,2,3}) #可变集合
s=frozenset({1,2,3}) #不可变集合
#dir
import time
print(dir(time)) #列出time的属性
#divmod
print(divmod(1001,25)) #(40,1) 相除显示商和余数
#enumerate
l=['a','b','c','d']
for x in enumerate(l): #元组(索引,值)
print(x)
#hash
print(hash('asdfasdfasdfasdfasdf')) #哈希
print(hash(' asdfasdfasdfasdfasdf'))
#help
def func():
'''
xxxxxx
:return:
'''
pass
print(help(func))
#isinstance
print(isinstance(1,int))
print(type(1) is int)
#pow
print(pow(10,2,3)) #10**2%3 幂次方后取余
#str
print(str({'a':1})) #转换为字符串类型 repr一般不用
#reversed
l=[1,4,2,9]
print(list(reversed(l))) #反转
#round
print(round(10.55545,3)) #保留3位小数点,四舍五入
#slice
l1=['a','b','c','d','e']
l2=['a','b','c','d','e']
print(l1[1:5:2]) #'b','d' 
print(l2[1:5:2]) #'b','d'
obj=slice(1,5,2) #切片可以重用 基本不用
print(l1[obj])
print(l2[obj])
#sum
print(sum([1,2,3,4])) #后面是可迭代对象
print(sum(range(10)))
#vars
print(vars() is locals()) 
#vars(obj) 等同于obj.__dict__
x=111111111111111111111111111111111111111
print(locals()) #只是绑定关系
#import , __import_
import "time" #import 不能导入字符串

m=input('>>: ')
print(type(m))
obj=__import__(m) #导入的是字符串
obj.sleep(3)

#了解:compile ,exec ,eval
#eval:提取字符串内的表达式执行,然后返回执行结果
# s1="1+2+3"
s1="['a','b','c']"
l=eval(s1)
print(type(l)) #<class ‘list’>

s2="for i in range(10):print(i)"
eval(s2)

#exec:仅仅只是执行字符串内的表达式或语句,没有返回值
s1="1+2+3"
print(exec(s1)) #None 没有返回值

s2="for i in range(10):print(i)"
exec(s2) #正常输出

#compile(str,filename,kind)
# filename:用于追踪str来自于哪个文件,如果不想追踪就可以不定义
# kind可以是:single代表一条语句,exec代表一组语句,eval代表一个表达式
s='for i in range(10):print(i)'
code=compile(s,'','exec') #把s编译成可以exec执行的语句
exec(code)

s='1+2+3'
code=compile(s,'','eval')
eval(code)

 

posted on 2017-12-27 12:31  蜗牛也是妞  阅读(200)  评论(0编辑  收藏  举报