函数基础
自定义函数
#coding:utf-8
'''假设有数据:d={'a':39,'b':40,'c':99,'d':100}
(字典的键值对还可以增加),编写函数,实现对这个字典中的键值对的查询。例如向
函数提供a=1,b=40等参数,查询这些是否为此数据的值
'''
def findkv(dct,**kwargs):
r={k:v for k,v in kwargs.items() if dct.get(k)==v}
return r
d={'a':39,'b':40,'c':99,'d':100}
fr=findkv(d,a=1,b=40)
print(fr)
嵌套函数
#coding:utf-8
'''G=mg, g=9.8
'''
def w(m,g):
return m*g
def wight(g):
def cal_mg(m):
return m*g
return cal_mg
w=wight(10)
G=w(100)
G2=w(50)
print(G,G2)
装饰器
#coding:utf-8
import time
from functools import wraps
def timethis(func):
@wraps(func)
def wrapper(*args,**kwargs):
start=time.time()
func(*args,**kwargs)
end=time.time()
print(func.__name__,end-start)
return wrapper
@timethis
def countdown(n):
while n>0:
n-=1
@timethis
def text_list_append():
lst=[]
for i in range(1000000):
lst.append(i)
@timethis
def text_list_compre():
[i for i in range(1000000)]
countdown(100000)
countdown(1000000)
text_list_append()
text_list_compre()
特殊函数
def add(x):
x+=3
return x
print(add(3))
lam=lambda x:x+3
print(lam(3))#lambda函数 用一行能解决问题的函数
#help(map)
m=map(lambda x:x+3,range(10))
print(m)
print(list(m))#map(func,*iterables) -->map object 将可迭代对象取出一次带入函数,完成函数的计算 返回的是对象,需要查看返回结果 需要转换
lst1=[1,2,3,4,5]
lst2=[2,3,4,5,6]
lst3=[3,4,5,6,7]
a=[x+y+z for x,y,z in zip(lst1,lst2,lst3)]
print(a)
a1=map(lambda x,y,z:x+y+z,lst1,lst2,lst3)
print(list(a1))
#help(filter)
n=range(-5,5)
f=filter(lambda x: x>0,n)#过滤器
print(list(f))
f1=[i for i in n if i>0]
print(f1)