返回顶部
首页 > 资讯 > 后端开发 > Python >Python 变量教程之打包和解包参数
  • 635
分享到

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

2024-04-02 19:04:59 635人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录背景 解 Packing 打包和拆包 用于字典前言: 我们使用两个运算符 *(用于元组)和 **(用于字典)。 背景  考虑这样

前言:

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

背景 

考虑这样一种情况,我们有一个接收四个参数的函数。我们想调用这个函数,我们有一个大小为 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 打包解包参数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python 变量教程之打包和解包参数

本文链接: https://lsjlt.com/news/120032.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python 变量教程之打包和解包参数
    目录背景 解 Packing 打包和拆包 用于字典前言: 我们使用两个运算符 *(用于元组)和 **(用于字典)。 背景  考虑这样...
    99+
    2024-04-02
  • 习题13:参数,解包,变量
    练习下面的程序,后面将看到详细解释代码如下# coding: utf-8 __author__ = 'www.py3study.com' from sys impo...
    99+
    2023-01-30
    习题 变量 参数
  • Go基础教程系列之import导入包(远程包)和变量初始化详解
    import导入包 搜索路径 import用于导入包: import ( "fmt" "net/http" "mypkg" ) 编译器会根据上面指定的相对路...
    99+
    2024-04-02
  • python之程序打包
    18.1 Distutils基础 Distutils安装脚本from distutils.core import setupsetup(name='Hello',version='1.0',description='A simple exa...
    99+
    2023-01-31
    程序 python
  • python元组打包和解包过程详解
    在将多个以逗号分隔的值赋给一个变量时,多个值被打包成一个元组类型。当我们将一个元组赋给多个变量时,它将解包成多个值,然后分别将其赋给相应的变量。 # 打包 a = 1, 10, 100 print(type(a)...
    99+
    2022-06-02
    python 元组 打包 解包
  • Python变量教程之全局变量和局部变量
    目录前言全局变量全局关键字前言 全局变量是那些没有在任何函数内部定义并具有全局范围的变量,而局部变量是那些在函数内部定义的变量,其范围仅限于该函数。换句话说,我们可以说局部变量只能在...
    99+
    2024-04-02
  • 教你使用pyinstaller打包Python教程
    目录一、单个文件打包1.1 简单打包1.2 带图标打包二、项目多文件打包三、打包后文件太大一、单个文件打包 1.1 简单打包 例如现在有一个main.py文件内容如下 impor...
    99+
    2024-04-02
  • Python中打包和解包(*和**)的使用详解
    目录一、打包参数二、解包参数三、几点注意*和**在函数的定义和调用阶段,有着不同的功能,并且,*和**不能离开函数使用! 一、打包参数 * 的作用:在函数定义中,收集所有位置参数到一...
    99+
    2024-04-02
  • python中元组打包和解包的过程分析
    这篇文章主要讲解了“python中元组打包和解包的过程分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中元组打包和解包的过程分析”吧!在将多个以逗号分隔的值赋给一个变量时,多个...
    99+
    2023-06-20
  • Python打包为exe详细教程
    目录一、安装 → pyinstaller1.1 方式1:cmd1.2 方式2:Pycharm二、打包 → pyinstaller -F *.py2.1 执行命令2.2 文件目录三、可...
    99+
    2024-04-02
  • python的元组怎么打包和解包
    本篇内容主要讲解“python的元组怎么打包和解包”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python的元组怎么打包和解包”吧!1、在将多个以逗号分隔的值赋给一个变量时,多个值被打包成一个...
    99+
    2023-06-20
  • Python 基础教程之包和类的用法
    Python 基础教程之包和类的用法 建立一个文件夹filePackage 在filePackage 文件夹内创建 __init__.py 有了 __init__.py ,filePackage才算...
    99+
    2022-06-04
    基础教程 Python
  • python之黏包和黏包解决方案
    黏包现象主要发生在TCP连接, 基于TCP的套接字客户端往服务端上传文件,发送时文件内容是按照一段一段的字节流发送的,在接收方看来,根本不知道该文件的字节流从何处开始,在何处结束. 两种黏包现象: 1 连续的小包可能会被优化算法给组合到一...
    99+
    2023-01-30
    解决方案 python
  • Python学习之os包使用教程详解
    目录os 模块文件与目录函数介绍path 模块​path 模块常用方法今天我们来学习一下 python 的内置包 —> OS 包。OS 包拥有着普遍的操作系统功能,...
    99+
    2024-04-02
  • Python pyinstaller打包exe最完整教程
    目录 1 简介 2 安装 3 原理和打包效果 3.1 原理概述 3.2 搜索模块 3.3 打包效果概述 3.4 打包成单个文件夹 优点 缺点 3.5 打包成单个exe 优点 缺点 4 打包 4.1 基本语法 4.2 参数总览 位置参数 可选...
    99+
    2023-09-30
    python 开发语言
  • Python变量教程私有变量详解
    目录前言重整及其工作原理_单前导下划线__双前导下划线双前导和双尾下划线前言 Python 中,不存在只能在对象内部访问的“私有”实例变量。然而,大多数 Py...
    99+
    2024-04-02
  • ASP 教程中如何打包数组?
    ASP教程中如何打包数组? 在ASP开发中,经常需要使用数组来存储一组数据,但是当需要将这些数据传递给其他页面或者存储到数据库中时,需要将这个数组打包成字符串进行传递或者存储。本文将介绍ASP教程中如何打包数组。 一、使用Join函数 Jo...
    99+
    2023-08-02
    教程 打包 数组
  • Python学习之时间包使用教程详解
    目录datetime 时间包datetime 时间包的常用功能时间对象转字符串时间字符串转时间类型时间格式符time模块认识时间戳time 模块的常用方法datetime 中生成时间...
    99+
    2024-04-02
  • 怎么在python中解包参数
    本篇文章为大家展示了怎么在python中解包参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow...
    99+
    2023-06-14
  • python如何实现参数解包
    这篇文章主要介绍python如何实现参数解包,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!参数解包有时称为Splat或Scatter运算符*当需要将列表/元组中的参数解压缩以进行需要单独的位置参数的函数调用时,它们会...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作