python中的函数(全)

article/2025/8/17 15:41:32

函数的定义

概述:将一段经常使用的函数封装起来,减少重复代码,一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能

于python中,定义函数时要用到def

语法结构:

def 函数名称(参数):

     函数体

     return 返回值

函数在有返回值的情况下会根据实际情况进行返回,如果函数没有返回值则返回None

  1. 在定义函数时,如果暂时还没想法可以用pass进行跳过
  2. 函数可以返回多个值,即return后可以跟多个参数,但函数本身返回只有一个值,其值为元组
  3. 函数名称是指向函数对象的引用,当把一个函数名称赋值给一个变量就是给它起了一个别名

函数的分类

根据有无参数分类:

  • 有参函数
  • 无参函数

根据有无返回值分类:

  • 有返回值函数
  • 无返回值函数

根据定义者分类:

  • 系统自定义函数
  • 第三方函数

全局变量和局部变量

全局变量:定义在py文件中的变量

特点:在代码运行过程中始终有效

局部变量:定义在函数中的变量

特点:函数外部无法访问函数内的变量即局部变量

函数内部可以访问全局变量,但不能修改全局变量,如果需要在函数内部修改全局变量,则要用到global关键字,一般不建议使用

值传递与引用传递

值传递:值传递时,当函数的形参发生变化不会影响实参的值

de794be732654f63a3ba0490a3f5a9dd.jpg

 cad4735d4bd1453bb03415006237c49e.jpg

引用传递:引用传递时,当函数的形参发生变化会影响实参的值

f6948127e1234db0b7d798411fbd89fa.jpg

 2596d04e733a478db7a4d5c1b02cbda9.jpg

其中的a,b都代表的是内存地址,代表的是函数本身,而a(),b()代表的是函数的返回值,当没有返回值时,则返回None

值传递适合于不可变类型的实参(字符串、数字、元组),引用传递适合于可变类型的实参(列表、字典)

在弱数据语言中,函数是可以作为参数传递到另一个函数中

函数的递归

在python中函数可以调用其他函数,而函数递归就是函数自己本身调用自己

函数递归必须要有终止条件,如果没有终止条件,函数就会陷入死循环,python中会报错

7a28b309df9a4a989f34e7709d061901.jpg

0144304c7eef4bf6bd115b7470833dcb.jpg

栈溢出问题:递归调用层次过多,递归函数在运行时会进行压栈操作,当压栈次数过多时,会导致堆栈溢出

解决方法:尾递归优化

尾递归:函数自己调节自己,要有终止条件,return语句中不能包含表达式

2e43dec8a32949f4be0f9f422e2ed16b.jpg

4cedd74753a6497eaf1a43c5eb6211a6.jpg

 递归优缺点:

  • 逻辑简单清晰
  • 过深的递归会造成栈溢出问题

python解释器并没有对尾递归优化,所以在python中任何的递归都会造成栈溢出问题

匿名函数

概念:没有名称的函数,使用lambda关键字来定义

语法结构:lambda 参数 :函数体

由于lambda返回的是函数对象,因此我们需要用一个变量去接收

6814779b7a764b9389a96793f8147a31.jpg

7f40e349f5e74718a9ba5c0e220e4694.jpg

匿名函数可以无参数、一个参数或多个参数,可以作为一个参数进行传递,也可以作函数的返回值

偏函数

在python中,调用函数时我们想要其中的一个值设置为一个固定值,此时我们就需要用到偏函数

python中的functools模块为我们提供了许多功能,其中一个便是partial

当我们只引入偏函数时需输入:

from functools into partial

其中int()将字符型转换为整型,默认为十进制

其中int()提供了baes参数,可以调节转换进制

当我们需要大量转换2进制时,每次传入int(x,base=2)过于麻烦,此时我们会定义一个函数,传入base默认值=2

from functools import partial
def int2(x,base = 2):return int(x,base)
print(int2("1000"))

8

全局函数

注意:round() 四舍五入,但是要注意在python中奇数上是标准的四舍五入,在偶数上是以5为分界线 


http://chatgpt.dhexx.cn/article/l4o1SdvQ.shtml

相关文章

linux 图形设计软件,Ubuntu下使用Blender 3D图形专业设计工具

如果你正在为你的Ubuntu Linux操作系统寻找免费而又够酷够炫的图形设计软件,你就来对地方了!这一次,我们将为你介绍应用广泛而且免费的3D图形设计软件Blender 。 Blender是一个自由、开源的3D模型创作软件,不仅适用于Linux平台&am…

软件工程技术--第五章 详细设计

第五章 详细设计 5.1详细设计的任务与原则 详细设计(又称为过程设计或模块设计),是编码的前导。 详细设计的根本目标是: 确定应该怎样具体地实现所要求的系统。经过这个阶段的设计工作,应该得出对目标系统的精确描…

1 画图软件设计概述

本人这段时间完成了一个小的绘图软件的设计;主要的功能包括: 1、文件操作(打开、关闭、保存、打印、等) 2、编辑功能 自由画笔,画点、直线、矩形、等 橡皮擦 撤销、恢复 3、查看功能,图片的放大、缩小…

基于Java实现的绘图软件工具设计

