Python程序设计基础:函数(一)

文章目录

  • 一、函数的基本概念
  • 二、函数的定义和使用
    • 1、函数的定义与调用
    • 2、函数的参数
    • 3、返回多个值

一、函数的基本概念

在使用Python实现某些复杂的功能的时候,容易遇到一些重复率较高的代码,为了代码能够重复使用并提升代码的整洁度,函数这一方式经常被使用。函数可以用来将复杂的问题分解成若干个子问题,同时一旦为了某个子问题编写函数后,就可以在任意时候调用这个函数来实现特定的子功能。
数学中存在函数的概念,表示由自变量到因变量之间的映射关系,Python中的函数也类似,表示将输入经由一定的变化和处理之后得到预定的输出的过程。
例如在列表排序中使用到的函数sorted(),其语法格式为:

sorted(列表,reverse)

其中函数名为sorted,形参为列表和reverse,当给出具体的列表以及reverse具体的值时,即给出了具体的实参,之后就可以返回列表排序之后的内容。
因此函数还存在两个概念:形参和实参。
形参表示在定义函数时给出的参数形式,实参表示在调用定义好的函数时给出的参数具体值。
Python语言中,函数可以分为四类:

  1. 内置函数,如abs(),sorted()等,编写程序时可以直接使用;
  2. 标准库函数,安装Python时自带的标准库中的函数,如math、random等,需要使用import导入标准库,然后再使用;
  3. 第三方库函数,Python社区提供了许多其他高质量的库,如pandas、numpy等,单独下载安装后使用import导入,然后再使用;
  4. 自定义函数,使用者自己编写的函数。

二、函数的定义和使用

1、函数的定义与调用

定义函数的语法格式如下:

def 函数名([形参列表]):
    函数体

在上述内容中,括号中的形参列表部分可以无参数,一个参数或者多个参数,如果有多个参数,每个参数之间用逗号间隔,[]部分在实际编写时需删去。此外圆括号后的“:”是必须有的,下面的函数体与def之间存在空格缩进。
若定义的函数存在返回值,则在函数体中需增加一行return语句,return语句可以有多个,但是一旦第一条return语句执行则函数立即终止,return语句可以出现在函数体的任何位置。
调用函数的语法格式如下:

函数名([实参列表])

在上述内容中,实参列表是指实际传给函数的参数内容,[]部分在实际编写时需删去,实参列表一般需要和函数中的形参列表一一对应。

注:一般来说,形参变量只能接收实参变量的值,而无法访问实参变量,但当实参变量为列表类型时(可变对象),形参会是对该对象的引用,在函数中可以直接修改它里面元素的值。

若函数中存在返回值,则可以在表达式中继续使用,若无,则可以单独作为表达式语句使用。
在这里插入图片描述
在上述实例中,函数名为max,形参列表中的参数分别为x1、x2、x3,在函数体中主要进行传入参数的比较,最后使用return语句返回最大值,下方分别使用input函数传入三个键盘输入的数,然后将这三个数作为实参内容传入函数max,之后将返回值赋给变量y,输入y得到相应的最大值。

2、函数的参数

函数中的参数设置决定着函数运行后的结果,参数的设置方式主要有四种,默认值参数、位置参数、名称传递参数以及可变参数。

默认值参数
在声明参数时,如果希望函数的一些参数是可选的,则可以在声明函数时为这些参数指定默认值,调用函数时,若没有传入对应的实参值,则函数使用默认的的参数值,默认值参数需要写在形参列表的最右边。
在这里插入图片描述
在上述实例中,x3在调用函数时未传入对应的参数值,则函数使用默认的参数值1。

位置参数
位置参数主要是指在调用函数时,默认按照位置的顺序传递。
在这里插入图片描述
在上述实例中,默认按照位置的顺序将实参传递给形参,即x1、x2、x3分别对应着int(num1)、int(num2)、int(num3)。

