IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> python之旅第十一站(函数) -> 正文阅读

[开发工具]python之旅第十一站(函数)

第十一章:函数(python version 3.7.2)

函数的概念

  1. 函数是指一段可以直接被另一段程序或代码引用的程序或代码,也叫做子程序,方法.
  2. 现阶段可以理解成函数是带名字的代码块.
  3. 之前用过的input() ,print(), range(), len(), id() 等等都是函数,这些都是 python的内置函数,它们是由有经验的程序员提前定义好的,可以直接调用使用.
  4. 控制结构的条件之后也是代码块,只不过它们没有单独指定名字,没法直接使用它们.

函数的作用

  1. python内置函数虽然很丰富但并不能满足我们的个性化功能需求,这时就需要我们自己创建函数.
  2. 可以将功能复杂的程序进行细化后交由多人开发,这样有利于团队分工,缩短开发周期.
  3. 通过功能细化,可以有效缩减代码的长度,代码复用得以体现,当再次开发类似功能的产品时,只要稍作修改或直接引用就可以重复使用.
  4. 程序可读性得到提高,代码调试和后期维护难度降低.

定义函数

python定义函数的语法:

def 函数名([参数1, 参数2, ..., 参数n]):
????????'''函数文档注释'''
????????函数体

注意以下几点:

  • 函数定义以 def 关键词开头,后面接上函数名称圆括号 ().
  • 传入参数须放在圆括号之内,不同的参数用逗号隔开,即使一个参数也没有,这对圆括号也必须保留.
  • 参数是变量,会在函数体中用到它,目的在于提高函数的灵活性和可复用性,定义函数时的参数是形参.
  • 函数的第一行语句可以选择性地使用注释文字,用于存放函数功能和使用说明.
  • 函数体是以冒号起始的一个缩进统一的代码块,负责函数具体内容的执行.
  • return [表达式]结束函数,选择性地返回一个值给调用方.不带表达式的return相当于返回None.
  • 若有多个返回值时,则返回值之间必须用逗号分隔,调用时要有多个变量来接收返回值.

请添加图片描述

函数创建后并不会执行,必须在程序中调用该函数才会执行.

调用函数

python调用函数的语法.

[变量 = ]函数名称([参数1, 参数2, ..., 参数n])

注意以下几点:

  • 如果函数定义的有形参,那么在调用时必须传参(特殊情况下面说).
  • 如果函数有返回值,可以使用变量来存储返回值.
  • 在函数的返回值对于调用不重要时可以忽略,即不使用变量存储函数返回值.
  • 函数定义时的参数称为形参,函数调用时的参数称为实参.

在这里插入图片描述

函数的返回值

return 关键字 + 表达式 来指定函数返回的结果.

在这里插入图片描述

可以只使用return关键字而不加表达式来纯粹的结束函数,等价于return None.

在这里插入图片描述

没有return语句时,默认 return一个None .

在这里插入图片描述

多个return语句时,运行到第一个return语句即返回,不再执行其它代码.

在这里插入图片描述

如果函数的返回值不那么重要,我们就不需要用变量去存储返回值.

在这里插入图片描述

形参和实参

定义函数的时候写的是形参,调用函数的时候写的是实参.(简单理解:形参就是占位符,等待实参的到来,在使用形参时实际用的是实参的值)

以这段代码为例,来看看传参的过程.

在这里插入图片描述

首先变量x 会在栈内存中记录变量的名称,并在引用中记录堆内存中的地址,假设是10002,这个地址用于找到值100.

在这里插入图片描述

当调用函数increment_one时,形参会在栈内存登记变量名number,引用则是复制传入的实参的引用.当使用number时,一样可以找到值100.

在这里插入图片描述
在这里插入图片描述

在这段代码中,对形参的值进行更改,并不影响实参的值.虽然他们指向同一块内存空间.

在这里插入图片描述

执行到 number += 1的时候会开辟一块新内存,存储 number+1的值

在这里插入图片描述
情况并不总是这样,有些情况就会改变到实参的值.

  1. 列表中实际存储的是元素的地址引用.
  2. 出于对列表性能的考虑,存放的元素地址会放在连续的内存空间中.
  3. 既然是连续的内存,只要知道列表的地址,按照与列表地址的距离给每个元素标上号,这个标号称为偏移量.
  4. 也就是在获取列表内部元素时使用的索引.当找到元素在列表中的引用时,就可以访问到元素实际的值了.

例如:
在这里插入图片描述
当调用函数时,参数data会复制变量list1的引用,如果我们使用data加索引的形式访问或修改元素,实际访问或修改的就是list1的元素.
在这里插入图片描述
当我们使用赋值语句data[i] += 10 的时候,会用当前值加上10并开辟一块新的内存存储这个计算结果,然后赋值操作会让data中对应元素的所在地址变更为这个新地址,此时list1同样指向这个列表,这样看list1中的元素就改变了.
在这里插入图片描述

理解以下规则即可:

  1. 当实参类型是可变类型时,那么函数体修改形参的内容会影响到函数外作为实参的值.
  2. 而当实参类型是不可变类型时,那么函数体修改形参的值不会影响到函数外作为实参的值.
  3. 所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变.
  4. 可变数据类型的值改变,id值不变.
  5. 不可变数据类型的值改变,id值随之改变.

现在只需要知道:

  1. 内置可变类型有:列表,集合,字典.
  2. 内置不可变类型有:数值,字符串,元组,布尔,None类型.

如有错误还望指出

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 19:01:24  更:2021-09-11 19:02:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:38:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码