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

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

image.png

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

相关文章
|
3月前
|
SQL 分布式计算 关系型数据库
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
82 2
|
3月前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
79 2
|
3月前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
95 2
|
18天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
30 9
|
1月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
2月前
|
测试技术 开发者 Python
对于Python中的异常要如何处理,raise关键字你真的了解吗?一篇文章带你从头了解
`raise`关键字在Python中用于显式引发异常,允许开发者在检测到错误条件时中断程序流程,并通过异常处理机制(如try-except块)接管控制。`raise`后可跟异常类型、异常对象及错误信息,适用于验证输入、处理错误、自定义异常、重新引发异常及测试等场景。例如,`raise ValueError("Invalid input")`用于验证输入数据,若不符合预期则引发异常,确保数据准确并提供清晰错误信息。此外,通过自定义异常类,可以针对特定错误情况提供更具体的信息,增强代码的健壮性和可维护性。
|
2月前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
49 1
WK
|
3月前
|
Python
Python保留关键字
Python 的保留关键字是语言中具有特殊意义的单词,不能用作变量名、函数名或类名等标识符。Python 3.x 版本中的保留关键字包括 `False`、`await`、`else`、`import` 等共 35 个。使用这些关键字作为标识符会导致语法错误。随着 Python 版本的更新,保留关键字可能会有所变化。
WK
62 6
|
3月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
151 1
|
2月前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。