Skip to content

Latest commit

 

History

History
93 lines (72 loc) · 1.66 KB

File metadata and controls

93 lines (72 loc) · 1.66 KB

1. _ 和 *

_ 可用于占位,比如赋值的时候丢弃不需要使用的变量,如下所示:

>>> 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