現(xiàn)在Python越來越受程序員歡迎了,程序員用Python可以做哪些有趣的事情呢?
下面w3cschool就給小伙伴們介紹一下Python編程的5件趣事:
0.for-else用法
循環(huán)正常結(jié)束則執(zhí)行else語句。一般用于循環(huán)找符合條件的元素,如果找到則break調(diào)出循環(huán),不會觸發(fā)else;如果沒有找到(完整運行循環(huán))則print not found
1.or的用法
python中x or y表示如果x為真就是x的值,否則為y的值
我們會經(jīng)常看到類似這樣的用法(比如函數(shù)的一個value參數(shù)沒有設(shè)置默認值,這樣使用就允許它不賦值)
- value = value or {}
- # 相當于
- value = value if value else {}
2.and的用法
python中x and y表示如果x是假,結(jié)果就是x的值,否則就是y的值
x and y and z多個and連接時,如果全是真結(jié)果就是***一個的值;如果中間有假的值,結(jié)果就是***個假的值
舉一個例子
- def not_empty(a):
- return a and a.strip()
- not_empty(' a ')
- # 值為 'a'
- not_empty(None)
- # 不會報錯(如果 return a.strip() 就會報錯)
- # 在處理None的問題上相當于
- def not_empty(a):
- if a is None:
- return None
- else:
- return a.strip()
細細品味and和or的差別,他們邏輯類似,但是實現(xiàn)的功能是不可以相互替代的
or 是結(jié)果如果不滿意有個善后工作
and是要做一件事之前先檢驗一下,不能做就不讓它做。
3.單行if-else
- a = 1
- b = 3 if a == 1 else 2
- print('it is one' if a == 1 else 'no')
4.迭代器傳入函數(shù)中不用加括號
- # 一般是這樣
- a = (i for i in range(10))
- sum(a)
- # 我們可以這樣
- sum((i for i in range(10)))
- # 但我們還可以這樣
- sum(i for i in range(10))
- # 類似的有
- ' '.join(str(i) for i in range(10))
python有趣的解包用法
python中的解包可以這樣理解:一個list是一個整體,想把list中每個元素當成一個個個體剝離出來,這個過程就是解包,我們來看下面這些例子。
1.將list中每個元素賦值給一個變量
- >>> name, age, date = ['Bob', 20, '2018-1-1']
- >>> name
- 'Bob'
- >>> age
- 20
- >>> date
- '2018-1-1'
2.可迭代對象都可以這樣做
- # 列表
- >>> a,b,c = ['a', 'b', 'c']
- >>> a
- 'a'
- >>> a,b,c = enumerate(['a', 'b', 'c'])
- >>> a
- (0, 'a')
- # 元組
- >>> a,b,c = ('a', 'b', 'c')
- >>> a
- 'a'
- # 字典
- >>> a,b,c = {'a':1, 'b':2, 'c':3}
- >>> a
- 'a'
- >>> a,b,c = {'a':1, 'b':2, 'c':3}.items()
- >>> a
- ('a', 1)
- # 字符串
- >>> a,b,c = 'abc'
- >>> a
- 'a'
- # 生成器
- >>> a,b,c = (x + 1 for x in range(3))
- >>> a
- 1
如果可迭代對象包含的元素和前面待賦值變量數(shù)量不一致,則會報錯。但是可以通過*來表示多個元素
3.星號的使用
比如我們要計算平均分,去除***分和***分,除了用切片,還可以用解包的方式獲得中間的數(shù)值
- >>> first, *new, last = [94, 85, 73, 46]
- >>> new
- [85, 73]
用*來表示多個數(shù)值