Python 有什麼奇技淫巧

2021-09-26 08:54:04 字數 3503 閱讀 7282

本文就是對日常使用過的或者覺得很精妙的"奇技淫巧"的歸納總結。

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