软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用

news2024/12/25 14:12:13

在Python中,函数参数是定义在函数头部的变量,用于接收传递给函数的数据。Python函数参数有四种类型:必传参数、默认参数、可变参数和关键字参数。每种类型都有不同的使用方式和适用场景。本文将详细介绍这四种函数参数的使用方法。

Python函数参数类型

  • 必传参数:最常用的,必传确定数量的参数
  • 默认参数:在调用函数时可以传也可以不传,如果不传将使用默认值
  • 可变参数:可变长度参数
  • 关键字参数:长度可变,但是需要以 key-value 形式传参

必传参数

必传参数是指在调用函数时必须提供的参数,函数定义中没有默认值。如果在调用函数时没有传递必传参数,Python解释器将会报错。示例代码如下:

def hello(name):
    print("hello,"+ name + "!")

hello('Muller')

在上面的代码中,name 是一个必传参数,调用 hello 函数时必须提供一个值。在这个例子中,函数被调用时传递的参数是 "Muller"。输出结果为 "Hello, Muller!"

当然我们也可以有多个必传参数,当有多个必传参数时,有多少个,我们就要传多少个,示例如下:

def add(a, b):
    return a + b
print(add(1, 2))
####
输出结果为3
  • add 函数有两个参数,第一个参数是 a,第二个参数是 b
  • 传入的两个整数按照位置顺序依次赋给函数的参数 a 和 b,参数 a 和参数 b 被称为位置参数

注:传递的参数个数必须等于参数列表的数量

  • 根据函数定义的参数位置来传递参数,要求传递的参数与函数定义的参数两者一一对应
  • 如果 “传递的参数个数” 不等于 “函数定义的参数个数”,运行时会报错,如下
def add(a, b):
    return a + b
print(add(1))

##### 
TypeError: add() missing 1 required positional argument: 'b'

--------------------------
def add(a, b):
    return a + b
print(add(1,2,3))
#####
TypeError: add() takes 2 positional arguments but 3 were given

默认参数

默认参数是在函数定义时给参数赋予一个默认值,如果在调用函数时没有传递对应的参数,函数将使用默认值。使用默认参数,可以简化函数的调用,尤其是在函数需要被频繁调用的情况下,示例代码如下:

def greet(name, greeting="Hello"):
    print(greeting + ", " + name + "!")

greet("Bob")
greet("Charlie", "Hi")

##### 
输出如下:
Hello, Bob!
Hi, Charlie!

在上面的代码中,greeting 是一个默认参数,它的默认值是 "Hello"。在第一个调用中,只传递了必传参数 "Bob",默认参数 greeting 使用了它的默认值,输出结果为 "Hello, Bob!"

在第二个调用中,传递了必传参数"Charlie"和自定义的默认参数 "Hi",输出结果为 "Hi, Charlie!"

默认参数的使用可以使函数调用更加灵活,可以根据需求选择是否传递该参数,如果不传递则使用默认值。

注:声明函数时,当同时存在必传参数和默认参数,形参的顺序必须是 (必传参数 , 默认参数),不能默认参数在前

可变参数

可变参数是指在函数定义时不确定参数个数的情况下,可以接收任意数量的参数。Python提供了两种方式来实现可变参数:使用星号(*)和双星号(**)。

  1. 使用星号(*)来定义可变参数:

示例代码如下:

def calculate_sum(*numbers):
    total = 0
    for number in numbers:
        total += number
    return total

result = calculate_sum(1, 2, 3, 4, 5)
print(result)
##### 
输出结果为15

在上面的代码中,*numbers 是一个可变参数,它可以接收任意数量的参数。在函数体内,我们使用一个循环遍历所有的参数,并将它们累加到total变量中。通过调用 calculate_sum 函数,并传递参数 1, 2, 3, 4,5,我们可以得到它们的总和,输出结果为 15

注:

  • args是一个元组类型
  • 可变参数可不传,也可以传很多个值
  • *(2, 3, 4, 5) ,在元组or列表前面加一个*,代表将里面的每个元素独立出来,单独作为一个形参传进去,也称为元组解包

关键字参数

