python解包
主要讲解python解包在函数中的应用,可以参考知乎链接,文章写的不错。
目录:
- 迭代器中使用
- 特殊符号使用
- 解包在函数中使用
参考:
python有趣的解包用法https://zhuanlan.zhihu.com/p/33896402
迭代器中使用
# list
name, age, date = ['ymz', 23, 'xxxx-xx-xx']
# turtle == const list
name, age ,date = ('ymz', 23, 'xxxx-xx-xx']
# dictionary
name, age, date = {'name':'ymz', 'age':23, 'data':'xxxx-xx-xx'} # name>>>'ymz' 只赋予value
a,b,c = {'a':1, 'b':2, 'c':3}.items() # a>>>('a', 1) 将(key, value}以turtle形式返回
# range
a, b, c = range(3) # a>>>0
# string
a,b,c = 'abc'
# generator
a,b,c = (x + 1 for x in range(3)) # a>>>1
_, *, **
的使用
# *用作省略单个元素
first, *new, last = [1, 2, 3, 4] # *new == [2, 3]
# **用作省略(key, value)含键值对的双元素,只能在函数中使用
# _用作删除不必要元素
name, *_, (*_, year) = ('ymz', 2, 3, (4, 5, 1998))
解包在函数中使用
在函数中我们经常能看到解包的使用,如下:
# 在形参中使用。
# 需要注意的是*前不能指定参数名,*后必须指定参数名。你可以理解为*后必须传递的为键值对,而你的a = 1其实传递的就是键值对
def myfun(a, *b, c):
return
myfun(1, 2, 3, 4, c = 5) # b == (2, 3, 4) turtle ; c == 5 int
def myfun2(**kv):
print(kv)
myfun2(name = "ymz", age = 23, weight = 60) # kv == {'name': 'ymz', 'age': 23, 'weight': 60}
# 在返回值中使用
def myfun(a, b):
return a, b
m, n = myfun(1, 2) # 返回一个元组(1, 2),分别解包给m, n