每个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,一经查实,立即删除!

相关文章

nnunetv2系列:使用默认的预测类推理2D数据

nnunetv2系列:使用默认的预测类推理2D数据 这里参考源代码nnUNet/nnunetv2/inference/predict_from_raw_data.py中给的示例进行调整和测试。 代码示例 from torch import device from nnunetv2.inference.predict_from_raw_data import nnUNetPredictor# from nn…

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视频编解码器…

使用Bert模型优化Padding策略:加速文本分类训练

文章目录 摘要介绍导包模型datasetBertCLS速度对比代码开源地址 摘要 本文探讨了如何通过优化Padding策略,提高基于Bert的文本分类模型的训练速度。我们比较了两种不同的Padding方式:一种是将输入数据统一填充到最大长度512,另一种是只将每个…

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

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

Debian安装Nodejs与npm

仅做记录,apt install nodejs 只会安装 Node.js 本身,而不会自动安装 npm sudo apt install -y nodejssudo apt install -y npm

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

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

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:htt…

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…

字符串API

字符串作为经常使用的数据类型,它们的API种类繁多,为了提升效率,不少API的底层实现可能会用更接近机器优化的代码实现。 不同语言的实现 用于内核或驱动调用的copy/compare API,大部分有机器架构汇编代码实现以加速处理&#xff…

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

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

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

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

java中JTS对空间数据Geometry进行坐标系投影转换

java中JTS对空间数据Geometry进行坐标系投影转换 代码: /*** Description: 用JTS对Geometry空间数据进行坐标系投影转换** Param: [params]* Return: Geometry* Author yanghaoxing* Date 2024/9/10 14:54*/public Geometry getGeometryForlong(Geometry geometr…

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

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

学习记录之C语言学习笔记1

1. 数据类型 基本数据类型:整型(int)、浮点型(float)、字符型(char)和双精度浮点型(double)。 派生数据类型:数组、结构体、联合体和枚举。 void类型…

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值来决定元素的存储位置,同时使用链表…

application/x-www-form-urlencoded与multipart/form-data与application/json的区别

前端数据传递至后台时,需要对其进行编码,其中,编码格式可分为四种:application/x-www-form-urlencoded,multipart/form-data,application/json,text/plain。 text/plain是纯文本数据&#xff0…