每个python程序员都应该早点知道的 6 个 Python 函数

在编程中,默认参数的引入使得函数调用更为灵活,不仅允许开发者在特定情况下省略某些非必需参数,同时也强调了对参数与实际传递值(即论点)之间区别的理解,这对于掌握函数工作机制至关重要。

此外,根据需要选择位置参数或是关键字参数进行传递,以及利用 *args 和 **kwargs 来处理不确定数量的参数,都极大地增强了函数的通用性和代码的简洁性,使得编程实践既高效又优雅。

1) 默认参数

def hello(name, greeting="Hi"):  print(greeting, name)
hello("韩梅梅")# Hi 韩梅梅
hello("韩梅梅", greeting = "你好")# 你好 韩梅梅

在 hello("韩梅梅")中,我们没有在greeting中传递任何信息。这意味着它默认为 "hi"

在hello("韩梅梅", greeting = "你好")中,我们将 "hello "传入了 greeting。也就是说,我们覆盖了默认参数,并指定 greeting = '你好'

如果函数中有大量参数,而我们又不希望每次调用函数时都要输入每个参数,那么这种方法就非常有用。

图片

2)形参和实参

在我学习 Python 的最初一年,我以为它们的意思是一样的。

但也不尽然。有一点区别。

比方说,我们有一个简单的函数,它接收 (a, b) 并返回它们的平均值。

def add(a, b):  return a+b

形参是我们定义函数时写在括号内的变量。这里,a 和 b 就是形参。

def add(a, b):  return a+bx = add(3,4)print(x)  # 7

实参是我们在调用函数时实际传递给函数的值。在这里,当我们调用 add(a, b) 函数时,3 和 4就是参数。

图片

3)  位置参数和关键字参数

举一个简单的函数为例。

def test(a,b):  print(f'{a=} {b=}')

让我们通过传递一些位置参数来调用这个函数。

def test(a,b):  print(f'{a=} {b=}')
test(4,3) # a=4,b=3

这里,4 和 7 是位置参数。位置参数需要按顺序排列 ,将4 传递到 a,而 7 传递到 b。

接下来,让我们通过传递一些关键字参数来调用我们的函数。

def test(a,b):  print(f'{a=} {b=}')
test(b=10,a=20) # a=20,b=10

这里,b=5 和 a=8 是关键字参数。关键字参数不需要按顺序排列,但我们必须使用 key=value 格式传递它们。

图片

4)  任意位置参数 (*args)

函数中的任意位置参数(也称为 *args)允许函数接受任意数量的位置参数。

def test(*args):  print(args)test()       # ()test(1)      # (1,)test(1,10)   # (1,10)

args是约定俗成的写法,其实你也可以写成  *a 或 *aa

在这里,test 函数接收 *args , 这使得 test 可以接收任意数量的位置参数,所有这些参数都将包含在一个名为 args 的元组中。

我们也可以将其与普通参数相结合(*参数必须在后面)

def test(a,b, *args):  print([a,b],args)test()       # 错误test(1)      # 错误test(1,10)   # [1,10] ()
test(1,10,20)   # [1,10] (20)test(1,10,20,30)   # [1,10] (20,30)

再次补充说明:我们不必将其命名为 *args。只要在前面加上 "*",我们可以给它起任何名字(甚至是中文)。

图片

5)任意关键字参数(**kwargs)

任意关键字参数(也称为 **kwargs)允许我们的函数接收任意数量的关键字参数。

def test(**kargs):  print(kargs)test()       # {}test(a = 1)      # {"a":1}test(b = 1,a = 10)   # {'b': 1, 'a': 10}

在这里,test 函数使用了 **kwargs, 它允许 test 使用任意数量的关键字参数,这些参数将被记录在名为 kwargs 的字典中。

我们还可以将其与普通参数相结合(**kwargs 也必须在后面)

def test(a,b,**kargs):  print(kargs)test()                     # 错误test(a = 1)                # 错误test(b = 1,a = 10)         # {}test(b = 1,a = 10, c=20)   # {"c":20}

图片

6) 使用 * 和 ** 将 列表或字典传递给函数

下面是一个简单的函数,它只需打印出参数。

def test(a,b):  print(f'{a=} {b=}')

我们可以不按常规方法调用这个函数,即 test(1,2):

使用 * 传递包含位置参数的列表

def test(a,b):  print(f'{a=} {b=}')nums= [10,20]test(*nums) # a = 10, b =20

在这里,nums 前面的 * 将其内容作为位置参数解包到函数调用中。这与 test(100, 200) 相同。

使用 ** 传递包含关键字参数的字典

def test(a,b):  print(f'{a=} {b=}')nums= {"a":10,"b":20}test(**nums)  # a = 10, b =20

在这里,nums前面的 ** 将其键值对作为关键字参数解包到函数调用中。这与 hi(a=10, b=20) 相同

图片

python81

python · 目录

上一篇shp文件转换为CAD文件 (第三版) 这个软件的界面颜值挺高的

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

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

相关文章

VScode 的简单使用

目录 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 也可以“ CTRLD ”;使用“CTRL滚轮”即可; ctrl /-,是用来展开/收起代码的; 比如:js 的多行注释是 shiftalt…

[数据集][目标检测]西红柿缺陷检测数据集VOC+YOLO格式17318张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):17318 标注数量(xml文件个数):17318 标注数量(txt文件个数):17318 标…

AV1 Bitstream Decoding Process Specification:术语和定义

原文地址:https://aomediacodec.github.io/av1-spec/av1-spec.pdf没有梯子的下载地址:AV1 Bitstream & Decoding Process Specification摘要:这份文档定义了开放媒体联盟(Alliance for Open Media)AV1视频编解码器…

