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

news2024/10/7 14:21:51

文章目录

  • 一、函数的基本概念
  • 二、函数的定义和使用
    • 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.coloradmin.cn/o/842197.html

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

相关文章

【Spring Boot】Spring Boot 集成 RocketMQ 实现简单的消息发送和消费

文章目录 前言基本概念消息和主题相关发送普通消息 发送顺序消息RocketMQTemplate的API介绍参考资料: 前言 本文主要有以下内容: 简单消息的发送顺序消息的发送RocketMQTemplate的API介绍 环境搭建: RocketMQ的安装教程:在官网…

JNI之Java实现蓝牙交互

蓝牙概述 蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间,通过蓝牙设备之间的无线通信实现数据传输,实现数据传输&#xf…

golang代码热加载,热更新库air库实践

windows下先生成air.exe文件,然后移动到golang的执行目录: 2.简介 air是一款基于golang开发的实时热加载工具,通过使用该工具,使得开发人员能专注于coding,而不会被编译过程打断。 项目地址: https://github.com/cos…

【工作中问题解决实践 九】Spring中事务传播的问题排查

最近在工作中遇到了两个关于事务操作的问题,顺便就着这两个问题又回顾了一遍Spring的事务相关的操作,想着一次性把这个问题研究明白了,后续使用事务的时候也能踏实点,让事务发挥真实的作用 什么是事务?什么是事务管理…

【探索Linux】—— 强大的命令行工具 P.2(Linux下基本指令)

前言 前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C的一些知识,也相信大家都掌握的不错,今天博主将会新开一个Linux专题,带领大家继续学习有关Linux的内容。今天第一篇文章博主首先带领大家了解一下…

客服型电话呼叫中心系统,助力企业提升客户服务质量

客服型电话呼叫中心系统是企业客户服务的重要工具之一,它通过电话和网络等方式,为客户提供快速、便捷、高效的服务。客服型电话呼叫中心系统具备自动接听来电、自动路由、管理知识库、录音和监控、生成报表分析等多种功能,有利于企业提高客户…

IP提取器对比器

需求: 一个html 页面 ,有两个输入框 第一个输入框输入文本中包含多个ip,输入的ip是不规则的,需要使用正则表达式提取出 输入文本的ip地址 , 然后在第二个输入框中输入内容,并提取出内容的ip ,如…

实时渲染与传统渲染有啥区别?实时渲染器有哪些

您是否曾经玩过 3D 视频游戏,或观看过让您感觉身处真实的建筑环境?如果是,那么您已经体验过实时渲染。和传统的渲染有什么不同吗?在本文中了解有关实时渲染的所有信息。 什么是实时渲染? 为了更容易理解什么是实时渲…

jupyter文档转换成markdown

背景 上一篇文章**《如何优雅地用python生成模拟数据》**我就使用jupyter写的,这个真的是万能的,可以插入markdown格式的内容,也可写代码,关键是像ipython一样,可以分步执行。 我可以这样自由的写我的博客内容&#x…

Docker入门——保姆级

Docker概述 ​ —— Notes from WAX through KuangShen 准确来说,这是一篇学习笔记!!! Docker为什么出现 一款产品:开发—上线 两套环境!应用环境如何铜鼓? 开发 – 运维。避免“在我的电脑…

【Groups】50 Matplotlib Visualizations, Python实现,源码可复现

详情请参考博客: Top 50 matplotlib Visualizations 因编译更新问题,本文将稍作更改,以便能够顺利运行。 1 Dendrogram 树状图根据给定的距离度量将相似的点组合在一起,并根据点的相似性将它们组织成树状的链接。 新建文件Dendrogram.py: …

怎样在pdf上直接修改?看看这几种修改方法

怎样在pdf上直接修改?PDF是一种非常流行的文件格式,它在保持文档格式不变的同时也可以压缩文件大小,便于分享。尽管 PDF 文件很便捷,但是在 PDF 上进行修改却是一件比较困难的事情。幸运的是,有很多工具可以帮助你在 P…

AUTOSAR笔记2:AP主要模块

1 CM CM(Communication Management)组件提供独立于网络和协议的应用间通信服 务,支持如下功能: 服务发现,包括服务注册、服务查找等;应用间通信,支持单向数据收发(Event&#xff0…

STM32入门——定时器

内容为江科大STM32标准库学习记录 TIM简介 TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时&…

TFTP 的使用操作指南(轻松入门版)

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…

springCache-缓存

SpringCache 简介:是一个框架,实现了基于注解的缓存功能,底层可以切换不同的cache的实现,具体是通过CacheManager接口实现 使用springcache,根据实现的缓存技术,如使用的redis,需要导入redis的依赖包 基于map缓存 …

一招让你的Python爬虫事半功倍

在Python爬虫的世界里,你是否也被网站的IP封锁问题困扰过?别担心,我来教你一个简单而又有效的爬虫ip设置方法,让你的爬虫畅行无阻!快来跟我学,让你的Python爬虫事半功倍,轻松搞定IP封锁问题&…

【室内定位】UWB TDOA定位,PDOA定位介绍

当前室内应用场景,最大的难点是没有基础设施,目前应用的场景中,都是基于用户的需求,或采用 UWB 技术,或采用蓝牙技术,并根据不同的室内环境来定制化的定制化的布设定位网络,并借助同技术的UWB定…

[C++项目] Boost文档 站内搜索引擎(4): 搜索的相关接口的实现、线程安全的单例index接口、cppjieba分词库的使用、综合调试...

有关Boost文档搜索引擎的项目的前三篇文章, 已经分别介绍分析了: 项目背景: 🫦[C项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍…文档解析、处理模块parser的实现: 🫦[C项目] Boost文档 站内搜索引擎(2): 文档文本解析模块…

百模大战,谁是赢家?文心3.5稳坐国内第一,综合评分超ChatGPT!

近日,清华大学新闻与传播学院沈阳团队发布《大语言模型综合性能评估报告》(下文简称“报告”),报告显示百度文心一言在三大维度20项指标中综合评分国内第一,超越ChatGPT,其中中文语义理解排名第一&#xff…