【Python基础】Python函数介绍(超全面、缺省参数、多值传参、可变参数等)

news2024/11/26 1:34:15

0

函数进阶

  • 1.01. 函数参数和返回值的作用
    • 1.1无参数,无返回值
    • 1.2 无参数,有返回值
    • 1.3 有参数,无返回值
    • 1.4 有参数,有返回值
  • 2.不可变和可变的参数
  • 3.多值参数

1.01. 函数参数和返回值的作用

函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式

  1. 无参数,无返回值
  2. 无参数,有返回值
  3. 有参数,无返回值
    01
    001_ 函数参数和返回值
    定义函数时, 是否接收参数,或者是否返回结果,是根据 实际的功能需求 来决定的!
  4. 如果函数 内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部
  5. 如果希望一个函数 执行完成后,向外界汇报执行结果,就可以增加函数的返回值

1.1无参数,无返回值

此类函数,不接收参数,也没有返回值,应用场景如下:

  1. 只是单纯地做一件事情,例如 显示菜单
  2. 在函数内部 针对全局变量进行操作,例如: 新建名片,最终结果 记录在全局变量 中
  • 注意:
    • 如果全局变量的数据类型是一个 可变类型,在函数内部可以使用 方法 修改全局变量的内容 —— 变量的引用不会改变 变量的引用不会改变
    • 在函数内部, 使用赋值语句 才会 修改变量的引用

1.2 无参数,有返回值

此类函数,不接收参数,但是有返回值,应用场景如下:
• 采集数据,例如 温度计,返回结果就是当前的温度,而不需要传递任何的参数

1.3 有参数,无返回值

此类函数,接收参数,没有返回值,应用场景如下:
• 函数内部的代码保持不变,针对 不同的参数 处理 不同的数据
例如 名片管理系统 针对 找到的名片 做 修改、 删除 操作

1.4 有参数,有返回值

此类函数,接收参数,同时有返回值,应用场景如下:
• 函数内部的代码保持不变,针对 不同的参数 处理 不同的数据,并且 返回期望的处理结果
• 例如 名片管理系统 使用 字典默认值 和 提示信息 提示用户输入内容
– 如果输入,返回输入内容
– 如果没有输入,返回字典默认值

00001

2.不可变和可变的参数

问题 1:在函数内部,针对参数使用 赋值语句,会不会影响调用函数时传递的 实参变量? —— 不
会!
• 无论传递的参数是 可变 还是 不可变
– 只要 针对参数 使用 赋值语句会在 函数内部 修改 局部变量的引用,
不会影响到 外部变量的引用

def demo(num, num_list):
	print("函数内部")
	# 赋值语句
	num = 200
	num_list = [1, 2, 3]
	print(num)
	print(num_list)
	print("函数代码完成")
gl_num = 99
gl_list = [4, 5, 6]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)
```![0002](https://img-blog.csdnimg.cn/0502769ce8da4a58ab50a4c87dba0b71.jpeg)

# 3.缺省参数

• 定义函数时,可以给 某个参数 指定一个 默认值,具有默认值的参数就叫做 缺省参数
• 调用函数时,如果没有传入 缺省参数 的值,则在函数内部使用定义函数时指定的 参数默认值
• 函数的缺省参数, 将常见值设置为参数的缺省值,从而 简化函数的调用
例如:对列表排序的方法:

```python
gl_num_list = [6, 3, 9]
# 默认就是升序排序,因为这种应用需求更多
gl_num_list.sort()
print(gl_num_list)
gl_num_list.sort(reverse=True)
print(gl_num_list)

指定函数的缺省参数
• 在参数后使用赋值语句,可以指定参数的缺省值

def print_info(name, gender=True):
    gender_text = "男生"
    if not gender:
        gender_text = "女生"
    print("%s 是 %s" % (name, gender_text))

提示

  1. 缺省参数,需要使用 最常见的值 作为默认值!
  2. 如果一个参数的值 不能确定,则不应该设置默认值,具体的数值在调用函数时,由外界传递!
  • 缺省参数的注意事项
  1. 缺省参数的定义位置
    • 必须保证 带有默认值的缺省参数 在参数列表末尾
    • 所以,以下定义是错误的!
    def print_info(name, gender=True, title):
  2. 调用带有多个缺省参数的函数
    • 在 调用函数时,如果有 多个缺省参数, 需要指定参数名,这样解释器才能够
    知道参数的对应关系!,如果都不指定是可以的,但是指定一个之后,后面就必须指定

