Python高级之函数
1377 字
7 分钟
Python高级之函数
【一】函数的基本使用
- 基于前一部分的学习,我们已经能开发一些功能简单的小程序了
- 但随着程序功能的增多,代码量随之增大
- 此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差,且程序中需要频繁使用同一功能时,只能重复编写该功能的实现代码,日积月累,程序将变得冗长
- 并且当某一功能需要修改时,又不得不找出所有定义及使用这段功能的地方修改之,管理维护的难度极大
- 好吧,装了半天逼,到底该如何解决提出的这些问题呢?
- 我们完全可以从现实生活中找到简化程序设计的方案:
- 比如一个修理工会事先准备好螺丝刀、锤子等工具,这样在进行修理的过程中
- 需要用到拧螺丝的功能时就直接拿来螺丝刀使用
- 需要用到锤击物体的功能时就直接拿来锤子使用,而无需临时制造。
- 这个例子的核心在于’事先准备好工具’,遇到应用场景时’拿来就用’,。
- 在程序中,具备某一功能的‘工具’指的就是函数,‘事先准备工具’的过程即函数的定义,‘拿来就用’即函数的调用。
【二】函数的定义和调用
- 函数的使用必须遵循’先定义,后调用’的原则。
- 函数的定义就相当于事先将函数体代码保存起来,然后将内存地址赋值给函数名,函数名就是对这段代码的引用,这和变量的定义是相似的。
- 没有事先定义函数而直接调用,就相当于在引用一个不存在的’变量名’。
- 定义函数的语法
def 函数名(参数1,参数2,...): """文档描述""" 函数体 return 值- def: 定义函数的关键字;
- 函数名:函数名指向函数内存地址,是对函数体代码的引用。函数的命名应该反映出函数的功能;
- 括号:括号内定义参数,参数是可有可无的,且无需指定参数的类型;
- 冒号:括号后要加冒号,然后在下一行开始缩进编写函数体的代码;
- """文档描述""": 描述函数功能,参数介绍等信息的文档,非必要,但是建议加上,从而增强函数的可读性;
- 函数体:由语句和表达式组成;
- return 值:定义函数的返回值,return是可有可无的。
【1】函数的定义
(0)空函数
def login(): pass- 函数体为pass代表什么都不做,称之为空函数。
- 定义空函数通常是有用的,因为在程序设计的开始,往往是先想好程序都需要完成什么功能,然后把所有功能都列举出来用pass充当函数体“占位符”,这将使得程序的体系结构立见,清晰且可读性强。
- 例如要编写一个ftp程序
- 我们可能想到的功能有用户认证,下载,上传,浏览,切换目录等功能
- 可以先做出如下定义:
def auth_user(): """user authentication function""" pass
def download_file(): """download file function""" pass
def upload_file(): """upload file function""" pass
def ls(): """list contents function""" pass
def cd(): """change directory""" pass(1)无参无返回值
def interactive(): user=input('user>>: ').strip() pwd=input('password>>: ').strip()(2)有参无返回值
- 参数是函数的调用者向函数体传值的媒介
def greet(name): print(f"Hello, {name}!")
greet("Dream") # Output: Hello, Dream!(3)有多个参数无返回值
def add_numbers(a, b): result = a + b print(f"The sum of {a} and {b} is {result}")
add_numbers(3, 5) # Output: The sum of 3 and 5 is 8(4)多个参数一个返回值
# 定义一个函数,函数有两个参数def add_numbers(a, b): result = a + b print(f"The sum of {a} and {b} is {result}") # 使用 return 关键字将想要返回的结果返回出去 return result
res = add_numbers(3, 5) # Output: The sum of 3 and 5 is 8print(res) # 8(5)多个参数多个返回值
def rectangle_info(length, width): area = length * width perimeter = 2 * (length + width) return area, perimeter
# 解压赋值area, perimeter = rectangle_info(4, 5)print(f"Area: {area}, Perimeter: {perimeter}")# Area: 20, Perimeter: 18【2】函数的三种调用方式
(1)直接调用
def add(x, y): return x + y
# 直接调用函数,拿到对应的结果result = add(3, 5)print(result) # 8(2)表达式调用
def subtract(x, y): return x - y
# 将定义好的函数地址给对应的变量operation = subtract# 通过给定的变量进行调用result = operation(10, 5)print(result) # 5def add(a, b): res = a + b print(f"这是 add 函数 :>>> {res}") return res
def subtract(a, b): res = a - b print(f"这是 subtract 函数 :>>> {res}") return res
func_dict = {1: add, 2: subtract}func_id = input("请输入功能 id :>>>> ")func = func_dict.get(int(func_id))
a = input("请输入参数 a :>>>> ")b = input("请输入参数 b :>>>> ")res = func(int(a), int(b))print(res)(3)函数作为参数
# 【3】触发这个函数 带入参数x 参数ydef multiply(x, y): # 计算出返回值 return x * y
def operate(func, x, y): # 【2】函数地址传过来 带参数过来 # 返回值是 函数地址(参数x,参数y) # 【4】接收到返回值并返回 return func(x, y)
# 【1】operate 函数 有3个参数 : 函数地址 参数x 参数yresult = operate(multiply, 4, 6)# 【5】拿到返回值print(result)支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
C 语言发展史
编程语言了解 C 语言从 BCPL、B 语言到现代标准 C 的发展历程、核心特点与应用领域。
2
C 语言开发环境的安装与配置
编程语言在 Windows、Linux 与 macOS 上安装 C 工具链,配置编辑器,并编译运行第一个 C 程序。
3
C 语言初识:程序运行机制与基本结构
编程语言认识 C 程序从源代码到运行的完整流程,以及基础语法和程序的基本结构。
4
C 语言基础:注释、关键字、变量与数据类型
编程语言学习 C 语言的注释、关键字、标识符、常量、变量和基本数据类型等基础知识。
5
C 语言数据类型
编程语言理解 C 语言的数据类型体系,包括基本类型、整数类型、浮点类型和逻辑类型。
随机文章随机推荐














