Python 基础(十三):函数

news2024/11/26 11:43:07

在这里插入图片描述

❤️ 博客主页:水滴技术
🌸 订阅专栏:Python 入门核心技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬

文章目录

  • 一、创建函数
  • 二、调用函数
  • 三、向函数传递参数
    • 3.1、形参和实参
    • 3.2、多参函数
    • 3.3、参数的顺序
    • 3.4、关键字实参
    • 3.5、参数的默认值
    • 3.6、不定长参数
  • 四、有返回值的函数
  • 系列文章
  • 热门专栏


大家好,我是水滴~~

本篇主要讲术 Python 中的函数,主要内容有:函数的定义、创建函数、调用函数、向函数传递参数、参数返回值等。

简单来讲,函数(function)就是用来完成某个特定功能的代码块。使用函数,可以提高代码的模块化、复用性。在 Python 中有很多内置的函数,比如我们使用最多的 print() 函数。

一、创建函数

函数使用 def 关键字来定义,然后是函数名,后面紧跟着是一对括号() 和一个冒号:,遇到冒号我们就知道,它的下面会是一个代码块,该代码块为函数体。当函数被调用后,会从函数体的第一行,执行到最后一行。

例如:下面例子中,创建了一个名为 say_hello 的函数,该函数会往屏幕上打印:“你好” “我是水滴”。

# 定义是个名为 say_hello 的函数
def say_hello():
  print("你好")
  print("我是水滴")

二、调用函数

调用函数是指支行函数里的代码。如果我们定义了一个函数,但是从来不调用它,这些代码是永远也不会运行的。调用函数时,输入函数名字,然后跟上一对括号()即可。

下面例子中,是调用刚定义的 say_hello 函数。

# 调用 say_hello 函数
say_hello()

输出结果:

你好
我是水滴

我们也可以重复的调用函数,那么函数中的代码也会执行相同的次数。

# 调用三次 say_hello 函数
say_hello()
say_hello()
say_hello()

输出结果:

你好
我是水滴
你好
我是水滴
你好
我是水滴

三、向函数传递参数

函数名后面的括号 () 并不是没有用处,它可以用来传递参数。

下面例子中,函数 say_hello 会接收一个 name 参数。

# 定义是个名为 say_hello 的函数,并传入 name 参数
def say_hello(name):
  print("你好," + name)
  print("我是水滴")

那么,调用函数时,需要传入参数。

say_hello("小明")

输出结果:

你好,小明
我是水滴

我们向函数传入什么值,函数中就会使用什么值。这样,我们就可以根据需要,传入不同的参数了。

say_hello("小明")
say_hello("小美")
say_hello("小帅")

输出结果:

你好,小明
我是水滴
你好,小美
我是水滴
你好,小帅
我是水滴

3.1、形参和实参

在函数传参时有两个术语需要我们了解一下,即行参和实参。

形参是在声明函数时定义的,用于接收参数,并且该参数在整个函数体内可以使用。上例中的 name 为行参。
实参是在调用函数时传递的参数,可以是常量、变量、表达式、对象等。上列中的"小明""小美""小帅" 都是实参。

3.2、多参函数

上面的例子中,我们只传了一个参数。实际上函数是可以定义多个参数的。

下面函数中定义了两个形参:

# 定义是个名为 say_hello 的函数,并定义两个参数
def say_hello(name, mood):
  print("你好," + name)
  print("我是水滴,见到你很" + mood)

函数调用时传递两个实参。

say_hello("小明", "开心")

输出结果:

你好,小明
我是水滴,见到你很开心

虽然函数可以定义很多个,但为了规范起见,当参数超过5、6个后,可以考虑使用列表或对象。

3.3、参数的顺序

在函数调用时,一定要注意实参的顺序,如果与形参的顺序不一致,将会有出乎意料的问题。这种要求实参的顺序与形参的顺序相同的参数传递,叫做位置实参

下面是一个顺序错误的示例:

say_hello("伤心", "小明")

输出结果:

你好,伤心
我是水滴,见到你很小明

3.4、关键字实参

关键字实参是传递参数时可以指定参数名称,这样可以将参数名称和值关联起来。在传递参数时不用考虑参数的顺序,并且清楚的指出了各个参数的用途。

下面是关键字实参调用的例子:

say_hello(mood="伤心", name="小明")

输出结果:

你好,小明
我是水滴,见到你很伤心

3.5、参数的默认值

