函数
1.什么是函数
a.认识函数
1)什么是函数:函数就是实现某一特定功能的代码的封装 (每个函数都有自己特定的功能)
函数就是吧实现某一个功能的所有的代码打成额一个包,每次需要这个功能的时候不用再重复去写实现这个功能的代码了,而是使用函数。
2)函数的分类 (按照函数是由谁创建/定义来进行的分类)
系统函数 - 由python提供的函数,这类函数只需要在需要他的功能的时候去调用他就好了 (由系统已经造好的机器)
例如:print,input,type,id,max,min,sun等。。。
自定义函数 - 由程序员自己定义的函数。 (自己造的机器)
b.定义(创建)函数 - 造机器
语法:
def 函数名(形参列表):
函数说明文档
函数体
说明:
def - 固定写法:
函数名 - 程序员自己命名:
两个要求:是标识符;不是关键字
三个规范:见名知意(看到函数名大概知道函数的功能;字母都小写多个单词用下划线隔开;不使用系统的函数名)、类名和
(): - 固定写法
形参列表 - 格式:使用多个变量名用逗号隔开,其中一个变量表示一个形参。(也可以没有形参)
形参的作用:将函数外部的数据传递函数里
函数说明文档 - 本质就是一个对行注释
函数体 - 就是和def保持一个缩进的一条或者多条语句。
# 练习1:定义一个函数求两个数的和
def sum_1(a, b, *c):
"""
:param a: 第一个求和的数据
:param b: 第二个求和的数据
:param c: 其他求和的数据
:return: 无
"""
num_1 = a + b
for i in c:
num_1 += i
print(num_1)
a = 1
b = 2
d = 3
e = 4
sum_1(a, b, e, d)
# 练习2:定义一个函数获取指定整数的个位数
def get_Bit(*a):
for i in a:
print('{}的个位数{}'.format(i, i % 10))
get_Bit(10, 21, 32)
# 练习3:定义一个函数获取指定字符串中数字字符的个数
def str_num(str1):
count = 0
for i in str1:
if '0' < i < '9':
count += 1
print(count)
# 练习4:定义一个函数将两个字符串合并成一个字符串,合并方式如下:
# 'abc' 和 '123' 合并为:'a1b2c3'
# 'abcdef' 和 '123' 合并为:'a1b2c3def'
# 'abc' 和 '12345' 合并为:'a1b2c345'
def merge_str(str1, str2):
str3 = ''
n = min(len(str1), len(str2))
for i in range(n):
str3 += str1[i] + str2[i]
str3 += str1[n:] + str2[n:]
print(str3)
# 练习5:定义一个函数打印10的阶乘
def print_factorial(n):
count = 1
for i in range(1, n + 1):
count *= i
print(count)
print_factorial(10)
c.调用函数(使用函数)
定义函数的时候不会执行函数体,调用函数才会执行函数体。 ()
语法:
函数名(实参列表)
说明:
函数名 - 需要调用的函数的函数名 (这个函数名对应的函数必须已经造好了)
() - 固定写法
实参列表 - 格式:多个数据用逗号隔开
实参使用来给形参赋值。(实参就是通过形参传递到函数内容的数据)
2.调用函数
语法:
函数名(实参列表)
1)定义函数不会执行函数体,调用函数才会执行函数体。(调用多少次,函数体就会执行几次)
2)调用函数的时候,实参的个数由被调用的函数的形参决定。 (用实参给形参赋值的过程叫传参)
3)函数调用过程(简单版)
当代码执行到函数调用语句的时候,后面的执行过程如下:
第一步:回到函数定义的位置
第二步:传参 (实参个形参赋值)
第三步:执行函数体
第四步:确定返回值(暂不管)
第五步:返回函数调用的位置,接着往后执行
def func2(x, y, z):
print(f'x:{
x}, y:{
y}, z:{
z}')
func2(1, 2, 3)
3.函数的参数
a.位置产数和关键字产数
据调用函数的时候实参提供方式的不同,将参数分为位置参数和关键字参数
1)位置参数
直接提供实参对应的数据,实参和形参在位置上一一对应
2)关键词参数
以’形参1=实参1,形参2=实参2,形参3=实参3 ’
def func1(a, b, c):
print(f'a:{
a}, b:{
b}, c:{
c}')
# 位置参数
func1(100, 200, 300)
func1(200, 100, 300)
# 关键字参数
func1(a=100, c=