天天看點

python代碼常用技巧和方法

本文展示一些常用的python程式設計技巧,通過本文,讓你的代碼更加pythonic,讓天下沒有難寫的python。

1.條件表達式

#例如:
a = 10
b = 20
if a <= b:
    value = a
else:
    value = b
print(value)

#代碼很多,但是可以簡寫為
value = a if a <= b else b #首先對if後面的語句進行計算,最後在将value指派
print(value)

#在清單推導時,這種條件表達式非常有用,如:
values = [2,5,11,6,3,22,43,12,54,32,64]
cliped = [x if x < 30 else 30 for x in values]
print(cliped)
           
10
10
[2, 5, 11, 6, 3, 22, 30, 12, 30, 30, 30]
           

2.大數相加使用下劃線占位符

a = 10000000
b = 100000
c = a + b
print(c)

#使用下劃線方式
a = 10_000_000
b = 100_000
c = a + b
print(c)
print(f'{c:,}')
           
10100000
10100000
10,100,000
           

3.同時周遊多個清單,使用zip

#例如同時周遊下面三個清單
a = [1,2,3,4,5]
b = [6,7,8,9,10]
c = [10,11,12,13,14]

for a1,b1,c1 in zip(a,b,c): #zip将a,b,c中的元素打包成了元組,a1,b1,c1是解包操作,看下面
    print(a1, b1, c1)
    
print(20*'=')

for value in zip(a,b,c):
    print(value)
           
1 6 10
2 7 11
3 8 12
4 9 13
5 10 14
====================
(1, 6, 10)
(2, 7, 11)
(3, 8, 12)
(4, 9, 13)
(5, 10, 14)
           

4.解包(unpack)操作

#何為解包,例如:
a, b, c = (1, 2, 3) #可以為清單,元組
print(a, b, c)

#更多的解包操作
al = [1,3,4,5,6,7]
a, b, *c = al
print(a,b,c)

c, d, *e, f = al
print(c, d, e, f)
           
1 2 3
1 3 [4, 5, 6, 7]
1 3 [4, 5, 6] 7
           

5.為對象動态添加屬性

#建立對象之後為對象添加原本沒有的屬性,例如:

class dog(object): #一個沒有任何屬性和方法的類
    pass

d = dog()
setattr(d, 'dog_weight', 20) #為d設定dog_weight屬性
setattr(d, 'dog_color', 'yellow') #為d設定dog_color屬性
print(d.dog_weight, d.dog_color)
#擷取屬性
print(getattr(d, 'dog_weight'), getattr(d, 'dog_color'))

print(20*'=')
#如果有一個屬性字典,比如:
attr_dict = {'weight':20, 'color':'yellow', 'name':'little'}
#都需要設定在dog對象上,如何做呢?很簡單:
d2 = dog()
for k, v in attr_dict.items():
    setattr(d2, k, v)

for k in attr_dict.keys():
    print(getattr(d2, k))
           
20 yellow
20 yellow
====================
20
yellow
little
           

6.如何執行子產品,查閱子產品文檔

#在指令行中執行某個python子產品,如flask
python -m flask run

#檢視子產品提供的文檔,在指令行中:
help(flask)
#檢視子產品包含哪些方法屬性
dir(flask)
           

7 常用備忘

指定檔案編碼:# -*- coding:utf-8 -*-

生成虛拟環境中所有安裝的包:
(proenv) [email protected]:~/disk1/WORK$ pip freeze > virtual_env_package_list.txt

生成某個工程所依賴的包(需要先安裝pipreqs):
pip install pipreqs
(proenv) [email protected]:~/disk1/WORK$ pipreqs path/to/your/project/