目录
背景解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
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")
输出:
name = geeks
ID = 101
language = Python
应用和要点 :
在套接字编程中用于向服务器发送大量请求。在 Django 框架中用于将变量参数发送到视图函数。有些包装函数需要我们传入可变参数。参数的修改变得容易,但同时验证不正确,因此必须小心使用它们。到此这篇关于Python 变量教程之打包和解包参数的文章就介绍到这了,更多相关Python 打包解包参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 2现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 3如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 4AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 5转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 6充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 7好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 8名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 9亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 10京东绿色建材线上平台上线 新增用户70%来自下沉市场