python方法(函数)
定义格式
def 方法名(参数1,参数2,参数3):
# 具体实现
return #返回值
参数默认值
def desc(name='no-name',age=0):
print("%s %d"%(name,age))
# 调用
desc() # no-name 0
desc("jack",10) # jack 10
可变参数——参数数量任意
针对list型参数
def add(*numbers):
res=0
for i in numbers:
res = res+i
return res
# 调用
add(1,2,3,4)
add(1,2,3)
add(1,2)
针对dict型参数
def calc2(object,**arr):
for i in arr:
object.update({i:arr[i]})
return object
# 调用
obj=calc2({},name="jack",age=19)
print(obj)
小技巧
带上虚参名,参数可以不按照顺序写
def insertArr(arr,v1,v2,v3): arr.insert(len(arr),v1) arr.insert(len(arr),v2) arr.insert(len(arr),v3) return arr # 带上虚参名,参数可以不按照顺序写 arr=insertArr(v2='a',arr=[],v1='b',v3='c')
但不带虚参名,参数传入顺序必须按定义来传
函数内定义函数
def add():
def v1():
return 10
def v2():
return 2
return v1() + v2()
# 调用
print(add()) # 12
返回多个值
def re_position(y,x):
return x,y
x = 10
y = 20
x,y = re_position(x,y)# x=20 y=10
返回值:函数
python函数的返回值除了一次返回多个值,也支持返回函数,如下👇
def re_fun():
def run():
print("success")
# 返回值:函数
return run
f = re_fun()
f()
匿名函数
lambda表达式
res=list( map( lambda x:x*x,[i for i in range(1,10)] ) )
# 等效于
def f(x):
return x*x
res = list(map(f,[i for i in range(1,10)]))
再来个2个参数的lambda表达式
# 计算1-4的和
res=reduce( lambda x,y:x+y,[i for i in range(1,5)] )
偏函数
由python的functools提供,可固定住传入参数
from functools import partial
int2 = partial(int,base=8)
print(int2('10'))
再举个栗子
def add(v1,v2,v3,v4):
print("%d %d %d %d"%(v1,v2,v3,v4))
return v1 + v2 + v3 +v4
# 相当于代理了函数,且固定了值,不允许在调用int2时向固定的值传参
int2 = partial(add,v2=2,v3=3,v4=4)
print(int2(1))
装饰器
由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。
def now():
print('2023-01-17')
f = now
f()
本文来自博客园,作者:勤匠,转载请注明原文链接:https://www.cnblogs.com/JarryShu/p/17059194.html