Python基础语法——函数(二)

本文详细解析了Python函数如何被调用执行的过程,包括函数在内存中的存储方式、调用栈的工作原理及其对函数调用的影响。
前言

在上篇讲述Python函数的整体以及两种方式的调用,本篇博文是对函数调用进行一个细致的解析即函数是怎么被调用执行的。

Python程序执行

Python学习至今,我们应该对Python的执行有所了解,Python是解释性语言,所以在执行过程中便是按照代码顺序一条条读取执行;
函数执行:
函数头在执行过程中被读取时,解释器会将函数头以及函数体存储在内存中,此时的函数内容并不会被执行,只有当解释器读取到调用函数的语句时才会执行函数,此时程序的控制权便转移到了函数,开始执行函数体内容当函数体内容执行完之后程序控制权便回到调用者。
注意:Python中函数是被读取到内存之后等待调用执行,所以函数可以定义在程序文件的任意位置。

调用栈

在执行程序过程中便涉及内存的存储与调用,而函数的调用便是内存的堆栈处理。
每次调用函数时,系统会创建一个为函数存储它的参数和变量的激活记录,然后将激活记录存放在一个被称为堆栈的内存区域。
调用栈也可称为执行堆栈、运行堆栈或机器堆栈,简称为堆栈。
当一个函数调用另一个函数时,调用者的激活记录不会改变,然后会为新函数的调用创建一个新的激活记录,当函数调用执行结束之后程序控制转移回到调用者,同时该函数在堆栈中的激活记录会被删除。
堆栈采用的先进后出的存取方式进行存储激活记录,即最后被调用的函数的激活记录是最先被删除的,理解堆栈有利于理解函数的调用。
当函数被调用时,一个新的激活记录会被创建用于存储相应变量和参数(注意:Python中所有数据均是对象,变量指向对象即数据 ),当堆中的对象不再需要时,Python会自动清空对象。
例如:在max函数中,v1和v2分别指向对象o1和o2(大),result即最大值最终指向较大的对象即o2,最终返回o2,而当执行结束不再需要时这些对象便从栈中被删除。

小结

今天主要是对函数调用的解析和补充,了解一个函数是如何调用的,在程序编写中会对程序执行更加了解和有把握。

<think>好的,用户想学习Python基础语法,并通过示例创建一个健康指数计算器。首先,我需要确定用户的基础水平,可能是个刚开始学习Python的新手,所以需要从基础语法讲起,再逐步引导到项目实践。 根据用户提供的引用内容,特别是引用[2]和[3],用户可能更倾向于使用简单的编辑器而不是复杂的IDE,所以示例代码应该简洁,不需要依赖外部库。同时,引用[5]提到了使用函数和参数,这可以作为健康指数计算器的基础结构。 首先,我应该介绍Python基础语法,包括变量、输入输出、条件判断和函数定义。然后,结合健康指数计算器的需求,比如BMI计算,分步骤讲解如何实现。可能需要包括用户输入身高体重,计算BMI,并根据结果分类健康状态。 还要注意代码规范,引用[1]中的PEP 8,所以示例代码需要符合规范,比如函数命名用小写字母和下划线,适当的空格等。同时,引用[4]的索引知识可能在处理字符串时有用,但在这个示例中可能用不上,但可以留到后续扩展。 用户可能需要清晰的步骤,所以将教程分为基础语法和实战示例两部分。在实战部分,先明确健康指数的定义,比如BMI,然后逐步编码,并解释每一部分的作用。最后,可以给出优化建议,比如增加异常处理,让用户有机会扩展。 需要确保LaTeX格式正确,行内公式用$...$,独立公式用$$...$$。例如,BMI公式是独立公式,应该用$$...$$。同时,生成的相关问题要围绕用户可能遇到的下一步问题,比如如何处理无效输入,增加其他指标等。</think>### Python基础语法与健康指数计算器教程 --- #### **一、Python基础语法要点** 1. **输入输出** 使用`input()`获取用户输入,`print()`输出结果: ```python height = float(input("请输入身高(米):")) print("您的身高是:", height) ``` 2. **变量与运算** Python支持基本算术运算,如`+`、`-`、`*`、`/`,适合计算健康指数: $$BMI = \frac{体重}{身高^2}$$ ```python weight = 65 # 单位:千克 bmi = weight / (height ** 2) ``` 3. **条件判断** 用`if-elif-else`实现健康状态分类: ```python if bmi < 18.5: status = "偏瘦" elif 18.5 <= bmi < 24: status = "正常" else: status = "超重" ``` 4. **函数定义** 封装计算逻辑为函数(参考引用[5]): ```python def calculate_bmi(height, weight): return weight / (height ** 2) ``` --- #### **、健康指数计算器实战** **目标**:计算BMI并评估健康状态 **完整代码**: ```python def health_calculator(): print("=== 健康指数计算器 ===") height = float(input("请输入身高(米):")) weight = float(input("请输入体重(千克):")) bmi = weight / (height ** 2) if bmi < 18.5: status = "偏瘦" elif 18.5 <= bmi < 24: status = "正常" elif 24 <= bmi < 28: status = "超重" else: status = "肥胖" print(f"您的BMI是:{bmi:.1f},状态:{status}") health_calculator() ``` **代码说明**: - `input()`获取用户输入并转为浮点数 - BMI公式计算体重与身高平方的比值 - `if-elif-else`实现多条件分类 - 输出结果保留1位小数(`:.1f`) --- #### **三、优化建议(PEP 8规范参考引用[1])** 1. **异常处理**:添加`try-except`防止无效输入 ```python try: height = float(input("请输入身高(米):")) except ValueError: print("请输入数字!") ``` 2. **扩展功能**:增加体脂率、基础代谢率等指标 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值