仅记录个人学习Python所学,学识浅薄,若有错误欢迎指出。文章可能会不太完善,后续可能会继续更新。
一、概述
问题: 代码重复
后期维护成本太高
代码可读性不高
解决问题:函数
在一个完整的项目中,某些功能会被反复使用,那么将这部分功能对应的代码提取出来,当需要使用功能的时候直接使用
本质:对一些特殊功能的封装
优点:
a.简化代码结构,提高应用的效率
b.提高代码复用性
c.提高代码的可读性和可维护性
建议:但凡涉及到功能,都尽量使用函数实现
二、使用函数
语法:
def 函数名(参数1,参数2,参数3…):
函数体
返回值
说明:
a.函数由两部分组成:声明部分和实现部分
b.def,关键字,是define的缩写,表示定义的意思
c.函数名:类似于变量名,遵循标识符的命名规则,尽量做到顾名思义
d.():表示的参数列表的开始和结束
e.参数1,参数2,参数3… :参数列表【形式参数,简称为形参】,其实本质上就是一个变量名,参数列表可以为空
f.函数体:封装的功能的代码
g.返回值:一般用于结束函数,可有可无,如果有返回值,则表示将相关的信息携带出去,携带给调用者,如果没有返回值,则相当于返回None
函数调用
def fn():
print('fn')
# 调用函数
fn()
#注意1:当定义好一个函数之后,这个函数不会自动执行函数体
#2.函数的调用
#格式:函数名(参数列表)
#注意2:当调用函数的时候,参数列表需要和定义函数时候的参数列表保持一致
#注意3:一个函数可以被多次调用
fn()
fn()
#3.注意4:当在同一个py文件中定义多个同名的函数,最终调用函数,调用的最后出现的函数【覆盖:函数名类似于变量名,相当于变量的重新赋值】
#4.注意5:自定义函数必须先定义,然后才调用,否则报NameError
参数
参数列表:如果函数所实现的功能涉及到未知项参与运算,此时就可以将未知项设置为参数
格式:参数1,参数2…
分类:
形式参数:在函数的声明部分,本质就是一个变量,用于接收实际参数的值 【形参】
实际参数:在函数调用部分,实际参与运算的值,用于给形式参数赋值 【实参】
传参:实际参数给形式参数赋值的过程,形式参数 = 实际参数
# 参数:
# 形参:形式参数,在函数声明的括号中 如: a,b
# 实参: 实际参数,在函数调用的括号中 如:2,3
# 求一个年份是否是闰年
def is_leap(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
# print(year, '是闰年')
return True
else:
# print(year, '平年')
return False
r = is_leap(2020)
print(r)
返回值 return
作用:表示一个函数执行完毕之后得到的结果
使用:return,表示结束函数,将函数得到的结果返回给调用者
# return 返回
# 1. 终止函数
# 2. 可以返回结果
# 3. 如果没有return或return后没有值,则默认返回None
# 交换两个变量
# return : 多个值
def change(a, b):
return b, a
r = change(1, 2)
print(r) # (2, 1)
参数的类型
必需参数
调用函数的时候必须以正确的顺序传参,传参的时候参数的数量和形参必须保持一致
关键字参数
使用关键字参数允许函数调用的时候实参的顺序和形参的顺序可以不一致,可以使用关键字进行自动的匹配
# 函数参数
# 位置参数/必需参数
def f1(x, y):
print(x, y)
f1(3, 4)
# 默认参数
def f2(x, y, z=1):
print(x, y, z)
f2(3, 4)
f2(3, 4, 6)<