Java转python学习笔记-函数篇#函数的使⽤
def function(number):#定义函数不需要定义参数类型
print("hello world"+str(number))#函数体中的内容全部缩进⼀格
function(8)#使⽤函数
# 可变参数
def funargs(name,*age):#可变参数放在最后⾯
print(name)
print(*age)
funargs('虎',1,2,3,5)#会传进去⼀个元组
# 参数默认值
def add(a,b=10,c=2):
print(a + b + c)
add(5)#没传b默认b=10,c=2
add(5,15)#b=15
add(5,c=20)#跳过b,b还是⽤默认值
# 传⼊字典
def funa(**kwargs):#关键字参数
print(kwargs)
funa(a=1,b=2,c=3)#{'a': 1, 'b': 2, 'c': 3}
dict1 ={'a':1,'b':2,'c':3}
funa(**dict1)#传⼊字典类型要** , **是拆包
# 传⼊列表
def funb(*l):
print(l)
list1 =[1,2,3,4,5]
funb(*list1)#传⼊列表类型要加* ,*是拆包
# 全局变量函数体内部要改变函数体外部的值
islogin =False
def func(name):
global islogin#为了修改全局变量(不可变类型),在当前需要使⽤层级函数体内部声明
if islogin:
print('{}登陆成功'.format(name))
else:
islogin =True
print('{}重新登陆成功'.format(name))
func('龙飞')
# 内部函数⽬的是修改内部变量
def fund():
list2 =[1,2,3]
n =5
def inner_fund():
nonlocal n #此处要加nolocal 内部函数修改⽗函数的不可变变量
for index,i in enumerate(list2):#枚举类型顺序把每个元素取出并且下表⾃动分配⾃动递增
list2[index]= i + n
n +=1
inner_fund()
print(list2)
fund()
# 闭包保存某次运算的状态每次保存独⽴
def fune(a,b):
c =10
def inner_fune():
print(a + b +c)
return inner_fune#注意没有括号
ifune = fune(3,6)#将内部函数调出来赋值给ifune
ifune()#调⽤内部函数
# 闭包的同级访问
def funf():
def funf1():
print('funf1')
def funf2():
funf1()
print('funf2')
return funf2
f = funf()
f()#可以调⽤f1和f2
# 闭包作为计数器
def fung():
container =[0]
def add():
container[0]+=1
print('这是第{}次调⽤add()'.format(container[0]))
return add
container = fung()
container()#这是第1次调⽤add()
container()#这是第2次调⽤add()
container()#这是第3次调⽤add()
# 装饰器在需要的地⽅拓展函数功能
def decorate(house):
def fun():
house()
print('铺地板')
print('刷油漆')
print('⽤了@装饰器后会调⽤装饰器函数内部除内部函数之外的程序') return fun
# def house():
# #    print('旧房⼦')
# #
# house()#旧房⼦
@decorate
def house():
print('旧房⼦')
house()# 旧房⼦铺地板刷油漆
# 带参数的装饰器
def decorate(house):
def fun(name):#如果有参数的话,此处加形参
print(name)
house(name)
print('铺地板')
print('刷油漆')
print('⽤了@装饰器后会调⽤装饰器函数内部除内部函数之外的程序')
print('⽤了@装饰器后会调⽤装饰器函数内部除内部函数之外的程序') return fun
# def house():
# #    print('旧房⼦')
# #
# house()#旧房⼦
@decorate
def house(name):#如果有参数的话,此处加形参
print('旧房⼦')
house('我的')#如果有参数的话,此处加实参
# 可变参数类型装饰器作为万能装饰器起到
def decorate(house):
def fun(*args,**kwargs):#拆包
house(*args,**kwargs)
print('铺地板')
print('刷油漆')
print('⽤了@装饰器后会调⽤装饰器函数内部除内部函数之外的程序') return fun
# def house():
# #    print('旧房⼦')
# #
# house()#旧房⼦
@decorate
def house(people ,cla ='1'):#如果有参数的话,此处加形参
print('旧房⼦')
print('{},{}'.format(people,cla))
people =['你的','我的','他的']
house(people ,cla =6)#如果有参数的话,此处加实参
# 多层装饰器
def d1(funh):#需要带参数
print('d1开始')
def i_d1(*args,**kwargs):
print('d1装饰')
funh()
return i_d1
python转java代码def d2(funh):#需要带参数
print('d2开始')
def i_d2(*args,**kwargs):
print('d2装饰')
funh()
return i_d2
@d2
@d1#离的近的先装饰
def funh():
print('原材料')
funh()
# 带参数的装饰器(3层)
def outer(a):
print('outer')
def in1(funi):
print('in1')
def in2(*args,**kwargs):
print('in2 {}'.format(a))
print('in2 {}'.format(a))
funi(*args,**kwargs)
return in2#注意没有括号
return in1#注意没有括号
@outer(10)
def funi(num):
print('原函数{}'.format(num))
funi(20)
# 匿名函数
s =lambda a,b:a+b#a,b就是参数  :就是return
print(s(1,2))
# 匿名函数作为参数
list2 =[{'a':20,'b':30},{'a':30,'b':28},{'a':40,'b':27}]
print(max(list2,key=lambda x:x['a']))#key的作⽤是接受⼀个表明规则的函数作为max函数的补充
list3 =[1,2,3,4,5,6]
print(list(map(lambda x:x+2,list3)))#map遍历每⼀个列表元素进⾏操作 :后⾯也可以放三⽬运算符
from functools import reduce
tuple1 =(1,2,3,4,5,6)
print(reduce(lambda x,y:x+y,tuple1))# 1+2+3+4+5+6 依次操作 x=1,y=2 下⼀步 x=1+2 y=3 ⽤于元组相邻元素之间的运算
print(tuple(filter(lambda x:x>3,tuple1)))#过滤器 :x>3 的意思是如果:后⾯的结果为True则将当前元素添加到⼀个新的容器内作为筛选结果print(sorted(list2,key=lambda x:x['b']))#默认是升序排序如果降序  reverse=True

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。