Python 变量教程之打包和解包参数

 更新时间:2022年08月17日 14:21:59   作者:海拥  
这篇文章主要介绍了Python 变量教程之打包和解包参数,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

前言:

我们使用两个运算符 *(用于元组)和 **(用于字典)。

背景 

考虑这样一种情况,我们有一个接收四个参数的函数。我们想调用这个函数,我们有一个大小为 4 的列表,其中包含函数的所有参数。如果我们只是将一个列表传递给函数,则调用不起作用。

# 一个演示打包和解包需求的 Python 程序

# 一个接受 4 个参数并打印它们的示例函数。
def fun(a, b, c, d):
	print(a, b, c, d)

# 驱动程序代码
my_list = [1, 2, 3, 4]

# 这不起作用
fun(my_list)

输出 :

TypeError: fun() takes exactly 4 arguments (1 given)

解 

包我们可以使用 ***** 来解包列表,以便它的所有元素都可以作为不同的参数传递。

# 一个带有 4 个参数并打印的示例函数,
def fun(a, b, c, d):
	print(a, b, c, d)

# 驱动程序代码
my_list = [1, 2, 3, 4]

# 将列表解压缩为四个参数
fun(*my_list)

输出 :

(1, 2, 3, 4)

我们需要记住,参数的数量必须与我们为参数解包的列表的长度相同。

# 当 len(args) != 函数所需的实际参数没有时出错

args = [0, 1, 4, 9]
def func(a, b, c):
	return a + b + c
# 使用解包参数调用函数
func(*args)

输出:

Traceback (most recent call last):
  File "/home/592a8d2a568a0c12061950aa99d6dec3.py", line 10, in <module>
    func(*args)
TypeError: func() takes 3 positional arguments but 4 were given

作为另一个示例,考虑需要单独的开始和停止参数的内置 range() 函数。如果它们不能单独使用,请使用 *-operator 编写函数调用以将参数从列表或元组中解包出来:

>>>
>>> range(3, 6) # 带有单独参数的正常调用
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # 使用从列表中解包的参数调用
[3, 4, 5]

Packing 

当我们不知道需要将多少个参数传递给 python 函数时,我们可以使用 Packing 将所有参数打包到一个元组中。

# 演示打包使用的 Python 程序

# 此函数使用打包来汇总未知数量的参数
def mySum(*args):
	return sum(args)

# 驱动程序代码
print(mySum(1, 2, 3, 4, 5))
print(mySum(10, 20))

输出:

15 
30

上述函数 mySum() 执行“打包”以将此方法调用接收到的所有参数打包到一个变量中。一旦我们有了这个“打包”变量,我们就可以用它来做我们用普通元组做的事情。args[0] 和 args[1] 会分别给你第一个和第二个参数。由于我们的元组是不可变的,您可以将 args 元组转换为列表,以便您还可以修改、删除和重新排列 i 中的项目。

打包和拆包 

下面是一个显示打包和拆包的示例。

# 一个 Python 程序,用于演示打包和解包。

# 一个示例 python 函数,它接受三个参数并打印它们
def fun1(a, b, c):
	print(a, b, c)

# 另一个示例函数。
# 这是包装的一个例子。 传递给 fun2 的所有参数都打包到元组 *args 中。
def fun2(*args):

	# 将 args 元组转换为列表,以便我们修改它
	args = list(args)

	# 修改参数
	args[0] = 'Haiyong'
	args[1] = 'awesome'

	# 拆包参数并调用 fun1()
	fun1(*args)

# 驱动程序代码
fun2('Hello', 'beautiful', 'world!')

输出:

(Haiyong, awesome, world!)

用于字典

# 演示使用 ** 解包字典项的示例程序
def fun(a, b, c):
	print(a, b, c)

# 解包字典的调用
d = {'a':2, 'b':4, 'c':10}
fun(**d)

输出:

2 4 10

这里 ** 解压了与它一起使用的字典,并将字典中的项目作为关键字参数传递给函数。所以写“fun(1, **d)”就相当于写“fun(1, b=4, c=10)”。

# 一个 Python 程序,用于演示使用 ** 打包字典项
def fun(**kwargs):

	# kwargs 是一个字典
	print(type(kwargs))

	# 打印字典项目
	for key in kwargs:
		print("%s = %s" % (key, kwargs[key]))

# 驱动程序代码
fun(name="geeks", ID="101", language="Python")

输出:

<class 'dict'>
name = geeks
ID = 101
language = Python

应用和要点 :

  • 在套接字编程中用于向服务器发送大量请求。
  • 在 Django 框架中用于将变量参数发送到视图函数。
  • 有些包装函数需要我们传入可变参数。
  • 参数的修改变得容易,但同时验证不正确,因此必须小心使用它们。

到此这篇关于Python 变量教程之打包和解包参数的文章就介绍到这了,更多相关Python 打包解包参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django框架教程之中间件MiddleWare浅析

    Django框架教程之中间件MiddleWare浅析

    这篇文章主要给大家介绍了关于Django框架教程之中间件MiddleWare的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Django框架具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Opencv实现倾斜图片转正示例

    Opencv实现倾斜图片转正示例

    本文主要介绍了Opencv实现倾斜图片转正示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • tensorflow输出权重值和偏差的方法

    tensorflow输出权重值和偏差的方法

    本篇文章主要介绍了tensorflow输出权重值和偏差的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 简单的抓取淘宝图片的Python爬虫

    简单的抓取淘宝图片的Python爬虫

    这篇文章主要介绍了简单的抓取淘宝图片的Python爬虫,方法比较简单,推荐给小伙伴们参考下。
    2014-12-12
  • python用pip install时安装失败的一系列问题及解决方法

    python用pip install时安装失败的一系列问题及解决方法

    这篇文章主要介绍了python用pip install时安装失败的一系列问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • python数据封装json格式数据

    python数据封装json格式数据

    本次内容是小编在网上整理的关于如何python数据封装json格式的内容总结,有兴趣的读者们参考下。
    2018-03-03
  • Python学习之异常处理详解

    Python学习之异常处理详解

    正常情况下,我们的程序是自上而下的逐行执行,执行到最后一行才会终止程序的执行。而异常的情况会导致我们的程序半途而废停止了执行。本文将通过示例详细讲解Python中的异常处理,感兴趣的可以学习一下
    2022-03-03
  • python中entry用法讲解

    python中entry用法讲解

    在本篇文章里小编给大家整理的是一篇关于python中entry用法讲解内容,有兴趣的朋友们可以学习参考下。
    2020-12-12
  • Python二叉树的定义及常用遍历算法分析

    Python二叉树的定义及常用遍历算法分析

    这篇文章主要介绍了Python二叉树的定义及常用遍历算法,结合实例形式分析了基于Python的二叉树定义与先序、中序、后序、层序等遍历方法,需要的朋友可以参考下
    2017-11-11
  • Python入门教程(三十一)Python的Try和Except

    Python入门教程(三十一)Python的Try和Except

    这篇文章主要介绍了Python入门教程(三十一)Python的Try Except,当我们调用Python并发生错误或异常时,通常会停止并生成错误消息,
    可以使用try语句处理这些异常,需要的朋友可以参考下
    2023-05-05

最新评论