在编写函数时,可以给每个形参指定默认值。这样在调用函数时,如果未指定实参,那么将使用形参的默认值。

下面例子中,为 mood 形参指定了默认值:

# 定义是个名为 say_hello 的函数,并定义两个参数
def say_hello(name, mood="开心"):
  print("你好," + name)
  print("我是水滴,见到你很" + mood)

函数调用:

say_hello("小明")

输出结果:

你好,小明
我是水滴,见到你很开心

3.6、不定长参数

函数可以传递不定长的参数,在参数前加星号 * 即可。

定义一个含有不定长参数的函数:

def say_hello(*names):
  for name in names:
    print("你好," + name + ",我是水滴")

调用函数,传递多个参数:

say_hello("小明", "小美", "小帅")

输出结果:

你好,小明,我是水滴
你好,小美,我是水滴
你好,小帅,我是水滴

四、有返回值的函数

函数不仅可以完成某个特定功能,还可以返回一个或一组值,函数返回的值称为返回值。在函数体中,使用 return 语句表示返回值。

带返回值的函数:

# 定义是个名为 say_hello 的函数,并定义两个参数
def say_hello(name, mood="开心"):
  print("你好," + name)
  print("我是水滴,见到你很" + mood)
  return "水滴"

调用函数,并输出返回结果:

result = say_hello("小明")
print("返回值:" + result)

输出结果:

你好,小明
我是水滴,见到你很开心
返回值:水滴

系列文章

🔥 Python 基础(一):初识 Python
🔥 Python 基础(二):搭建 Python 开发环境
🔥 Python 基础(三):Python 集成开发工具 IDLE
🔥 Python 基础(四):基础语法
🔥 Python 基础(五):变量与常量
🔥 Python 基础(六):基本数据类型
🔥 Python 基础(七):常用运算符
🔥 Python 基础(八):流程控制语句
🔥 Python 基础(九):列表
🔥 Python 基础(十):元组
🔥 Python 基础(十一):集合
🔥 Python 基础(十二):字典

热门专栏

👍 《Python入门核心技术》
👍 《IDEA 教程:从入门到精通》
👍 《Java 教程:从入门到精通》
👍 《MySQL 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

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

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

相关文章

【C生万物】 指针和数组笔试题汇总 (上)

欢迎来到 Claffic 的博客 💞💞💞 👉 专栏:《C生万物 | 先来学C》👈 前言: 在学习完初级和进级的指针之后,为了检验掌握程度,这里出一期指…

MYSQL 之 Redis配置与优化

(一)关系数据库和非关系数据库 关系库数据库Oracle ,mysql ,sql,server,microsoft Access ,postgresql 以上数据库必须先建表在设计表的结构,然后存储的时侯按表的结构去存&#x…

微信小程序入门01-工具的下载安装及模板的安装

小程序开发现在已经有多种模式了,有使用uniapp开发的,使用微信开发者工具开发的,还有低代码工具也支持开发小程序的。 在众多开发模式中,使用官方开发者工具开发也是一种形式。本篇我们就介绍一下如何用微信开发者工具搭建小程序…

【MATLAB第32期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现(持续更新)

【MATLAB第32期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现(持续更新) 本文敏感性分析主要分析分类问题(fisher、rf、arf、nca等)。 一、降维方法(分类) 常见的降维方法: 常见的敏…

2023,8种必备Selenium编写自动化用例的技巧(建议收藏)

在开始自动化时,您可能会遇到各种可能包含在自动化代码中的方法,技术,框架和工具。有时,与提供更好的灵活性或解决问题的更好方法相比,这种多功能性导致代码更加复杂。在编写自动化代码时,重要的是我们能够…

Jangow

Jangow 1.环境准备 靶场地址:https://www.vulnhub.com/entry/jangow-101,754/下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境,启动即可,将网段设置为NAT模式攻击机:kali(192.168.80.180)靶…

【电厂用 多功能数码显示 HJY-F931B/D交流三相电压继电器JOSEF约瑟】

用途 HJY系列数字式交流电压继电器为瞬时动作特性,用于发电机,变压器,输电线路的继电保护装 置中作为过压或欠压的闭锁启动元件。 安装结构 导轨安装9,导轨安装E两种结构方式,具体尺寸请参考外型尺寸图。特点 (1). 采…

局域网内使用的多人协同编辑文档的软件哪个好?对比5款主流平台

