跟着我学Python基础篇:05.函数

往期文章

跟着我学Python基础篇:01.初露端倪
跟着我学Python基础篇:02.数字与字符串编程
跟着我学Python基础篇:03.选择结构
跟着我学Python基础篇:04.循环


目录

  • 往期文章
  • 1. 函数如同黑盒子
  • 2. 实现和测试函数
    • 2.1 实现函数
    • 2.2 测试函数
    • 2.3 包含函数的程序
    • 2.4 注释风格
  • 3. 参数的传递
  • 4. 返回值
  • 5. 没有返回值的函数
  • 6. 变量作用域
  • 7. 递归函数

1. 函数如同黑盒子

函数是有名字的一系列指令。你输入参数,函数会得到一个对应的结果。而中间得到这个结果的细节,就好像被封印在了函数内部这个黑盒子中。

2. 实现和测试函数

2.1 实现函数

编写函数时,我们需要:

  1. 给函数选一个名字
  2. 给每个参数定义变量

把这些信息和保留字def放到一起,组成函数定义的第一行:

def name(parameter)

这叫作函数的头部,接下来,说明函数体,函数体包含函数被调用时要执行的指令,一个函数是一个复合语句,要求函数体内部的语句缩进到同样的层次。
我们举一个计算立方体体积的函数的例子:

def cubeVolume(sideLength):volume=sideLength**3return volume

2.2 测试函数

我们已经知道如何编写一个函数了,但是,当我们需要调用这个函数的时候,我们就需要考虑地更多。
为了测试这个函数,我们的程序应该包括:

  1. 函数的定义
  2. 调用函数和输出结果的语句
def cubeVolume(sideLength):volume=sideLength**3return volumeresult1=cubeVolume(2)
result2=cubeVolume(10)print(result1)
print(result2)

在这里插入图片描述
调用函数时使用不同的参数,函数会返回不同的值。

2.3 包含函数的程序

编写一个或多个函数的程序时,你需要注意函数的定义和调用语句的顺序。
读取源代码时,Python解释器依次读取每个函数定义和每个语句。函数定义中的语句在函数被调用之前不会被执行。另一方面,函数定义之外的语句再遇到时会立刻执行,所以,在调用之前定义每一个函数是非常重要的。
在定义和使用函数时,把所有的语句都放在函数中并且指定一个函数作为入口点,这是一个非常好的编程习惯。

2.4 注释风格

我们提供一种风格的注释供读者参考:

## Computes the volume of a cube
# @param sideLength the length of a side of the cube
# @return the volume of the cube
#

注释的每一行以“#”开始,使用两个“#”开始的第一行描述函数的目的,每个“@param字句描述一个形参变量”,“@return”字句描述返回值。
这种风格的注释是从Java语言借鉴而来,得到了大量文档工具的支持。

3. 参数的传递

在这一部分,我们来近距离了解一下何为参数。当一个函数被调用时,用来接收函数实参的变量被创建,这些变量称为形参变量,也有的叫形式参数,调用函数时提供给函数的这些值是本次调用的实参,或者叫做实际参数。每个形参变量使用对应的实参进行初始化。
这提示我们:
尽量不要在函数体中修改形参变量,这可能会造成意想不到的错误。
在Python中,一个函数永远不能修改作为实参传递过来的变量的内容。

4. 返回值

我们使用return来指定函数的结果,处理return语句时,函数立刻退出。一些程序员不喜欢一个函数中使用多个return,可以把函数的结果保留在一个变量中,然后最后返回。

5. 没有返回值的函数

有时候,我们会需要执行一系列不产生值的指令,如果那个指令会出现多次,我们会考虑把它封装为一个函数。
实际上,这种函数返回一个特殊值,None,但是我们不能对这个值做任何事情。

6. 变量作用域

一个变量的作用域是指能够访问他的代码范围,例如,函数形参变量的作用域是整个函数。
在函数中定义的变量叫做局部变量,如果局部变量是在一个代码块中定义的,那么它从定义的位置开始到所在函数结束的代码中都是可以访问的。
python也支持全局变量:函数之外定义的变量。
全局变量对于之后定义的所有函数都是可见的,任何想修改全局变量的函数都必须包含一个global声明。

7. 递归函数

递归计算通过使用同样对问题但输入更简单的解决方案来解决问题,为了让递归能够结束,必须有最简单的输出特例。
让我们用递归来实现打印一个三角形:

def main():printTriangle(4)def printTriangle(sideLength):if sideLength<1:returnprintTriangle(sideLength-1)print("[]"*sideLength)main()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/264143.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计springboot+ssm停车场车位预约系统java

