#一、函数的作用
在写程序的时候会出现这样的情况:有一个功能需要要在多个地方使用,如果没有函数需要在每次使用这个功能的时候把实现这个功能的代码写一遍
如果有函数可以提前将实现指定功能的代码封装成函数,然后在所有需要这个功能的位置调用函数
#二、函数的定义
##1.什么是函数
概念:函数就实现某一特定功能的代码的封装
函数就是将实现某一个功能的所有代码打成一个包(封装起来),那以后在需要这段代码对应的功能的时候就不需要重复写这段代码了,而是直接调用函数
def sum1(n):
s = 0
for x in range(1, n + 1):
s += x
print(s)
sum1(50)
##2.函数的分类
根据函数由谁创建的可以将函数分为:系统函数和自定义函数
1)系统函数 - 有系统创建好的函数:print、input、type、chr、ord、max、sum等
2)自定义函数 - 由程序员自己创建的函数
##3.定义函数(创建函数 - 造机器)
语法:
def 函数名(形参列表):
函数说明文档
函数体
说明:
1)函数名 - 由程序员自己决定
两个要求:是标识符;不能是关键字
三个规范:见名知义(看到函数名就大概知道这个回宿舍功能是什么)、字母都小写多个单词之间使用下划线隔开;
不使用系统函数名、类名或者模块名
2)(): - 固定写法
3)形参列表 - 以’变量名1、变量名2 、变量名3…'的形式存在,这儿的每一个变量就对应一个形参(形参可以没有也可以有多个);
形参可以将函数外部的数据传递到函数内部;
定义函数的时候需不需要形参需要几个就看形参实现函数的功能的时候需不需要额外的数据,需要几个额外的数据
- 函数说明文档 - 本质就是和def保持一个缩进的多行注释
- 函数体 - 结构上就是和def保持一个缩进的一条或者多条语句(至少一条)
逻辑上函数体就是实现函数功能的代码。
初学者定义函数的步骤:
1.确定函数功能
2.确定函数名(根据功能来)
3.确定形参列表 - 看形参实现函数的功能的时候需不需要额外的数据,需要几个额外的数据
4.使用函数体实现函数功能(实现函数的功能的时候需要将形参当成对应的数据来使用)
定义一个函数求任意两个数的和
def sum1(num1, num2):
"""
(功能说明)求俩个数的和
:param num1: (参数说明)数字1
:param num2: 数字2
:return: (返回说明)None
"""
print(num1 + num2)
sum1(30, 11)
案例2:定义一个函数统计任意一个列表中数字的个数
def count_num(list1):
count = 0
for x in list1:
# if type(x) == int or type(x) == float:
# count += 1
if type(x) in (int, float):
count += 1
print(count)
list1 = [2, 3, 5]
count_num(list1)
练习1:定义一个求10的阶乘
def factorial(n):
s = 1
for x in range(1, n + 1):
s *= x
print(s)
factorial(10)
练习2:统计任意一个字符串中中文的数量
def count_chinese(str1):
count = 0
for x in str1:
if '\u4e00' <= x <= '\u9fa5':
count += 1
print(count)
str1 = 'af方式第三个g25'
count_chinese(str1)
练习3:定义一个函数判断一个字符串是否以另外一个字符串开头
def is_start(str1, str2):
print(str1[:len(str2)] == str2)
is_start('acs', 'ad')
练习4:定义一个函数,将一个名字列表中所有的名字按照123重复报数的方式分成三组
names = ['路飞', '娜美', '乌索布', '索罗', '山治', '乔巴', '纳兹', '鸣人', '佐助', '小樱', '卡卡西', '好色仙人', '犬夜叉', '杀生丸', '戈薇', '玲', '奈落','邪见']
def grouping(name_list):
names1 = name_list[0::3]
names2 = name_list[1::3]
names3 = name_list[2::3]
print(f'第一组:{names1},第二组:{names2},第三组:{names3}')
grouping(names)
三、函数的调用
##1.使用函数 - 使用机器
定义函数的时候不会执行函数体,调用函数的时候才会执行函数体(调用多少次就执行多少次)
语法:
函数名(实参列表)
说明:
函数名 - 任何已经定义过的函数名
() - 固定写法
实参列表 - 以"数据1,数据2,数据3,…"的形式存在,这儿的每一个数据就是一个实参
实参是用来给形参赋值(实参才是真正从函数外部传递函数内部的数据),实参必须和形参一一对应
def fun(x, y, z):
print(z, y, x)
fun(13, 55, 2)
##2.函数调用过程
第一步:回到函数定义的位置
第二步:传参(用实参给形参赋值)
第三步:执行函数体
第四步:确定函数返回值
第五步:回到函数调用的位置,接着往后执行