函数小结
偏函数
print(int(‘123’,base=10))#强制转换为十进制
print(int(‘101110’,base=2))#强制转换为二进制
import functools
#把一个参数固定住,形成一个新的函数
int3=functools.partial(int,base=2) #规定了输入的值必须是二进制
print(int3(‘10111001’))
print(int3(‘10111101’))
装饰器01
def say(age):
print(‘sunck is %d years old’%(age))
def outer(func):
def inner(age):
if age<0:
age=0
func(age)
return inner
say_2=outer(say)
say_2(-10)
装饰器02
def outer(func):
def inner(age):
if age<0:
age=0
func(age)
return inner
@outer #相当于say=outer(say) 参看复杂装饰器的变换过程 升级后的功能又一次附加到say中
#使用@将装饰器应用到函数上
def say(age):
print(‘sunck is %d years old’%(age))
say(-10)
通用装饰器
def outer(func):
#…
def inner(*args,**kwargs):
#添加修改功能
print("&&&&&&&&&&&&&&&&&&&&")
func(*args,**kwargs)
#…
return inner
@outer
def say(name,age): #函数的参数一般在6到7个
print(‘my name is %s, I am %d years old’%(name,age))
say(“sunck”,18)
迭代器
from collections import Iterable
from collections import Iterator
#可迭代对象Iterable
#for 数据类型
#1. 集合数据类型 如 list tuple dict set string
#2.是generator, 包括生成器和带yeild的generator function
print(isinstance([],Iterator)) #用isinstance判断是否为迭代器
print(isinstance((),Iterator))
print(isinstance({},Iterator))
print(isinstance("",Iterator))
print(isinstance ((x for x in range(10)),Iterator))
print(1,Iterable)
“”“迭代器 可用于for循环 可以被next()不断调用并返回下一个值
,直到最后跑出一个stopIteration 表示无法继续返回下一个值”""
m=(x for x in range(5))
print(next(m))
print(next(m))
print(next(m))
print(next(m))
print(next(m))
print(next(m))
#将列表转化为迭代器
a=iter([1,2,3,4,5,6,7,8])
print(next(a))
print(next(a))
print(next(a))
print(next(a))
#将列表转化为迭代器
a=iter([1,2,3,4,5,6,7,8])
print(next(a))
print(next(a))
print(next(a))
print(next(a))