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语句可以在执行过程中跳出并返回一个值,若要返回多个值则可以返回一个元组。
在这里插入图片描述

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

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

相关文章

Vulnhub: ColddWorld: Immersion靶机

kali:192.168.111.111 靶机:192.168.111.183 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.183 查看login的源码发现提示:page和文件/var/carls.txt 漏洞利用 wfuzz探测account.php页面发现文件包含&am…

Excel中——日期列后添加星期

需求:在日期列中添加星期几? 第一步:打开需要添加星期的Excel文件,在日期后面添加日期 第二步:选择日期列,点击鼠标右键,在下拉列表中,选择“设置单元格格式” 第三步: 在…

JVM基础篇-StringTable

StringTable 特性 常量池中的字符串仅是符号,第一次用到时才变为对象 利用串池的机制,来避免重复创建字符串对象 字符串变量拼接的原理是 StringBuilder (1.8) 字符串常量拼接的原理是编译期优化 可以使用 intern 方法&#…

【Spring】(一)Spring设计核心思想

文章目录 一、初识 Spring1.1 什么是 Spring1.2 什么是 容器1.3 什么是 IoC 二、对 IoC 的深入理解2.1 传统程序开发方式存在的问题2.2 控制反转式程序的开发2.3 对比总结 三、对 Spring IoC 的理解四、DI 的概念4.1 什么是 DI4.2 DI 与 IoC的关系 一、初识 Spring 1.1 什么是…

Mermaid系列之FlowChart流程图

一.欢迎来到我的酒馆 介绍mermaid下,Flowchat流程图语法。 目录 一.欢迎来到我的酒馆二.什么是mermiad工具三.在vs code中使用mermaid四.基本语法 二.什么是mermiad工具 2.1 mermaid可以让你使用代码来创建图表和可视化效果。mermaid是一款基于javascript语言的图表…

宝塔面板点击SSL闪退打不开怎么解决?

宝塔Linux面板点击SSL证书闪退如何解决?旧版本的宝塔Linux面板确实存在这种情况,如何解决?升级你的宝塔Linux面板即可。新手站长分享宝塔面板SSL闪退的解决方法: 宝塔面板点击SSL证书闪退解决方法 问题:宝塔Linux面板…

谈谈网络安全

目录 1.概念 2.发展现状 3.主要问题 1.概念 网络安全是指保护计算机网络和其中的数据免受未经授权访问、损坏、窃取或破坏的过程和技术。网络安全涉及预防和检测潜在的威胁和漏洞,并采取措施保护网络的机密性、完整性和可用性。 网络安全的概念包括以下几个方面&am…

vue2 todoapp案例(静态)

1.创建三个子组件(TodoHeader、TodoMain、TodoFooter)和两个(index.css、base.css)样式&#xff1b; TodoHeader页面 <template><header class"header"><h1>todos</h1><input id"toggle-all" class"toggle-all" typ…

【力扣】链表题目总结

文章目录 链表基础题型一、单链表翻转、反转、旋转1.反转链表2.反转链表II——反转部分链表3.旋转链表4.K个一组翻转链表5.反转偶数长度组的节点 二、删除单链表中的结点1.删除链表的结点2.删除未排序链表中的重复节点3.删除已排序链表中的重复元素I——重复元素只剩下一个4.删…

【ASP.NET MVC】第一个登录页面(8)

一、准备工作 先从网上&#xff08;站长之家、模板之家&#xff0c;甚至TB&#xff09;下载一个HTML模板&#xff0c;要求一整套的CSS和必要的JS&#xff0c;比如下图&#xff1a; 登录页面的效果是&#xff1a; 首页&#xff1a; 利用这些模板可以减少前台网页的设计——拿来…

vue+element中如何设置单个el-date-picker开始时间和结束时间关联

功能&#xff1a;选了开始时间&#xff0c;则结束时间只能选择开始时间之后的&#xff1b;选了结束时间&#xff0c;则开始时间只能选择结束时间之前的 重点是picker-options属性 图示&#xff1a; 代码展示: // body 内部<el-form-item><el-date-pickerv-model&qu…

Qt+联想电脑管家

1.自定义按钮类 效果&#xff1a; (1)仅当未选中&#xff0c;未悬浮时 (2)其他三种情况&#xff0c;均如图 #ifndef BTN_H #define BTN_H#include <QPushButton> class btn : public QPushButton {Q_OBJECT public:btn(QWidget * parent nullptr);void set_normal_icon(…

02_kafka_基本概念_基础架构

文章目录 常见的消息队列工作模式基本概念kafka 特性Kafka 基本架构topic 分区的 目的/ 好处 日志存储形式消费者&#xff0c;消费方式 逻辑消费组 高性能写入&#xff1a; 顺序写 mmap读取&#xff1a;零拷贝DMA 使用场景 常见的消息队列工作模式 至多一次&#xff1a;消息被…

pytorch实战-图像分类(二)(模型训练及验证)(基于迁移学习(理解+代码))

目录 1.迁移学习概念 2.数据预处理 3.训练模型&#xff08;基于迁移学习&#xff09; 3.1选择网络&#xff0c;这里用resnet 3.2如果用GPU训练&#xff0c;需要加入以下代码 3.3卷积层冻结模块 3.4加载resnet152模 3.5解释initialize_model函数 3.6迁移学习网络搭建 3.…

UE4/5 GAS技能系统入门2 - AttributeSet

在GAS系统中对属性进行修改需要用到GE&#xff08;Gameplay Effect&#xff09;&#xff0c;而这又涉及到AttributeSet这样的概念。 AttributeSet用于描述角色的属性集合&#xff0c;如攻击力、血量、防御力等&#xff0c;与GAS系统整合度较高&#xff0c;本文就来讲一讲Attri…

Consul屏蔽api

consul 没有设置密码 需要屏蔽api&#xff1a;/v1/internal/ui/nodes?dc&token 防止信息泄露 配置config.json {"http_config": {"block_endpoints": ["/v1/internal/ui/nodes"]} }启动consul时使用该配置&#xff1a; consul agent -de…

Java实现Google cloud storage 文件上传,Google oss

storage 控制台位置 创建一个bucket 点进bucket里面&#xff0c;权限配置里&#xff0c;公开访问&#xff0c;在互联网上公开&#xff0c;需要配置角色权限 新增一个访问权限 &#xff0c;账号这里可以模糊搜索&#xff0c; 角色配置 给allUser配置俩角色就可以出现 在互联…

0.CLIP

目录 前言背景缘起/摘要数据集拟解决问题 精读IntroductionModel2.1自然语言监督2.2 创建一个有效的大数据集选择一个有效的预训练方法2.4 选择模型&#xff08;选择Encoder&#xff09;2.5训练小结 实验 复现&#xff08;略&#xff09; 前言 本课程来自深度之眼《多模态》训…

R语言3_安装SeurateData

环境Ubuntu22/20, R4.1 在命令行中键入&#xff0c; apt-get update apt install libcurl4-openssl-dev libssl-dev libxml2-dev libcairo2-dev libgtk-3-dev # libcairo2-dev :: systemfonts # libgtk :: textshaping进入r语言交互环境&#xff0c;键入&#xff0c; instal…

Mac显示隐藏文件夹

1、设置隐藏文件可见 defaults write com.apple.finder AppleShowAllFiles TRUE 2、killall Finder killall Finder