前面我们在Python中编写程序遵循的原则是根据需求从上到下实现功能,所以经常会使用一长段代码来实现某个功能,在编程过程中最常见的操作就是复制粘贴,也就是将之前实现的代码块复制到现在所需功能的地方,这种编程方式虽然可以应付一般性简单的问题,但是不能对付大多数问题。
因此就需要用到函数,有了函数,函数本身只需要写一次,就可以多次调用。
Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接被用户调用。
python函数
一、什么是函数函数(function) 是实现某个特定功能的代码块的集合,组成为一个小模块,在需要的时候直接调用,函数在JAVA和C#中称为方法(method),函数是开发中最基本的一个模块,如图在Python通过def来定义的函数:
函数
函数的概念来源于数学上的函数,在数学中,当数据具有一定的规律时,就是用一个函数来代表该数字的规律,如图所示:
函数的概念
二、如何定义一个函数1)函数的语法格式
函数的使用包含两个步骤:
定义函数——封装独立的功能调用函数——享受封装的成果定义函数的格式:
def 函数名称(参数列表):
"函数的功能说明"
函数具体代码
return[expression]
def是英语define的缩写函数名称 应该能够表达 函数封装代码的功能,方便后续的调用return 当函数执行完毕后,可以给调用者返回数据def get_number(num01): # num01是形参 """ 函数功能:用来返回num01*num01 - num01值 :param num01: 参数 :return: 返回结果 """ return num01*num01 - num01 def get_add_result(num01, num02): return num01 + num02 def get_sub_result(num01, num02): return num01 - num02 def get_mul_result(num01, num02): return num01 * num02 def get_div_result(num01, num02): return num01 / num02 if __name__ == "__main__": print(get_number(10)) # 10是实参 print(get_number(100)) print(get_number(1000)) print(get_add_result(100, 50)) # 调用两数相加的结果 print(get_sub_result(100, 50)) # 调用两数相减的结果 print(get_mul_result(100, 50)) # 调用两数相乘的结果 print(get_div_result(100, 50)) # 调用两数相除的结果执行结果:
函数的创建
2)创建函数的规则
函数代码块以def关键词开头,后接函数标识符名称【函数名称】和圆括号()参数列表,如果没有参数可以不写。任何传入参数和自变量必须放在圆括号()中间,圆括号()中间可以用于定义参数函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明函数内容以冒号起始,并且缩进return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None3)使用函数的好处
1)分而治之:方法允许将程序分为不连续的逻辑单元。调用单独的单元与调试不包含过程的整个程序相比要容易
2)代码重用:反复实现某一个功能的代码,不需要进行多次书写,大大减少代码量
3)可读性强
4)代码的封装:使用方法的使用者不需要了解方法实现的细节,就可以使用方法。
函数
三、函数案例演示需求:生成若干个整数的集合,求最大数、最小数、元素之和、元素的平均数
import random def build_array(start_number,end_number,number): # 功能描述:生成若干个固定范围的整数集合 # :param start_number: 指定整数范围的起始值 # :param end_number: 指定整数范围的结束值 # :param number: 生成的数量 # :return: 整数的集合 number_list = [] for i in range(number): number_list.append(random.randint(start_number,end_number)) # 返回 return number_list def sum_of_list(list01:list): """ 功能描述:求所有的list元素之和 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :param list01: 要求的list名称 :return: 返回所有元素之和 """ sum = 0 for i in list01: sum += i # 返回sum return sum def max_of_list(list01:list): max_number = list01[0] for i in list01: if i > max_number: max_number = i return max_number def min_of_list(list01:list): min_number = list01[0] for i in list01: if i < min_number: min_number = i return min_number if __name__=="__main__": # 生成集合 list_number = build_array(100, 200, 10) # 生成的集合 print("生成的集合为:", list_number) # 求和 print("所有的元素之和为:", sum_of_list(list_number)) # 所有元素的最大值 print("所有的元素最大值:", max_of_list(list_number)) # 所有元素的最小值 print("所有的元素最小值:", min_of_list(list_number))执行结果:
函数操作
思考:能否将函数调用放在函数定义的上方?为什么?欢迎大家留言给我