3.多值参数

定义支持多值参数的函数
• 有时可能需要 一个函数 能够处理的参数 个数 是 不确定的,这个时候,就可以使用 多值参数
• python 中有 两种 多值参数:
– 参数名前增加 一个 * 可以接收 元组
– 参数名前增加 两个 * 可以接收 字典
• 一般在给多值参数命名时, 习惯使用以下两个名字
– *args —— 存放 元组 元组 参数,前面有一个 *
kwargs —— 存放 字典 字典 参数,前面有两个 *
• args 是 arguments 的缩写,有变量的含义
• kw 是 keyword 的缩写, kwargs 可以记忆 键值对参数
args 必须在
kwargs 前面

def demo(num, *args, **kwargs):
	print(num)
	print(args)
	print(kwargs)
demo(1, 2, 3, 4, 5, name="小明", age=18, gender=True)
  • 多值参数案例 —— 计算任意多个数字的和
    需求
  1. 定义一个函数 sum_numbers ,可以接收的 任意多个整数
  2. 功能要求:将传递的 所有数字累加 并且返回累加结果
def sum_numbers(*args):
	num = 0
	# 遍历 args 元组顺序求和
		n in args:
			num += n
		return num
	print(sum_numbers(1, 2, 3))

元组和字典的拆包( 掌握 )
• 在调用带有多值参数的函数时,如果希望:
– 将一个 元组变量,直接传递给 args
– 将一个 字典变量,直接传递给 kwargs
• 就可以使用 拆包,简化参数的传递, 拆包 的方式是:
– 在 元组变量前,增加 一个 *
– 在 字典变量前,增加 两个 *

def demo(*args, **kwargs):
	print(args)
	print(kwargs)
# 需要将一个元组变量 / 字典变量传递给函数对应的参数
gl_nums = (1, 2, 3)
gl_xiaoming = {"name": "小明", "age": 18}
# 会把 num_tuple 和 xiaoming 作为元组传递个 args
# demo(gl_nums, gl_xiaoming)
demo(*gl_nums, **gl_xiaoming)

0005

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

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

相关文章

Maven3.9.1安装及环境变量配置

一、Maven的下载与安装 maven各版本下载地址 打开链接后自行选择对应版本 下载完成后解压安装,最好别选择c盘,安装目录路径等使用英文,避免产生其他问题 我这里选择的是D盘 二、Maven的环境变量配置 2.1、右键点击此电脑选择属性,点击高级系统设置,点…

Coremail与国家信息安全漏洞库(CNNVD)达成深度合作!

漏洞信息共享合作单位证书 近日,Coremail获得由国家信息安全漏洞库(CNNVD)颁发的“CNNVD漏洞信息共享合作单位”证书。 此证书是国家权威机构对Coremail安全研究技术和漏洞挖掘技术实力的充分肯定,也是双方合作的里程碑。 国家信…

Redis之Java操作连接操作Redis

前言 Java是一种强大的编程语言,而Redis是一个快速且具有高可扩展性的开源键值数据存储系统。使用Java操作Redis可以提高效率和性能,并且能够满足大规模数据存储和处理的需求。在本篇文章中,我们将介绍如何使用Java连接Redis,以及…

企业文件夹同步,怎样让数据管理更高效?

随着企业数据量的不断增加,如何高效地进行文件夹同步已成为企业提升工作效率、确保数据安全的重要一环。飞驰云联的同步软件作为一款专门针对企业级用户的数据同步解决方案,在实践中表现出色,值得信赖。 飞驰云联的同步软件是一款高效、稳定、…

axios下载csv文件下载-功能实现

须将axios 配置中的responseType设置为arraybuffer text/comma-separated-values, text/csv, application/csv, application/excel, application/vnd.ms-excel, application/vnd.msexcel // 下载文件 async exportConsumeList() {try {let res await exportConsumeList…

ASO优化之为应用创建屏幕截图的技巧(上)

屏幕截图是应用商店中最大的视觉元素之一。它们吸引用户的注意力,让他们对应用程序的外观有一个印象。我们需要改善并优化屏幕截图,来提高应用的转化率。 1、将用户的注意力吸引到正确位置。 显示部分屏幕截图而不是完整的设备。通过将原始资源减半&…

SS928 开发记录一 烧写

