一、函数入门:
1.为什么使用函数:
在程序开发过程中会出现:
1.代码重复
2.后期维护成本太高
3.代码可读性不高
解决问题:函数
在一个完整的项目中,某些功能会被反复使用,那么将这部分功能对应的代码提取出来,当需要使用功能的时候直接使用
本质:对一些特殊功能的封装
函数的优点:
a.简化代码结构,提高应用的效率
b.提高代码复用性
c.提高代码的可读性和可维护性
建议:但凡涉及到功能,都尽量使用函数实现
2.函数定义:
语法:
def 函数名(参数1,参数2,参数3…):
函数体
返回值
说明:
a.函数由两部分组成:声明部分和实现部分
b.def,关键字,是define的缩写,表示定义的意思
c.函数名:类似于变量名,遵循标识符的命名规则,尽量做到顾名思义
d.():表示的参数列表的开始和结束
e.参数1,参数2,参数3… :参数列表【形式参数,简称为形参】,其实本质上就是一个变量名,参数列表可以为空
f.函数体:封装的功能的代码
g.返回值:一般用于结束函数,可有可无,如果有返回值,则表示将相关的信息携带出去,携带给调用者,如果没有返回值,则相当于返回None
3.简单函数举例:
# 简单的函数
# 定义函数
def fn():
print('fn')
# 调用函数
fn()
# 求2个数的和
def sum2(a, b):
s = a + b
print(s)
sum2(2, 3)
# 参数: 形参和实参
# 形参: 形式参数, 在函数声明的括号()中, 如:a,b
# 实参: 实际参数, 在函数调用的括号()中, 如:2,3
4. 函数的调用:
#print(num)
#test()
#1.无参无返回值的函数
#函数的声明部分
def test():
#函数的实现部分
#函数体
#print("hello")
for i in range(10):
print(i)
def test():
print("~~~~~~")
#注意1:当定义好一个函数之后,这个函数不会自动执行函数体
#2.函数的调用
#格式:函数名(参数列表)
#注意2:当调用函数的时候,参数列表需要和定义函数时候的参数列表保持一致
#注意3:一个函数可以被多次调用
test()
test()
test()
test()
#3.注意4:当在同一个py文件中定义多个同名的函数,最终调用函数,调用的最后出现的函数【覆盖:函数名类似于变量名,相当于变量的重新赋值】
#4.注意5:自定义函数必须先定义,然后才调用,否则报NameError
二、函数的参数:
1.形参与实参:
1)形式参数:在函数的声明部分,本质就是一个变量,用于接收实际参数的值 【形参】
2)实际参数:在函数调用部分,实际参与运算的值,用于给形式参数赋值 【实参】
2.位置参数/必需参数:
调用函数的时候必须以正确的顺序传参,传参的时候参数的数量和形参必须保持一致
def f1(x, y):
print(x, y)
f1(3, 4)
3.默认参数:
调用函数的时候,如果没有传递参数,则会使用默认参数
def f2(x, y, z=5):
print(x, y, z)
f2(3, 4)
f2(3, 4, 6)
4.关键字参数:
使用关键字参数允许函数调用的时候实参的顺序和形参的顺序可以不一致,可以使用关键字进行自动的匹配
def f3(x, y=4, z=