基于Java实现的绘图软件工具设计 演示视频 基于Java设计的绘图工具 01. 题目要求 做一个简单的绘图工具,以CAD的方式操作,能放置直线、矩形、圆和文字,能选中图形,修改参数,如颜色等,能拖动图形和调整大小…

linux画板软件下载,Drawing画图软件

Drawing Linux(简单画图软件)让Linux用户有像win画图工具一样的体验,Linux下一款简单的绘图程序,类似Windows自带的画图,支持PNG,JPEG和bmp文件! 软件介绍 该应用程序是一个基本的图像编辑器,类似于Microso…

【软考-软件设计师】(下午题).

【软考-软件设计师】(下午题). 一,数据流图 二,数据库 三,UNL 四,算法题 ,c语言 五,c / java ,程序填空 数据流图 数据流图基本概念 数据流图:没有联系() …

基于JavaSwing开发画图软件 课程设计 小作业 大作业源码

基于JavaSwing开发画图软件(大作业/课程设计) 开发环境: Windows操作系统 开发工具:MyEclipse/eclipse/ideaJdk 运行效果图: 基于JavaSwing开发画图软件(大作业/课程设计) 开发环境: Windows操作系统 开…

2 画图软件 界面设计

打开Qt creator新建项目 (1)选择Qt控件项目–> Qt Gui应用(为了适合新手我尽量附图) (2)点击确定后出现项目名称和创建路径大家自己选择喽。我起的名称是pen 然后一直点击下一步就好了我们双击界面…

画图工具的认识及应用计算机,认知画图软件教学设计

认知画图软件教学设计 引导语:教学设计有利于教师主导作用的发挥,有利于按教学目标的要求来组织教学。以下是百分网小编整理的两篇不同的认知画图软件的教学设计,以供参考学习,欢迎阅读! 设计一 教学目的与要求 1、学会进入与正常…

计算机画图软件教学教案,画图软件教学设计

画图软件教学设计 学会用作图软件作图很重要!下面是百分网小编收集整理的画图软件教学设计,希望可以帮助到你! [教学目标] (1)学会进入与正常退出Windows 98的“画图”窗口。 (2)认识Windows 98“画图”窗口的组成。 (3)初步认识绘图工具箱。 [课时安排]1课时。 [教…

盘点年度最佳10大顶级绘图软件,满足你99%的图表需求,赶紧收藏

有效的沟通,从来都不是字数与数据的堆砌,有时一张图表的价值远高于成千的文字描述,将复杂的信息讲明白,便于浏览,让人一目了然就是信息视觉化的最佳效果。 老李我刚开始工作的时候,习惯什么都直接放上数据&…

dind(docker in docker)镜像-使用Docker学习Docker

文章目录 使用Docker学习Docker一、搭建演示环境二、关联基础docker image 文件系统什么是image layerDockerfile VOLUME(数据卷) 指令Volume命令的使用 什么是container-diff使用 三、演示时间探索 docker create 命令探索 docker start 命令探索 docke…

Docker学习1 - Docker

Docker 在部署中的重要性 直接把程序安装或部署在Linux操作系统上面,很容易引发资源冲突程序卸载不干净,导致无法安装或部署新程序每次部署之前要安装很多软件,修改复杂的配置文件无法让服务器硬件资源实现多租户服务增大了在Linux系统上部署…

Docker学习记录-01

Docker 的基本组成 镜像(image): 好比一个模板,tomcat -> run -> tomcat01 (container) 镜像可以创建多个容器 容器(container): 容器可以启动,停止,删除,基本命令 容器就是一个简易的Linux系统 仓库(repository): 存…

docker学习之Ubuntu系统部署docker

目录 安装环境: 支持安装docker的Ubuntu操作系统版本 卸载旧版本的docker 安装docker所需要的依赖包 添加Docker的官方GPG密钥: 设置docker的镜像仓库 安装docker引擎 测试docker 卸载Docke ​​​​安装完毕。 安装环境: Linux系…

Docker学习2

文章目录 Docker学习Docker镜像是什么特点Docker镜像commit操作补充 Docker容器数据卷是什么能干嘛数据卷容器内添加 数据卷容器 DockerFile解析是什么DockerFile构建过程解析基础知识Docker执行DockerFile的大致流程 DockerFile体系结构(保留字指令)Doc…

Docker学习自我总结(一)

以下内容皆参考至狂神说docker学习视频 一、初识dockerfile ​ docker镜像创建时需要使用dockerfile,dockerfile相当于一个命令脚本,通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层&…

Docker 学习笔记

Docker 学习笔记 Docker 安装CentOS 安装 DockerUbuntu 安装 Docker Docker 常用命令 Docker 实操记录Docker 安装mysqlDocker 部署 jupyter notebook Docker 安装 CentOS 安装 Docker 以下是docker官网的安装教程,我只是将命令都提取出来 按下列顺序逐步输入即可…

docker 学习

centos7安装docker 步骤 1、Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。 社区版按照stable和edge两种方式发…

docker学习1

1.docker常用管理命令 格式 docker image 【】 ls 列出镜像 bulid 构建镜像利用dockerfile history 查看 inspect 显示一个或多个镜像的详细信息 pull 从镜像仓库拉取镜像 rm 移除一个或多个镜像 push 推送一个镜像到镜像仓库 prune 移除没有被…