名称传递参数
名称传递参数主要是指在调用函数时,通过形参的名称传入指定的参数,也被称为关键字参数。
在这里插入图片描述
可变参数
在定义函数的时候,使用带一个星号的参数,如*param,则表示传递可变数量的参数,从该参数传入的所有参数将被合并为一个元组。
在这里插入图片描述
在上述实例中,存在两次调用函数的情形。第1次调用函数count()时,传递的各科成绩有4门;第2次调用函数count()时,传递的各科成绩有6门。每次传递给函数的“多余”实参都被作为形参的元组fraction收纳,并由此计算出相应的总分和平均分。
此外若使用带两个星号的参数,如**param,则表示传递可变数量的参数,从该参数传入的所有参数将被合并为一个字典。
在这里插入图片描述

在上述实例中,编写了一个名为stu的函数,它里面有两个参数,一个是位置参数term,另一个是参数**pern,它是一个用来接收传递过来的字典的参数。

该函数的功能是,先将传入的实参分别传入形参term和**pern,其中后者里的元素会自动保存为字典,然后根据键进行升序排列并输出,最后从pern里挑选出不及格者,组成一个新的字典fail,同时将不及格人数及名单输出。

3、返回多个值

在函数体中使用return语句可以在执行过程中跳出并返回一个值,若要返回多个值则可以返回一个元组。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

aardio + customPlus 显示图片演示

