4.3函数
1.创建函数
def 函数名(形式参数):
函数体
返回值
变量名 代指 变量内容、变量值、即数据
函数名 代指 函数内容 、函数值、即【参数 + 函数体+返回值】
函数之间也可赋值 f1 =f2
2.使用函数
函数的使用方式:函数名(实际参数) 取内容后开始执行函数语句 变量的使用方式:变量名 取值操作后开始运算或传参
3.返回值
作用: 1.返回一个值 2.跳出此!!函数 ps:若不写,默认会在函数体末尾加上return = None
4.参数
传参方式:
a.普通传参
实际参数与形式参数,位置一一对应
def 函数名 (形式参数1,形式参数2):
函数体
返回值
函数名(实际参数1,实际参数2
b.指定传参
指定形式参数与实际参数的对应
def 函数名 (形式参数1,形式参数2):
函数体
返回值
函数名(形式参数2=实际参数2,形式参数1=实际参数1)
c.组合传参
既有普通传参,又有指定传参,其中指定传参位置也被固定
def f1(a,b,c):
print(a+b+c)
f1(1,2,c=3)
d.动态普通传参
*args指代具体形式参数,对应普通传参
如
def f1(*args):
f2(*args)
print('j')
def f2(a,b):
print(a+b)
return
f1(1,2)
这个例子中 *args就代表 a与b两个形参
这个例子,类似装饰器,但没有指定传参的功能。
若是直接用*args对应实际参数,*args会用元祖将实际参数封装。
如
def f1(*args):
return
f1(1,2,3) *args就为 (1,2,3)
e.动态指定传参
**kwargs指代具体形式参数,对应指定传参
如
def f1(**kwargs):
f2(**kwargs)
print('j')
def f2(a,b): **kwargs指代 可能出现 a = xx 与 b =xx
print(a+b)
return
f1(a=3,b=4)
若**kwargs若接受到实际参数,会用字典方式将其组装
f.动态传参-组合形式
用在装饰器中
def func(*args, **kwargs): 参数只能以此顺序
若def func(a,b*args, **kwargs): 参数只能以此顺序
print(a)
print(args)
print(kwargs)
func(1,2,3,'k1'=1,'k2'=2)
则a =1 b =2 *args=3 **kwargs={'k1':1,'k2':2}
g.设置默认参数
def a (c,p='jack') 有默认值的参数要放最后
h.传参是否会改变作为参数的数据本身?
引用传参与建值传参
数字、字符串默认是建值传参:即建立一个新的对象作为参数。
列表、字典默认为引用传参:把自己传进去,函数本身会改变自己。
def a(arg):
a +=1
b = 1
a(b)
print(b) # b =1
def a(arg):
a.append(1)
b =[2]
a(b)
print(b) # b =[2,1]
5.lambda表达式
# 定义函数(普通方式)
def a(arg):
return arg + 1
# 定义函数(lambda方式)<br>函数名 = lambda 参数:返回值
a = lambda arg : arg + 1
一般搭配filter()使用
b = filter(lambda arg:arg>3,[1,2,3,4,5,6]
posted on 2016-11-23 12:09 limpidstar 阅读(83) 评论(0) 收藏 举报
浙公网安备 33010602011771号