1.下载ToolPlatform 1.1设置芯片型号 1.2IP系统会自动根据主机设置 1.3选择烧写方式以及 eMMC分区表 1.4选择烧写文件 .bin、 kernel 、rootfs 2.烧录后通过串口连接 3.连接后写入环境变量 4.reset

『亚马逊云科技产品测评』活动征文|游戏出海云服务器选择

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 缘由 在国内流量红利见顶、版号暂停发放后,海外已经成为国内…

风险管理 相关的(ITTO)输入、工具与技术

信息系统项目管理 之「风险管理」相关的(ITTO)输入、工具与技术、输出 风险管理是项目管理的十大知识领域之一,包括如下7个过程。 1、规划风险管理 定义 规划风险管理是定义如何实施项目风险管理活动的过。 作用 确保风险管理的水平、…

01-详解静态代理,动态代理(JDK动态代理原理和CGLIB动态代理原理)

GoF之代理模式 概述 代理模式是GoF23种设计模式之一,属于结构型设计模式,本质就是通过引入代理对象间接实现对真实对象的操作 业务场景: 系统中有A、B、C三个模块,使用这些模块的前提是需要用户登录 此时就可以为A、B、C三个模块提供一个代理,代理的逻辑请求来了之后先判断…

vue + axios + mock

参考来源:Vue mock.js模拟数据实现首页导航与左侧菜单功能_vue.js_AB教程网 记录步骤:在参考资料来源添加axios步骤 1、安装mock依赖 npm install mock -D //只在开发环境使用 下载完成后,项目文件package.json中的devDependencies就会加…

【已解决】linux下轻松解决大多数软件依赖问题

【已解决】linux下轻松解决大多数软件依赖问题 通过aptitute安装 sudo apt install aptitudesudo aptitude install 软件包的名字以安装opencv过程中sudo apt-get install libgtk2.0-dev失败为例 先装aptitute sudo apt install aptitude再装libgtk2.0-dev sudo aptitude …

HR如何应用人才测评系统来开展招聘?

企业招聘:名额少,应聘者多,这是必然现象!如果提高招聘效率,成为企业最为关心的问题。 问题可能有 1、简历多筛选难 每次收到一堆的简历,如何从中筛选出有效的人才,是一件头疼的事&#xff0c…

【文末送书】Python界面开发与PyQt

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

【微服务】一体化智慧工地管理平台源码

智慧工地系统是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段,实现对工地施工、设备状态、人员安全等方面的实时监控和管理。 一、智慧工地让工程施工智能化 1、内容全面,多维度数…

[开源]免费开源MES系统/可视化数字大屏/自动排班系统

开源系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、免费MES、免费智能制造系统、免费排产系统、免费排班系统、免费质检系统、免费生产计划系统。 万界星空开源MES制造执行系统的Java开源版本。开源mes系统包括系统管理…

回馈电子负载的特点

随着科技的不断发展,制造工厂正逐渐采用先进的设备和技术来提高生产效率。回馈电子负载作为一种新型的电力设备,其独特的特点为制造工厂带来了诸多优势。回馈电子负载是一种能够将多余的电能回馈到电网的电力设备,广泛应用于制造工厂、数据中…

Android 接入ttf字体文件

一、业务实现 一些炫酷的App总会加一些App自己的字体。这时候需要找UI提供ttf字体文件。 然后实现 TTF(TrueType Font)字体文件并将其应用到 TextView。 二、大致流程 将 TTF 字体文件添加到你的 Android 项目中: 将 TTF 文件复制到 res/f…

【Pytorch】计算机视觉项目——卷积神经网络CNN模型识别图像分类

目录 一、前言二、CNN可视化解释器1. 卷积层工作原理 三、详细步骤说明1. 数据集准备2.DataLoader3. 搭建模型CNN3.1 设置设备3.2 搭建CNN模型3.3 设置loss 和 optimizer3.4 训练和测试循环 4. 模型评估和结果输出 一、前言 在上一篇笔记《【Pytorch】整体工作流程代码详解&am…

mac电脑大旧型文件清理软件CleanMyMac2024

CleanMyMac的大旧文件模块会帮您定位、检查和移除您几个月没有打开过并且不再需要的大型文件和文件夹,这样可以节省更多的磁盘空间。 CleanMyMac X全新版下载如下: https://wm.makeding.com/iclk/?zoneid49983 大型和旧文件模块可以查找和移除大型文件和文件夹&…