这几天没写代码,
练一下代码。
找的书是<python cookbook>第三版的电子书。
*这个操作符,运用得好,确实少很多代码,且清晰易懂。
p = (4, 5)x, y = pprint(x)print(y)s = 'Hello'a, b, c, d, e = sprint(a, b, c)data = ['ACME', 50, 91.1, (2012, 12, 21)]_, shares, price, _ = dataprint(shares, price)def drop_first_last(grades): first, *middle, last = grades return middleprint(drop_first_last([23, 34, 45, 56, 67, 78, 12, 23]))record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')name, email, *phone_numbers = recordprint(name, email, phone_numbers)*trailing_qtrs, current = [10, 8, 7, 1, 9, 5, 10, 3]trailing_avg = sum(trailing_qtrs) / len(trailing_qtrs)print(current, trailing_avg)records = [ ('foo', 1, 2), ('bar', 'hello'), ('foo', 3, 4),]def do_foo(x, y): print('foo', x, y)def do_bar(s): print('bar', s)for tag, *args in records: if tag == 'foo': do_foo(*args) elif tag == 'bar': do_bar(*args)line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false'uname, *fields, homedir, sh = line.split(':')print(uname, homedir, sh)record = ('ACME', 50, 123.45, (12, 18, 2012))name, *_, (*_, year) = recordprint(name, year)items = [1, 10, 7, 4, 5, 9]head, *tail = itemsprint(head, tail)def sum(items): head, *tail = items return head + sum(tail) if tail else headprint(sum(items))
输出:
45H e l50 91.1[34, 45, 56, 67, 78, 12]Dave dave@example.com ['773-555-1212', '847-555-1212']3 7.142857142857143foo 1 2bar hellofoo 3 4nobody /var/empty /usr/bin/falseACME 20121 [10, 7, 4, 5, 9]36Process finished with exit code 0