1.函数
①函数的定义与调用
1.定义:
def funname(参数):
函数体
2.调用:
调用有两种方式,位置参数和关键字参数,如下。位置参数顺序一定要一致
def sum_h(a,b):
return a+16*b
print(sum_h(3,9))
print(sum_h(b = 9,a = 3))
》》
147
147
②参数传递
1.形参与实参
定义函数时,括号里面的参数
调用函数时,括号里面的参数
2.值传递与引用传递
如果实参是不可变对象如数字、字符串,则是值传递,调用函数后,实参值不变。
如果实参是可变对象如列表,则是引用传递,调用后实参值改变(可变变)
def list_add(a):
a.append(1)
a = [3,6,9]
list_add(a)
print(a)
》》
[3, 6, 9, 1]
③参数默认值与可变参数
1.设置默认值
注意:指定了默认值的参数一定要放在最后
默认值一定要设置为不可变对象
def sum_h(a,b = "默认1",c = "默认2"):
print(a+b+c)
sum_h("字符")
》》
字符默认1默认2
2.可变参数
第一种:*parameter (可输入任意个参数,相当于输入是一个元组)
def sum_h(*a):
b = 0
for i in a:
b+=i
return b
print(sum_h(1,2,3,4))
第二种:**parameter (可输入任意个参数,相当于输入是一个字典)
def sal(**a):
for k,v in a.items():
print(k,"改变后的工资为",v+1000)
sa = {"小明":9000,"小王":9500,"小付":15600}
sal(**sa)
》》
小明 改变后的工资为 10000
小王 改变后的工资为 10500
小付 改变后的工资为 16600
④局部变量与全局变量
1.局部变量:
只在函数内部定义和使用的变量。
2.全局变量:
①在函数外部定义
则在函数内可以访问到,而且可以改变值,(?)
②在函数内部定义
def s():
global b
b = 100
print(b)
s() #如果没有这一步调用,那么执行下一行就会报错(可以理解为函数不调用就不编译)
print(b)
》》
100
100
2.匿名函数(lambda表达式)
本质:短小的回调函数 (通常只用一次)
格式:函数名 = lambda 参数1,参数2:表达式
su = lambda a,b:a*100+b*10
print(su(3,4))
》》
340