UE4_后期处理五—饱和度调整、隔离、扭曲、重影

一、色彩饱和度调整: 原图 后期处理材质节点: 效果图: 可以根据参数saturation调整饱和还是去饱和。 当saturation为1时:去饱和度,如下图: 当saturation为0时:原始的一个状态,如下…

展会通过智慧客流统计分析优化运营策略-讯鹏科技

在当今数字化高速发展的时代,展会行业也在积极探索利用智慧科技进行转型与升级。其中,智慧客流统计分析成为了展会优化运营策略的关键要素。 智慧客流统计分析首先为展会提供了精准的数据支撑。通过先进的传感器、摄像头等设备,能够实时、准确…

PyCharm修改背景颜色、修改字体大小+Python常用快捷键+Python常见的运算符

文章目录 PyCharm软件的使用1. 修改背景颜色和字体大小1.1 修改背景颜色1.2 修改字体大小 2. 常用的快捷键3. 常见的运算符3.1 算术运算符3.2 赋值运算符3.3 比较运算符3.4 逻辑运算符 PyCharm软件的使用 1. 修改背景颜色和字体大小 1.1 修改背景颜色 1.2 修改字体大小 2. 常…

图文并茂带你理解Java的SPI机制

目录 一、Java的SPI机制1、什么是Java的SPI ?2、JavaSPI 代码示例 (使用Maven项目演示)3、 JavaSPI 机制的核心-ServiceLoader4、实现自己的ServiceLoader5、Java中还有哪些SPI实现? 一、Java的SPI机制 1、什么是Java的SPI ? SPI全称 Servi…

中秋快到了,要给哪些国外客户送祝福(附贺卡模板)

马上就要中秋节了,在这里提前祝小伙伴们中秋节快乐,身体健康,阖家团圆,业绩越来越好,公司越来越好,一切都越来越好! 中秋节是我们非常重要的几个传统节日之一了,除了我们自己庆祝之…

计算机网络练级第一级————认识网络

目录 网络搁哪? 网络的发展史(了解) 独立模式: 网络互联: 局域网时期: 广域网时期: 什么是协议 TCP/IP五层/四层模型 用官话来说: 我自己的话来说 第一层应用层&#xff1…

Python+selenium自动化元素定位防踩坑(建议收藏)

踩坑一:StaleElementReferenceException selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document 异常原因: 意思是,引用的元素已过期。原因是页面…

soup.find(‘div‘)获取的数据长度为3,为什么1和3都是空的?

用beautifulSoup中的find(‘div’)可以获取一个div数据,为什么用len()计数是显示长度为3? 实际在打印输出时,1和3又没有内容输出?用print(div【0】)和print&…

Java小白一文讲清Java中集合相关的知识点(七)

LinkedHashSet LinkedHashSet是HashSet的子类 LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组双向链表 而在之前讲的HashSet中的链表是单向的哈,注意区分! LinkedHashSet根据元素的hashcode值来决定元素的存储位置,同时使用链表…

极限编程XP例题

答案:D 解析: 结对编程,一个人写代码,一个人看,由于是两个或两个以上的人负责,因此选项A 支持共同代码拥有和共同对系统负责是正确的 选项B 由于是一个人写一个人看,变相实现了代码审查 选项…

深入了解 GROW with SAP:它究竟是什么?

GROW with SAP 是一套综合全面的产品组合,包含一系列解决方案、加速采用服务、社区支持和学习资源,能够确保各种规模的企业成功采用 ERP 云软件。部署 GROW with SAP 后,企业可以采用 SAP S/4HANA Cloud Public Edition [ERP 公有云版]。在 S…

4 路由模式

路由模式 逻辑图 如果我们将生产环境的日志进行处理,而日志是分等级的,我们就按照 error waring info三个等级来讲解 一个消费者是处理【所有】(info,error,warning)的日志,用于做数据仓库&am…

Redis搭建集成

图示 正常来讲配置一主两从需要三台服务器,博主内存告急,就使用一台进行操作了,使用多台跟一台操作没有区别,只是多台不需要新建太多配置文件 一. 准备配置文件 如果你跟我一样是在一台服务器里面进行配置主从服务的,跟我一起操作即可 找到redis目录 在bin目录同位置创建一…

Linux驱动.之驱动开发思维,设备,驱动,总线分析思想,驱动的分类(字符设备,块设备,网络设备)

在stm32,裸机开发时,偏底层,跟寄存器打交道,有些MCU提供了库,库也还是操作寄存器的,通过配置寄存器, 配置各种工作模式,时钟,等等,交换数据等等。 Linux下驱…

Unity笔记之静态/动态合批

借用博主链接 一、静态合批 1、首先项目设置里面需要勾选静态合批 2、添加静态合批选项 3、至此就完成了,至于成功没有就要去分析器里面看了。 静态合批注意问题: 二、动态合批 1、首先项目设置里面需要勾选动态合批 2、调用 StaticBatchingUtilit…

给大家推荐好用的AI网站

地址:https://ai.ashuiai.com/auth/register?inviteCode8E8DIC1QCR 个人觉得挺好用的,可以免费,免费有限制次数,也可以会员升级200永久免费,我用的200永久免费。 可以在国内使用以下ai模型 回答问题更智能&#xff…

IBM中国研发部裁员:全球化背景下的IT产业变局与应对之道

裁员风波中的思考与机遇 前言了解霍尼韦尔的“东方服务东方”施耐德电气的“中国中心”战略对比与分析 中国信息技术(IT)行业展现出蓬勃发展的前景**政府支持与政策导向****技术创新与应用****市场规模与需求****人才培养与就业**国际化与开放合作总结 前言 如何看待IBM中国研发…