目录
函数
书写格式:
返回值:
定义参数的类型:
参数传入的方式:
函数的作用域:
反复使用的一段代码,将这段代码进行封装——函数——然后调用
作用:提高代码复用率(避免重复编写,方便后续修改代码) ,提高代码的可读性
def (define定义)
函数名——定义这个函数,是标识符——要满足命名规则,见名知义便于理解
def 函数名():
(缩进)函数体——真正实现具体功能的代码,调用函数时会执行的代码
return +函数的返回值
函数名() ————直接写函数名()调用函数,函数定义好后,才能调用,未调用不会执行
函数内有可能会变化的,不建议写函数内,要进行参数化
不变的数据/变量不作为参数,直接拿写在函数体内
def good_jod(salary, bonus, subsidy): # 定义函数,salary, bonus, subsidy为形式参数
sum1 = salary + bonus + subsidy
print(f"工资总和是:{sum1}")
good_jod(8000, 2000, 200) # 调用函数,传参:8000, 2000, 200为实际参数
# 必备参数:参数定义了就必须要传入,不传或少传都会报错
拿薪资总数做判断(返回值——断言),是不是好工作?
函数最终得到的结果,这个结果可被函数的外部接收。函数如果有数据需要取出调用,把这个数据的变量设置为函数的返回值
def add(a, b):
c = a + b
d = c * a
e = d * b
return d # 返回值为d
# add (5,4) # 调用函数得到函数的返回值
# 调用方式1
print(add(5, 4))
# 调用方式2,变量接收返回值
b = add(5, 4)
print(b)
# 返回值:函数如果有一个数据需要取出调用,把这个数据的变量设置为函数的返回值
# 定义好工作(薪资,奖金, 福利,接收其他:*args, **kwarg )
def good_jod(salary, bonus, result=500, *args, **kwargs):
sum1 = salary + bonus + result
for num in args: # for遍历*args元组
sum1 += num
for num1 in kwargs.values(): # for遍历**kwargs字典值
sum1 += num1
return sum1 # 定义函数的返回值
# 函数定义返回值后,可用变量接收函数的调用的时候——返回值
result = good_jod(6000, 1000, 800, 400, 500, 50, aa=100, bb=200, cc=300)
print('工资总和是:{}'.format(result))
if result >= 10000:
print("好工作")
else:
print('不是好工作')
必备参数:定义了就必须要传入,不传或少传都会报错
默认参数:给指定的形式参数设定默认值,参数值有大概率使用的情况,可设置为默认值
3.不定长参数:*args、**kwargs
形式参数:函数定义时候的变量
实际参数:调用函数时变量的 值
形参和实参形成了一一对应的配对关系。
1.位置传参:按形式参数的位置传参,有顺序性——如传错位置,参数错误(方法较简单,但容易出错)
2.关键字传参:函数调用时,在数据前加上关键字(形式参数的名称),表示数据的含义
参数名 = 参数值,指定参数名进行传参——更精确,不容易出错
混合传参:位置传参(必备参数、非默认参数)必须放在关键字传参和默认参数的前面
3.默认参数:如果有些参数有大概率的情况,可设置为默认值
有默认值的形式参数可不传参,使用默认值(简化函数的调用)
已设定默认参数,调用时传参后,可替换该参数的默认值
4.不定长参数:
*args:不确定有,也不确定有多少的参数
前面的必备参数和默认参数都接收完后,剩下位置传参方式传参多余的参数都会被这个不定长参数接收,并以元组的格式保存
*args无位置要求,根据自身需求,如放在前面,其后面的其他参数无法接收数据
**kwargs:前面的必备参数和默认参数都接收完后,剩下的用关键字方式传参的参数都会被这个不定长参数接收,并以字典的格式保存(位置:一定要放在最后)
def sum1(a, b, c):
d = a + b + c
return d
sum1(b=10, a=20, c=5) # 关键字传参,可不按参数的位置顺序写
# 默认参数:如果有些参数值有较大概率使用的情况,可设置为默认值
def sum1(a, b=1, c=500): # 赋值参数默认值
d = a + b + c
return d
sum1(100) # 调用函数传参,a为100,b、c不传使用默认值
sum1(100, 50) # a为100,b的值为50,c为默认值500
sum1(100, 50, 3)
sum1(10,c=20) # a为10,b是默认值1,c为20
# 不定长参数*args
def unsure(a, b, *c): # 不定长参数*c
calc = a + b
print(c) # 打印查看*c不定长参数,为(800,400,500)的元组
unsure(6000,1000,800,400,500)
def unsure1(a, b, *c): # 不定长参数*c
calc = a + b
for num in c: # for循环遍历不定长参数*c
calc += num
unsure1(6000,1000,800,400,500,50)
# 不定长参数**kwargs:前面的必备参数和默认参数都接收完后,剩下的用关键字方式传参的参数都会被这个不定长参数接收,并以字典的格式保存
def unsure(a, b, *c, **keywords): # 不定长参数*c,**keywords
calc = a + b
print(c) # 打印查看*c不定长参数,为(800,400,500,50)的元组
print(keywords) # 打印查看keywords不定长参数,为{'aa': 100, 'bb': 200, 'cc': 300}字典
unsure(6000,1000,800,400,500,50,aa=100,bb=200,cc=300)
def unsure1(a, b, *c, **keywords): # 不定长参数*c, **keywords
calc = a + b
for num in c: # for循环遍历不定长参数*c
calc += num
for num1 in keywords.values(): # for遍历不定长参数keywords的值
print(num1)
calc += num1
unsure1(6000,1000,800,400,500,50,aa=100,bb=200,cc=300)
函数的作用域: