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值存在,故需要{}封装