支持局域网内多人协同编辑文档的软件或平台哪个好?PingCode 、Confluence 等知识库工具和腾讯文档、飞书文档等都支持多人协作编辑,怎么选?这是企业团队在找文档管理工具最常见的问题。 支持局域网内协同编辑的软件可以分为两个大类&#xf…

azkaban介绍

目录 为什么需要工作流调度系统 什么是azkaban azkaban适用场景 azkaban特点 常见的工作流调度系统 azkaban和Ooize特性对比 azkaban的架构 azkaban调度的任务有可能有那些类型 总结 为什么需要工作流调度系统 一个完整的大数据分析系统,必然由很多任务单…

基于显扬科技3D视觉相机的医疗试管分拣系统

行业现状: 医疗试管分拣是医疗行业中的一个重要环节,指将医疗实验室或生物技术研究中的试管按照一定的规则进行分拣,并对试管的类型、位置、数量等信息进行识别和管理。 随着医疗技术的不断发展和诊断治疗的精细化,医疗试管分拣…

Python之selenium关于Chrome驱动位置和闪退的问题

目录 一、Chromedriver放置的位置二、浏览器闪退 一、Chromedriver放置的位置 背景:之前由于Chrome浏览器自动升级后,导致驱动与浏览器不匹配,自己也不知道问题出在哪儿,花费了我大量时间去排查,所以接下来记录一些。…

Linux ps -A 和 ps -ef

Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器 ps -A | grep xx 显示xx所有的进程 ps -ef | grep xx 显示xx在一个终端的所有进程 注意这里ef 其实可以拆开理解 e 是显示所有进…

oracle报错ORA-12514

问题:oracle使用服务名orcl登录不成功,并且报错 ORA-12514, TNS:listener does not currently know of service requested in conn原因分析: ORA-12514 错误通常表示 Oracle 数据库监听器无法识别客户端请求的服务名称。这可能是由于以下原因…

什么是ERP、APS和MES

01 先来说说ERP与MES的区别 ERP:企业资源计划 一天中午,丈夫在外给家里打电话:“亲爱的老婆,晚上想带几个同事回家吃饭可以吗?”(订货意向) 丈夫:“6个人,我们7点左右回…

【计算机视觉】如何利用 CLIP 做简单的人脸任务?(含源代码)

文章目录 一、数据集介绍二、源代码 结果三、代码逐行解读 一、数据集介绍 CELEBA 数据集(CelebFaces Attributes Dataset)是一个大规模的人脸图像数据集,旨在用于训练和评估人脸相关的计算机视觉模型。该数据集由众多名人的脸部图像组成&a…

【MySQL】MySQL索引--聚簇索引和非聚簇索引的区别

文章目录 前言1.聚簇索引和非聚簇索引的概念2.两者详细介绍2.1 聚簇索引2.2 非聚簇索引 3. 两者的区别3.1 数据存储方式3.2 二级索引查询 前言 1.聚簇索引和非聚簇索引的概念 数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引两种。“聚簇”的意思是数据行被按照…

【Java|golang】1072. 按列翻转得到最大值等行数

给定 m x n 矩阵 matrix 。 你可以从中选出任意数量的列并翻转其上的 每个 单元格。(即翻转后,单元格的值从 0 变成 1,或者从 1 变为 0 。) 返回 经过一些翻转后,行与行之间所有值都相等的最大行数 。 示例 1&#…

使用TensorFlow构建,绘制和解释人工神经网络

使用 Python 进行深度学习:神经网络(完整教程) 使用TensorFlow构建,绘制和解释人工神经网络 总结 在本文中,我将展示如何使用Python构建神经网络,以及如何使用可视化和创建模型预测解释器向业务解释深度学习…

【PCIE】pcie设备协议分析和crash后定位

分析RP Headerlog在协议中位置 能力集寄存器协议字段 HeaderLog字段偏移以及各字段含义 headerLog和协议的对应入截图中内容 completer id就是完成的ID,对应的BDF ,如下图 b5:00.0 AECap寄存器 其中 first error pointer 含义: 这里有专…

对于 Git 每一次提交的时间信息,什么是作者日期和提交者日期

文章目录 什么是作者日期和提交者日期如何查看作者日期和提交者日期方法 1方法 2方法 3 修改最近一次提交的时间 什么是作者日期和提交者日期 对于 Git 的每一次提交,在 TortoiseGit 和 IntelliJ IDEA 都可以看到这次提交的时间。但很多人不知道的是,Gi…