关键字参数是指在函数调用时,通过指定参数名来传递参数值。关键字参数的主要特点是可以不按照定义顺序传递参数,并且可以只传递部分参数。关键字参数的使用可以增加函数调用的可读性,避免参数顺序混淆的问题。示例代码如下:

def greet(name, greeting):
    print(greeting + ", " + name + "!")

greet(greeting="Hi", name="Alice")
#####
输出结果为:
Hi, Alice!

在上面的代码中,通过指定参数名来传递参数值,我们可以按照任意顺序传递参数。在这个例子中,函数被调用时使用了关键字参数 greeting="Hi" name="Alice",输出结果为 "Hi, Alice!"

总结

Python函数参数有四种类型:必传参数、默认参数、可变参数和关键字参数。必传参数在调用函数时必须提供,没有默认值;默认参数在函数定义时给参数赋予一个默认值,在调用函数时可以不传递该参数;可变参数可以接收任意数量的参数,使用星号(*)和双星号(**)来定义;关键字参数通过指定参数名来传递参数值,可以不按照定义顺序传递参数。掌握这些不同类型的函数参数的使用方法,可以让我们更好地编写灵活、可扩展的函数。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

如何做一个炫酷的Github个人简介(3DContribution)

文章目录 前言3D-Contrib第一步第二步第三步第四步第五步第六步 前言 最近放假了,毕设目前也不太想做,先搞一点小玩意玩玩,让自己的github看起来好看点。也顺便学学这个action是怎么个事。 3D-Contrib 先给大家看一下效果 我的个人主页&am…

RH850P1X芯片学习笔记-A/D Converter (ADCF)

文章目录 Features of RH850/P1x-C ADCFNumber of UnitsRegister Base AddressClock SupplyInterrupts and DMAHardware ResetExternal Input/Output SignalsVirtual Channel OverviewFunctional OverviewBlock DiagramPhysical Channels, Virtual Channels and Scan Groups Re…

【airsim】python控制airsim

使用airsim 1.8.1编译完成,进过block项目在cpp测试后,开始踩坑使用python。 使用AirSim\PythonClient\setup.py或者pip安装airsim。 python setup.py install或者 pip install airsim此时,windows电脑的环境信息 (air_py38) D:\code\Gith…

UV胶水与聚氯乙烯PVC材料的塑料粘接,效果如何?

UV胶水可以与聚氯乙烯PVC很好地粘接。 PVC是一种常见的塑料材料,UV胶水通常对PVC具有良好的粘接性能。UV胶水可以在紫外线照射下迅速固化,形成坚固的粘接,因此通常被用于PVC制品的粘接和修复。 UV胶水与PVC粘接的优点: 1. 快速固…

Java并发集合详解

第1章:引言 大家好,我是小黑,在这篇博客中,咱们将一起深入探索Java中的并发集合。多线程编程是一个不可或缺的部分,它能让程序运行得更快,处理更多的任务。但同时,多线程也带来了一些挑战&…

Linux 编译安装 Nginx

目录 一、前言二、四种安装方式介绍三、本文安装方式:源码安装3.1、安装依赖库3.2、开始安装 Nginx3.3、Nginx 相关操作3.4、把 Nginx 注册成系统服务 四、结尾 一、前言 Nginx 是一款轻量级的 Web 服务器、[反向代理]服务器,由于它的内存占用少&#xf…

独立式键盘控制步进电机实验

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit S1P1^4; //将S1位定义为P1.4引脚 sbit S2P1^5; //将S2位定义为P1.5引脚 sbit S3P1^6; //将S3位定义为P1.6引脚 unsigned char keyval; //储存按键值 unsigned char ID; …

etcd基本介绍

etcd基本介绍 ETCD是SoreOs公司发布的一个分布式的、高可用的、key-value存储的数据库。基于Go语言实现&#xff0c;k8s中也使用了ETCD作为数据库。主要用于共享配置和服务发现。相对于zookeeper采用的Paxos&#xff0c;ETCD采用的是Raft算法&#xff0c;该算法具备的性能更佳…

Hadoop集群三节点搭建(二)