看效果: 上代码: import win.ui; /*DSG{{*/ var winform win.form(text"aardio customPlus 显示图片演示 by 光庆";right927;bottom607) winform.add( button{cls"button";text"下一页";left664;top536;right794;bott…

支持多用户协同的思维导图TeamMapper

什么是 TeamMapper ? TeamMapper 是基于 Mindmapp 开发的用于绘制思维导图的 Web 应用程序。它使得思维导图变得简单,你可以托管并创建您自己的思维导图。与您的团队分享您的思维导图会议并在思维导图上进行协作。 软件特点: 创建&#xff1…

详细教程:如何搭建废品回收小程序

废品回收是一项环保举措,通过回收和再利用废弃物品,可以减少资源浪费和环境污染。近年来,随着智能手机的普及,小程序成为了推广和运营的重要工具。本文将详细介绍如何搭建一个废品回收小程序。 1. 进入乔拓云网后台 首先&#xf…

微服务架构基础--第3章Spring Boot核心功能讲解

第3章Spring Boot核心功能讲解 一.预习笔记 1.使用maven创建SpringBoot项目 1-1:创建一个maven项目 1-2:在pom文件中导入依赖 1-3:编写启动类(注意启动类的位置) 1-4:编写测试类 1-5:运行SpringBoot启动类 2.了解p…

成功解决Android设备adb连接后显示device unauthorized

一、提出问题 在电脑通过USB连接新的Android设备,想要通过adb来进行一些操作时,却发现命令提示符上在输入下面命令后显示设备未授权的信息也就是"unauthorized" adb devices二、不可行的解决方案 有人提出的解决方案是打开Android设备的开发…

分布式协议与算法——CAP理论、ACID理论、BASE理论

CAP理论 CAP理论,对分布式系统的特性做了高度抽象,比如抽象成了一致性、可用性和分区容错性,并对特性间的冲突(也就是CAP不可能三角)做了总结。 CAP三指标 CAP理论对分布式系统的特性做了高度抽象,形成了…

解决layui框架的radio属性不显示失效问题

废话不多说 直接开干&#xff01; 1.问题描述使用layui时 2.不显示问题 纠结半天 忘记插件要刷新 步骤 3、解决方法就是&#xff1a;使用form.render() 刷新请求的界面 <script type"text/javascript">//刷新界面 所有元素layui.use(form,function(){var form …

SQL SERVER ip地址改别名

SQL server在使用链接服务器时必须使用别名&#xff0c;使用ip地址就会把192.188.0.2这种点也解析出来 解决方案&#xff1a; 1、物理机ip 192.168.0.66 虚拟机ip 192.168.0.115 2、在虚拟机上找到 C:\Windows\System32\drivers\etc 下的 &#xff08;我选中的文件&a…

网络安全渗透测试之靶场训练

NWES: 7月26号武汉地震检测中心遭受境外具有政府背景的黑客组织和不法分子的网络攻击。 目前网络攻击主要来自以下几种方式: DDOS&#xff1a;分布式拒绝服务攻击。通过制造大量无用的请求向目标服务器发起访问&#xff0c;使其因短时间内无法处理大量请求而陷入瘫痪。主要针对…

Elasticsearch 商业启示

上月的“红帽事件”&#xff0c;说明开源软件的“客服模式”行不通&#xff0c;那么&#xff0c;开源软件如何赚钱呢&#xff1f;既不能卖软件&#xff0c;又不能卖支持服务&#xff0c;该怎么办呢&#xff1f;我现在的看法是&#xff0c;只剩下一种模式是可行的&#xff0c;开…

【多音音频测试信号】具有指定采样率和样本数的多音信号,生成多音信号的相位降低波峰因数研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Jtti:Ubuntu静态IP地址怎么配置

在 Ubuntu 中配置静态 IP 地址需要编辑网络配置文件。以下是在 Ubuntu 20.04 版本中配置静态 IP 地址的步骤&#xff1a; 打开终端&#xff0c;以管理员身份登录或使用 sudo 权限。 使用以下命令打开网络配置文件进行编辑&#xff1a; sudo nano /etc/netplan/00-installer-…

webpack基础知识五:说说Loader和Plugin的区别?编写Loader,Plugin的思路?

一、区别 前面两节我们有提到Loader与Plugin对应的概念&#xff0c;先来回顾下 loader 是文件加载器&#xff0c;能够加载资源文件&#xff0c;并对这些文件进行一些处理&#xff0c;诸如编译、压缩等&#xff0c;最终一起打包到指定的文件中plugin 赋予了 webpack 各种灵活的…

【计算机网络】网络层协议 -- ICMP协议

文章目录 1. ICMP协议简介2. ICMP协议格式3. ping命令4. ping命令与端口号没有关系&#xff01;&#xff01;&#xff01;5. traceroute命令 1. ICMP协议简介 ICMP&#xff08;Internet Control Message Protocol&#xff0c;控制报文协议&#xff09;&#xff0c;用于在IP主机…

实时通信应用的开发:Vue.js、Spring Boot 和 WebSocket 整合实践

目录 1. 什么是webSocket 2. webSocket可以用来做什么? 3. webSocket协议 4. 服务器端 5. 客户端 6. 测试通讯 1. 什么是webSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务…

Django Rest_Framework(三)

文章目录 1. 认证Authentication2. 权限Permissions使用提供的权限举例自定义权限 3. 限流Throttling基本使用可选限流类 4. 过滤Filtering5. 排序Ordering6. 分页Pagination可选分页器 7. 异常处理 ExceptionsREST framework定义的异常 8. 自动生成接口文档coreapi安装依赖设置…

[CKA]考试之查看Pod日志

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Task 监控名为foobar的Pod的日志&#xff0c;并过滤出具有unable-to-access-websi…

.NET SqlSuger 简单介绍,超快开发数据库

文章目录 前言SqlSugar使用我的环境Nuget 安装新建连接串DB First 和 Code First使用增删改查 总结 前言 我之前介绍过EFCore 怎么使用Nuget快速创建数据库&#xff0c;我之后发现SqlSugar更快。这里简单再说一下SqlSugar如何使用 .NET Core 数据库DB First自动生成&#xff0…

kafka权威指南(阅读摘录)

零复制 Kafka 使用零复制技术向客户端发送消息——也就是说&#xff0c;Kafka 直接把消息从文件&#xff08;或者更确切地说是 Linux 文件系统缓存&#xff09;里发送到网络通道&#xff0c;而不需要经过任何中间缓冲区。这是 Kafka 与其他大部分数据库系统不一样的地方&#…

【js小游戏案例】js迷宫二:当迷宫遇上算法

序幕&#xff1a; 在上次用js开发固定迷宫时就想&#xff0c;这样的死迷宫不能称之为迷宫&#xff0c;如何让这个迷宫动起来呢&#xff1f; 让浏览器每次刷新时&#xff0c;通过计算重新生成一个迷宫&#xff0c;但这样有个问题&#xff0c;每次动态生成的迷宫必须保证它是通…