Python基础——解包与封包

作者: Gaafung峰 | 来源:发表于2020-03-09 16:58 被阅读0次

1.python封包

将多个值赋值给一个变量时,Python会自动将这些值封装成元组,这个特性称之为封包

a = 1,2,3
print(a,type(a))

返回

(1, 2, 3) <class 'tuple'>

当函数返回多个值时,利用1个变量接收,也会形成同样封包

def test():
    return 1,2,3
a = test()
print(a,type(a))

2.python解包

与封包相反,经常使用,返回值为多个时,需要多个变量对应接收返回值,这一过程叫做封包。

2.1 接收函数返回值

def test():
    return 1,2,3
a,b,c = test()
print(a,b,c)
1 2 3

那如果用2个变量接收3个返回值是否可以呢?

def test():
    return 1,2,3
a, b = test()
print(a, b)

很显然,需要一点小技巧

def test():
    return 1,2,3
a, *b = test()
print(a, b)
1 [2, 3]

b变量前面的星号,使它不限制接收返回值
道理与传递参数的*args,不限定传递的参数个数一样,后文会讲。

2.2 遍历字典

my_dic = {
'一': 1,
'二': 2,
'三': 3
}

for item in my_dic.items():
    print(item)

# 解包
for key, value in my_dic.items():
    print(key, value)
('一', 1)
('二', 2)
('三', 3)
一 1
二 2
三 3

2.3 传递参数

def func(*args):
    print(sum(args))


a = (2, 4, 6)
func(*a) # 将元组解包成可变参数

def func_2(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

b = {'一': 1, '二': 2}
func_2(**b) # 将字典解包成关键字参数

一个* 代表传递可变参数,两个** 代表传递关键字参数,且可将字典解包成关键字参数

将字典解包成关键字参数,应用场景非常多,如下:

import pandas as pd
file = {"io": r"C:\Users\Administrator\Desktop\111.xlsx","dtype":"str"}
df = pd.read_excel(**file)
df.head()

好处是,一次性可以传入多个参数,只要参数名对应正确即可

2.4 合并两个字典

dic_1 = {'一': 1}
dic_2 = {'二': 2}
print(*dic_1)
print({**dic_1})
dic_3 = {**dic_1, **dic_2}
print(dic_3) # {'一': 1, '二': 2}
一
{'一': 1}
{'一': 1, '二': 2}

很显然,一个 * 获取key值,两个 * 获取key和value值,但是value值必须依托key值存在,故需要{}封装

相关文章

  • Python基础——解包与封包

    1.python封包 将多个值赋值给一个变量时,Python会自动将这些值封装成元组,这个特性称之为封包 返回 当...

  • 20.11.13 封包解包

    1. 封包(packing)与解包(unpacking) 1.1. 概念 封包:把多个值赋值给一个变量时,Pyth...

  • Python快速精通2 - 序列,字典代码部分

    Python3基础2:序列(列表,元组)与字典 (一)序列通用方法 序列封包 本质上: 变量 < - - 元组看下...

  • 内置数据结构-封包解包

    解包,个人理解就是对序列进行拆分,赋值给对应的变量最经典的莫过于两个数交换,一般我们是通过一个中间变量把两个数交换...

  • 2018-04-07

    # Python序列解包

  • Socket连接、心跳、重连、解包(粘包、断包)

    上篇已经准备好了基本的条件,接下来就是如何与服务器之间建立一条长连接,以及如何封包、解包; 新建LXSocketM...

  • python 解包

    一个序列是一个整体,把序列中的个体元素一个一个剥离出来的过程,可以称之为解包 1、将list中的每一个元素赋值给对...

  • 【SWIFT】if let用法

    swift里面有optional可选类型情况,也叫封包处理可以通过if let进行解包 判断非空的情况才把值取出来...

  • python 装包与解包

    *args和 **kwargs的两大重要知识点:装包与解包1、*args是用于接收多余的未命名参数,**kwarg...

  • python开发大全、系列文章、精品教程

    python基础教程 python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、...

网友评论

    本文标题:Python基础——解包与封包

    本文链接:https://www.haomeiwen.com/subject/uyipdhtx.html