本文就是對日常使用過的或者覺得很精妙的"奇技淫巧"的歸納總結。
python版問號表示式
x = 1
y = 2
print ('no','yes')[x==y]
no
這裡巧妙地利用了python會把false當做序列下標0、把true當做序列下標1的特性,把否定條件的輸出放在前面的元組的第乙個元素,而把肯定條件的輸出放在第二個元素。又比如:
a = [1,2,3]
print a[false]
print a[true]
12
此時是不是一幅"黑人問號"臉呢?
列表的深度拷貝
a = [1,2,3]
b = a[:]
print id(a)
print id(b)
c = a
print id(c)
59952144
60485304
59952144
提到深度拷貝,是不是一下子就想起來了copy.deepcopy()函式了?但是對於列表來講,深度拷貝根本不用那麼麻煩,只需像上面那樣:b = a[:]即可實現,就是這麼簡單。
注:如果a是元組,這樣玩是不可以的,切記!比如:
a = (1,2,3)
b = a[:]
print id(a)
print id(b)
59570456
59570456
可以看出a和b的id是相同的,那麼就想還是乖乖用copy.deepcopy()來拷貝吧:
a = (1,2,3)
b = copy.deepcopy(a)
print id(a)
print id(b)
60481864
60481864
但是結果又讓我們詫異了,這是因為元組是不可變物件,在記憶體中同乙個元組只會存在乙個,再怎麼深度拷貝也沒用(同為不可變物件的字串也是同理的)。
在命令列啟動乙個本地伺服器
開啟系統命令行,然後輸入命令
python -m ******httpserver 8000 (埠8000可以自己更改)(這是python的2.x版本的寫法)
python -m http.server 8000(這是python的3.x版本的寫法 )
把乙個字串寫在多行
s = ('abc'
'de'
'fgh'
)print s
abcdefgh
鏈式比大小
n = 1
print 0 < n < 5
print 9 > n < 5
print 0 > n < 5
print -1 > 0 < n < 5
true
true
false
false
動態匯入包
d = __import__('json').loads('')
print type(d)
print d
注:動態匯入包只在當前語句生效。
字典推導式
dic =
print dic
見過列表推導式、生成器推導式,那麼有沒有見過字典推導式呢?上面就是一例。
快速反轉字串
s = '123456'
print s[::-1]
654321
優雅地開啟檔案
with open('test.txt','r') as f:
content = f.read()
用with語句上下文管理器可以自動地管理檔案的開啟、關閉,不需手工干預。
else,不止是else
普通用法
a = -1
if a > 0:
print 'big'
else:
print 'small'
small
迴圈語句搭配else
import math
n = 97
for i in range(2,int(math.sqrt(n) + 2)):
if n % i == 0:
print ' is not a prime!'.format(n)
break
else:
print ' is a prime!'.format(n)
97 is a prime!
可見,如果迴圈中有break語句,且直到迴圈結束都沒有執行過break語句,那麼就會繼續走後面的else分支。
異常處理搭配else
try:
print 1/0
except exception as msg:
print str(msg)
else:
print 'all is ok!'
integer division or modulo by zero
try:
print 1/1
except exception as msg:
print str(msg)
else:
print 'all is ok!'
1all is ok!
可見,如果沒有發生異常,就會走else分支。
掃美女,加入對你負責的圈子
更多python實戰內容,推薦乙個python實戰圈。提供清晰的多系統學習路徑、快速學習運用python的圈子
,圈主是世界500強高階軟體工程師,多年編碼經驗。具體可以提供以下內容:
【基礎】0基礎入門python,24小時有人快速解答問題;
【提高】40多個專案實戰,老手可以從真實場景中學習python;
【直播】不定期直播專案案例講解,手把手教你如何分析專案;
【分享】優質python學習資料分享,讓你在最短時間獲得有價值的學習資源;圈友優質資料或學習分享,會不時給予讚賞支援,希望每個優質圈友既能賺回加入費用,也能快速成長,並享受分享與幫助他人的樂趣。
【人脈】收穫一群志同道合的朋友,並且都是python從業者
【**】本著布道思想,只需50元
加入能保證學習效果圈子
(國慶漲價至70)
位運算有什麼奇技淫巧?
計算機中的數在記憶體中都是以二進位制形式進行儲存的,用位運算就是直接對整數在記憶體中的二進位制位進行操作,因此其執行效率非常高,在程式中盡量使用位運算進行操作,這會大大提高程式的效能。int a 8 a 3 移位前 0000 0000 0000 0000 0000 0000 0000 1000 移位...
git 奇技淫巧
例如 1.0.0 git tag a 1.0.0 m 1.0.0 版本的備註資訊.複製 git push origin tags 複製 例如 1.0.0 git tag d 1.0.0 複製 刪除遠端標籤需要先刪除本地標籤,再執行下面的命令 git push origin refs tags 1.0...
C 之奇技淫巧
typedef struct data 0 pdata 0 typedef struct data 1 pdata 1 結構體data 0與data 1在性質上沒有什麼不同,它們的size是相等的,都是8.但在用法上有很大區別。例 pdata 0 stack0 pdata 0 malloc max ...