首页 > 编程语言 >软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用

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

时间:2023-08-09 18:03:21浏览次数:96  
标签:函数 必传 默认 传递 函数参数 参数 默认值 软件测试

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

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

标签:函数,必传,默认,传递,函数参数,参数,默认值,软件测试
From: https://blog.51cto.com/u_15640304/7023494

相关文章

  • r7 7730U参数 r7 7730U性能怎么样 AMD锐龙77730U相当于什么水平
    AMD锐龙77730U采用Barcelo8核心/16线程主频2.0GHz最高频率4.5GHz三级缓存运行内存16M内存类型LPDDR4X内存频率4266MHzr77730U性能怎么样这些点很重要 http://www.adiannao.cn/dy ......
  • avue-crud属性配置项参数笔记分享
     Avue是一个基于Element-plus低代码前端框架,它使用JSON配置来生成页面,可以减少页面开发工作量,极大提升效率;虽然Avue官网上面都有这些配置说明,但是如果刚开始接触不熟悉框架的话需要很久才找到自己需要的参数配置,为了方便自己今后查找使用,现将一些开发中常用的配置梳理在下......
  • ajax 跨域 如果在head里面加了参数需要在 nginx add_header 里面添加
    server{listen80;server_nameyourdomain.com;location/{#允许跨域请求add_header'Access-Control-Allow-Origin''*';add_header'Access-Control-Allow-Methods''GET,POST,OPTIONS'......
  • Python命令行参数输入
    sys.argv#test.pyimportsysif__name__=='__main__':print(sys.argv[1:])终端输入内容并查看接收到的参数使用argparseimportargparseif__name__=='__main__':#python.\excelcompare.py发票列表1.xlsx发票列表2.xlsxsheet1sheet11BC#pars......
  • python带参数装饰器的两种写法
    装饰器是Python中非常有用的语法特性,可以用于包装或者修改函数的行为。有时候我们希望给装饰器添加参数,以便于在装饰器内部使用,那么这时候就需要使用带参数的装饰器。常用的两种带参数装饰器的写法如下:1.第一种装饰器带参数的写法:在装饰器函数外层再套一个函数,用来接收和处理......
  • camera2 传参流程以及hal添加自定义参数方法
    camera2传参流程以及hal添加自定义参数方法//设置自动曝光模式mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);/frameworks/base/core/java/android/hardware/camera2/CaptureRequest.javaKey<Integer>CONTROL_AF_MOD......
  • 【自动化测试】利用python,简单的生成接口测试中需要的随机参数
    很多测试小伙伴在编写接口测试用例的时候,经常遇到有些传参的定义大致如下所示:我们在针对这种参数的基本接口用例中,很可能定义一些写死的参数,比如:{  "departName":"一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一五",  "parentDepartId":"1"}明显......
  • 硬盘SMART检测参数详解[转]
    一、SMART概述      要说Linux用户最不愿意看到的事情,莫过于在毫无警告的情况下发现硬盘崩溃了。诸如RAID的备份和存储技术可以在任何时候帮用户恢复数据,但为预防硬件崩溃造成数据丢失所花费的代价却是相当可观的,特别是在用户从来没有提前考虑过在这些情况下的应对措施时......
  • pyinstaller常用参数
    `-F,–onefile打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用-D,–onedir打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护-K,–tk在部署时包含TCL/TK-a,–ascii不包含编码.在......
  • 软件测试|json.decoder.JSONDecodeError: Expecting ‘,‘错误解决
    在处理JSON数据时,有时可能会遇到"json.decoder.JSONDecodeError:Expecting','"的错误,如下图的情况,本文将介绍这个错误的原因以及一些常见的解决方法。错误原因"json.decoder.JSONDecodeError:Expecting','"错误通常发生在解析JSON数据时,Python解析器期望在JSON对象或数组的元素......