管理员不可以注册账号 停车位包括车位所在楼层、车位编号、车位类型(全时间开放/高峰期开放)、预定状态等 用户预约时要求支付预约时间段的停车费用 违规行为&#xff1a;1.停车超过预约时间段 2.预约未使用 于系统的基本要求 &#xff08;1&#xff09;功能要求&am…

时序数据库选型TimescaleDB

最近要做一个数字车间的物联网项目&#xff0c;数据存储成了首先要解决的问题&#xff0c;整个车间一共104台数控机床&#xff0c;1s钟采集1次数据&#xff0c;360024365*1043,279,744,000 &#xff0c;一年要产生32亿条记录&#xff0c;这个数据量用常见的关系型数据库肯定是不…

JavaScript基础知识整理(最全知识点, 精简版,0基础版)

文章目录 一、输入和输出内容 1.1 输出 1.1.1 在浏览器的控制台输出打印 1.1.2 直接在浏览器的页面上输出内容 1.1.3 页面弹出警告对话框 1.2 输入 二、变量 2.1 变量是什么 2.2 变量的声明和赋值 2.3 变量的命名规范和规范 三、变量扩展&#xff08;数组&#xff09; 3.1 数组…

实现跨VLAN通信、以及RIP路由协议的配置

一、如下图片&#xff1a; 1. 按照拓扑图所示&#xff0c;将8台计算机分别配置到相应的VLAN中。&#xff08;20分&#xff09; 2. 配置实现同一VLAN中的计算机可以通信。&#xff08;22分&#xff09; 3. 配置实现PC1,PC2,PC3,PC4可以互相通信&#xff0c;PC5,PC6,PC7,PC8可以互…

利用Microsoft Visual Studio Installer Projects打包安装包

利用Microsoft Visual Studio Installer Projects打包安装包 具体步骤步骤1&#xff1a;安装扩展步骤2&#xff1a;创建 Setup 项目步骤3&#xff1a;设置属性步骤4&#xff1a;添加输出步骤5&#xff1a;添加文件步骤6&#xff1a;添加桌面快捷方式步骤7&#xff1a;添加菜单快…

fl studio 21破解版注册机下载 水果音乐编曲软件 FL Studio v21.

FL studio21中文别名水果编曲软件&#xff0c;是一款全能的音乐制作软件&#xff0c;包括编曲、录音、剪辑和混音等诸多功能&#xff0c;让你的电脑编程一个全能的录音室&#xff0c;它为您提供了一个集成的开发环境&#xff0c;使用起来非常简单有效&#xff0c;您的工作会变得…

公式识别任务各个链条全部打通

目录 引言公式识别任务是什么&#xff1f;公式识别任务解决方案初探使用建议写在最后 引言 随着LaTeX-OCR模型转换问题的解决&#xff0c;公式识别任务中各个链条已经全部打通。小伙伴们可以放开膀子干了。 解决业界问题的方案&#xff0c;并不是单独训练一个模型就完事了&am…

接触刚性环境任务下的机器人力控(阻抗)性能测试

内涵 接触刚性环境任务下的机器人力控&#xff08;阻抗&#xff09;性能测试旨在评估机器人在与刚性物体交互时的性能表现。这种测试通过调整机器人的控制参数&#xff0c;如期望刚度和期望阻尼等&#xff0c;并分析记录的数据&#xff0c;旨在确保机器人能够在执行任务时保持…

Redis 持久化 —— 超详细操作演示!

四、Redis 持久化 四、Redis 持久化4.1 持久化基本原理4.2 RDB持久化4.3 AOF持久化4.4 RDB与AOF对比4.5 持久化技术转型 五、Redis 主从集群六、Redis 分布式系统七、Redis 缓存八、Lua脚本详解九、分布式锁 数据库系列文章&#xff1a; 关系型数据库: MySQL —— 基础语法大全…

【实战教程】PHP与七牛云的完美对接,你值得拥有!

前言&#xff1a; 随着互联网的迅速发展&#xff0c;越来越多的网站和应用程序需要处理大量的图片、视频和其他文件。为了有效地存储和管理这些文件&#xff0c;并提供快速的内容分发服务&#xff0c;开发者们常常依赖于云存储和CDN服务提供商。 七牛云是一家领先的云存储和C…

Linux实用操作

一、各类小技巧&#xff08;快捷键&#xff09; 1.1 ctrl c 强制停止 Linux某些程序的运行&#xff0c;如果想要强制停止它&#xff0c;可以使用快捷键ctrl c 命令输入错误&#xff0c;也可以通过快捷键ctrl c&#xff0c;退出当前输入&#xff0c;重新输入 1.2 ctrl d…

MyBatis 四大核心组件之 ParameterHandler 源码解析

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…