_ 可用于占位,比如赋值的时候丢弃不需要使用的变量,如下所示:
>>> data = ['ACME', 50, 91.1, (2020, 3, 20)]
>>> _, shares, price, _ = data
>>> shares
50
>>> price
91.1*可以获取多个变量值作为一个列表获取值,如下所示:
>>> record = ('Swift', 'ilyzhaoxin@sina.com', '18571658411', '02787972208')
>>> name, email, *phone_numbers = record
>>> name
'Swift'
>>> email
'ilyzhaoxin@sina.com'
>>> phone_numbers
['18571658411', '02787972208']
>>> record = ('Swift', 'ilyzhaoxin@sina.com', '18571658411') #一个值
>>> name, email, *phone_numbers = record
>>> phone_numbers
['18571658411']
>>> record = ('Swift', 'ilyzhaoxin@sina.com') # 0个值
>>> name, email, *phone_numbers = record
>>> phone_numbers
[]*变量的属性永远都会是一个列表
1)星号表达式在迭代元素为可变长元组的序列时是很有用。
data = [
('swift', 1, 2),
('seizen', 'name'),
('swift', 2, 3),
]
def func1(x, y):
print('swift', x, y)
def func2(x):
print('seizens', x)
for tag, *args in data:
if tag == 'swift':
func1(*args)
elif tag == 'seizen':
func2(*args)
'''
swift 1 2
seizens name
swift 2 3
'''2) 星号在字符串操作中也很有用
>>> line = "seizen:x:1000:1000:seizen,,,:/home/seizen:/bin/bash"
>>> uname, *fields, homedir, sh = line.split(":")
>>> uname
'seizen'
>>> homedir
'/home/seizen'
>>> sh
'/bin/bash'*3)和_一起使用可丢弃一堆不要的变量属性值
>>> data = ['ACME', 50, 91.1, (2020, 3, 20)]
>>> name, *_, (year, *_) = data
>>> name
'ACME'
>>> year
2020