【零基础高效率学Python】第四天 函数
创始人
2024-05-09 21:39:16
0

目录

一、模块化程序设计

二、定义函数

三、函数调用

四、return语句

五、函数参数

六、函数的递归调用

七、匿名函数

八、open()函数

一、模块化程序设计

(一)基本设计思想:将一个大型程序按照功能分割成若干个小型模块

(二)特点

  • 模块相对独立,功能单一,结构清晰,接口简单

  • 减少程序复杂性

  • 提高元器件的可靠性

  • 缩短软件的开发周期

  • 避免程序开发的重复劳动

二、定义函数

(一)格式

def  函数名(形参列表):
    """函数注释"""
    程序功能段代码
    return  表达式

(二)分析

1、def:定义函数的关键字

2、函数名:函数的名称,区别其它函数的标签,也是函数所在内存的入口地址,是一个常量,要见名知意

3、形参:

  • 作用:函数接收数据的变量空间

  • 原则:调用函数时,形参变量分配空间,调用结束空间释放

  • 设计原则:名称、个数

  • 注意:多个形参之间使用逗号分割

4、函数注释:可选,起到增加函数可读性、理解性,推荐书写

5、函数体:程序段,实现函数的功能

PS:函数代码块以def关键字开头,一个空格之后接上函数标识符与园括号,最后有一个冒号,函数体重第一行一般书写函数注释,最后以return结束,默认返回None

三、函数调用

(一)作用:传递参数,使用函数功能

(二)格式:函数名(实参列表)

(三)调用方式

  • fun(m)  : 调用fun函数,传递参数m
  • n=fun(m) : 调用fun函数,返回值赋值给n
  • s=s*fun(m) : 调用fun函数,返回值参与后续运算
  • print(fun(m))  : 调用fun函数,返回值作为另一个函数的参数出现
  • fun() :调用fun函数,无参,无返回值

四、return语句

(一)作用

表示函数执行到此结束,并且返回return之后的对象,函数若无返回值,则return语句可省略,后台默认返回None

(二)注意

1、但函数执行到return语句,那么之后函数体若还有语句则不会执行,会被忽略掉,直接跳出函数体

2、python中return可以返回任意对象

五、函数参数

(一)位置参数(必需参数、必备参数)

必需按照正确的顺序传递到函数中,实参与形参按位置对齐,个数相同

(二)关键字参数

使用形参的名字来确定输入参数的值,实参不需要与形参按位置完全对齐一致

(三)默认参数

调用函数时,如果没有传入参数,会使用默认参数

注意:

  • 默认值参数必须写在形参列表最后,否则报错

  • 默认值形参尽量指向不可变数据类型的对象

(四)不定长参数(可变参数):传入的参数可以是任意多个

  • *形参 :一个星号,可以接收多个参数存储到元组中
  • **形参:两个星号,以关键字参数形式传入,以字典形式存储
  • 单独的*:对应实参必须以关键字参数形式传递

六、函数的递归调用

(一)作用

  • 一个函数在它的函数体内部调用自身称为递归调用

(二)注意

  • 每一次递归都是通过栈(stack)这种数据结构实现的,每次进入递归时,栈会增加一层,函数返回时栈会减少一层,由于栈的大小不是无限制的所以递归调用次数过多时可能会出现栈溢出,为了防止溢出,递归深度不要超过1000层

  • 递归必须在内部使用条件判断的方法来退出递归,否则会出现循环无休止的执行

  • 递归虽然使用程序变得简洁一些,增加程序可读性,但这是以牺牲存储空间为代价,由于每一次递归都会存储相关的变量和参数,会增加时间开销

七、匿名函数

(一)使用lambda关键字创建匿名函数

  • 匿名:不再使用def关键字这样标准的形式来定义函数

  • lambda只是一个表达式,不是一段代码,函数体一般要比传统的函数要简单

  • 只能在lambda表达式中封装有限的功能及逻辑,也拥有自己的命名空间

(二)格式:lambda 参数 :表达式

(三)注意

  • 匿名函数只能有一个表达式,不同也不能书写return语句,表达式的结果就是返回值

八、open()函数

(一)格式:f=open(filename,mode,encoding)

  • open()函数返回值为一个file对象,可以赋值给一个变量

  • filename:访问的文件名称,一般需要增加路径,本质是一个字符串

  • mode:打开文件的方式

  • encoding:字符编码,一般为UTF-8

(二)文件的打开方式

模式操作说明
r只读默认方式,如果文件不存在会报错
w写入若文件不存在则会新建然后写入,若文件已存在则会清空已有内容在写入
a追加若文件不存在则会新建然后写入,若文件已存在则会追加数据
x新建若文件已存在则报错,若文件不存在则会新建再写入,比w模式安全
b二进制模式以bytes类型操作文件,一般与之前的模式结合使用,如:rb、wb
+读写如:r+ w+ a+

例如:打开一个文件

  • f = open('t1.txt', 'w')
  • f.write('python 是一种非常好用的语言!')
  • f.close()

(三)b模式

  • 二进制模式:一般用于读取图片、视频等文件

  • 注意:读写时是以bytes类型读写的,因此获得是一个bytes对象而不是字符串,读写时需要指定字符编码

(四)+ 模式

  • w+模式:在读写之前会清空文件内容

  • a+模式:永远在文件尾部写入

  • r+模式:读写模式,配合seek()tell()方法可以实现更多操作

(五)文件写入方法:write()

  • 作用:将字符串或bytes类型写入文件中

  • 注意:write()一般都是在内存中执行,并不会立刻写入硬盘,当执行到close()方法后才会将数据写入硬盘,如果需要在内存读写且立刻反应到硬盘上则需要执行f.flush方法

(六)关闭文件对象:close()

  • 当处理完一个文件后,调用f.close()或关闭文件且释放系统资源,文件关闭后,数据会同步到磁盘

都看到这里了,创作不易,大家点个赞再走呗!!!( ˃̶̤́ ꒳ ˂̶̤̀ )

相关内容

热门资讯

Kubernetes集群Nod... Kubernetes集群Node管理一、查看集群信息二、查看节点信息2.1 查看集群节点信息2.2 ...
Python基本函数、传参和流... def 定义函数 for 遍历 while 循环 if else 条件控制 默认值传参数 可变值传参...
九种查找算法-插值查找 插值查找   一、什么是插值查找 (1)插值查找算法类似于二分查找&#x...
Puppeteer之Pyppe... 前言 本文是该专栏的第4篇,结合项目案例让你熟练使用pyppeteer,后面会持续分享Pyppet...
【深度学习笔记】CNN网络各种... FLOPs 这里先注意一下FLOPs的写法,不要弄混了: FLOPS(全大写):是floating...
Linux查看log日志命令总... 目录1,动态实时查看日志1.1 tail -f filename1.2 追踪特定内容日...
Elasticsearch 索... 1、创建\更新索引模板 PUT _template/logging_template {   "in...
语义分割------FCN、d... 一、个人理解 语义分割,其实就是为图片中的每个像素打上相应的标签,即将其所代表的语义具现化,呈现出的...
C++标准模版库中线程的使用 文章目录线程的基本使用最基础的使用方法在创建线程时传参再看看join线程与线程之间的同步 线程是程序...
CMMI之度量与分析(MA) 目的度量与分析(Measurement and Analysis, MA...