一、克隆三台主机&#xff08;hadoop102 hadoop103 hadoop104&#xff09; 以master为样板机克隆三台出来&#xff0c;克隆前先把master关机 按照上面的步骤克隆其他两个就可以了&#xff0c;记得修改ip和hostname 二、编写集群同步脚本 在/home/attest/ 创建bin目录&…

基于SSM的《数据库系统原理》课程平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Matlab:遗传算法,模拟退火算法练习题

1、遗传算法 &#xff08;1&#xff09;遗传算法是一种基于自然选择原理和自然遗传机 制的搜索&#xff08;寻优&#xff09;算法&#xff0c;它是模拟自然界中的生命进化机制&#xff0c;在人工系统中实现特定目 标的优化。遗传算法的实质是通过群体搜索技术&#xff0c;根据…

西电期末1024.数值信息报表

一.题目 二.分析与思路 考点重复&#xff0c;这里介绍一种新的处理方法&#xff0c;以前用找最值时用排序加结构体记录数据位置&#xff0c;用数组记录一串数据使用&#xff0c;西卡西&#xff0c;我们只是找最值&#xff0c;就可以打擂台处理&#xff0c;加上位置就行&#x…

Linux 的引导与服务控制

一 开机启动过程 bios加电自检-->mbr-->grub-->加载内核文件-->启动第一个进程 1 bios加电自检 检测硬件是否正常&#xff0c;然后根据bios中的启动项设置&#xff0c;去找内核文件 2 mbr 因为grup太大,第一个扇区存不下所有的grub程序&#xff0c;所以分为…

【C/C++】开源串口库 CSerialPort 应用

文章目录 1、简述2、效果图2.1、命令行&#xff08;不带GUI&#xff09;2.2、GUI&#xff08;这里用的Qt&#xff09; 3、串口硬件知识普及4、核心实现4.1、Qt的pro文件4.2、main文件4.3、SSerialPort类4.3.1、头文件4.3.2、源文件 4.4、Linux下的CMakeLists.txt 1、简述 本文…

ruoyi若依 @DataScope(deptAlias = “d“, userAlias = “u“)不生效问题

DataScope注解不生效问题记录 问题&#xff1a;DataScope(deptAlias "d", userAlias "u")不生效问题原因排查&#xff1a;解决方案&#xff1a;结果&#xff1a;完美解决 问题&#xff1a;DataScope(deptAlias “d”, userAlias “u”)不生效问题 原因…

MDPI期刊word模版下载

先打开该网站 找到Manuscript 就能下载到word文件了

吴恩达深度学习l2week2编程作业—Optimization Methods(最新中文跑通版)

到目前为止&#xff0c;您一直使用渐变下降来更新参数并将成本降至最低。在本笔记本中&#xff0c;您将获得一些更先进的优化方法的技能&#xff0c;这些方法可以加快学习速度&#xff0c;甚至可能使您获得更好的成本函数最终值。拥有一个好的优化算法可能是等待几天与只需几个…

解决使用localhost或127.0.01模拟CORS失效

解决使用localhost或127.0.01模拟CORS失效 前言问题发现问题解决 前言 CORS (Cross-Origin Resource Sharing) 指的是一种机制&#xff0c;它允许不同源的网页请求访问另一个源服务器上的某些资源。通常情况下&#xff0c;如果 JavaScript 代码在一个源中发起了 AJAX 请求&…

HAL——定时器

学习目标 掌握定时器I配置方式掌握定时器占空比输出 学习内容 需求 以PA5对应的LED4为例&#xff0c;我们做一个呼吸灯的效果。 我们采用TIMER1进行实现&#xff1a; Timer配置 配置Timer通道输出 配置周期和分频计数 psc为分频系数&#xff0c;这里的值需要写入到寄存器中…

HAL——SPI

学习目标 掌握SPI配置方式掌握SPI读写操作 学习内容 需求 SPI配置 打开SPI1,选中全双工模式。观察下方自动生成的引脚&#xff0c;是否和自己开发板引脚对应。 修改引脚&#xff0c;来动右侧芯片引脚视图&#xff0c;找到开发板对应引脚&#xff0c;进行修改。