首頁 > 軟體

Python程式碼顯得Pythonic(區別於其他語言的寫法)

2022-02-28 10:00:24

一、字串

對於字串連線,相比於簡單的+,更pythonic的做法是儘量使用%操作符或者format函數格式化字串。

name = "jack"
n = 90
 
# no
x = 'name: ' + name + '; score: ' + str(n)
    
# yes 
x = 'name: %s; score: %d' % (name, n)
x = 'name: {}; score: {}'.format(name, n)

避免在迴圈中用+和+=操作符來累加字串。

由於字串是不可變的, 這樣做會建立不必要的臨時物件, 並且導致二次方而不是線性的執行時間。

比較pythonic的做法是將每個子串加入列表, 然後在迴圈結束後用.join 連線列表。

# no
a = ""
for i in ["a", "b", "c"]:
    a += i
    
# yes
a = "".join(["a", "b", "c"])

二、運算

python支援鏈式運算,pythonic的做法是優先鏈式運算,而不是使用and、or。

# no
a=1, b=1, c=1
if a > 1 and a < 2:
    pass
 
# yes
a=b=c=1
if 1 < a <2:
    pass

三、賦值

python 中的變數不需要宣告。每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。

在 python 中,變數就是變數,它沒有型別,我們所說的"型別"是變數所指的記憶體中物件的型別。

python允許你同時為多個變數賦值。

a, b, c = 1, "a", 2
print(c)

這個特性的一個運用是,在不引入第三個變數的情況下,交換兩個變數的值,非常優雅

a, b = b, a

當某函數有多個返回值,但只想獲取其中某值時,pythonic的做法是使用“_”在賦值時代替我們不需要的變數的位置。

# func函數有兩個返回值,但只想要第一個
need, _ = func(*args) 

四、變數命名

Python最基本的命名規則是:第一個字元必須是字母表中字母或下劃線 _,識別符號的其他的部分由字母、數位和下劃線組成,且對對大小寫敏感。

python對變數命名時應避免變數名過長。

此外,對於較長的變數名,更 pythonic 的做法是用下劃線 _ 連線,如some_var,而非鞍型(大駝峰、小駝峰)格式,如 someVar

# no
SomeVar = 1
 
# yes
some_var = 1

五、提升程式碼可讀性

有一些寫法是Python允許的,但是卻不被推薦的,因為這些寫法會降低程式碼的可讀性。

(一)避免用分號;在一行內些多條語句

例如:

import sys; x = 'hello'; sys.stdout.write(x + 'n')

的可讀性,遠遠弱於

import sys
 
x = 'hello'
sys.stdout.write(x + 'n')

(二)避免用符號來換行

如果程式碼包含在括號、方括號或大括號中,Python將會認為程式碼是一行的:

def function(arg_one, arg_two,
             arg_three, arg_four):
    return arg_one

因此,為了提升可讀性,我們應儘量避免用符號進行換行:

from mypkg import example1, 
    example2, example3

這種方式的可讀性比用括號換行的可讀性低很多。

(三)if-else 三元表示式

下面是一個if-else 三元表示式,可以將 if-else 放在一行

value_when_true if condition_is_ture else value_when_condition_is_false

例如:

a = "Hello" if foo() else "Goodbye"

我們可以用三元表示式來把if else 放在一行寫,但是不要把 if-elif-else 放在一行寫:

  • 一方面,這樣做會使得一行程式碼變得過長,違反PER-8的書寫規則:規定一行程式碼最長不能超過80個字元。
  • 另一方面,這麼寫也違反了Python之禪:‘可讀性為王’。
  • 最後,Python 的語法也不支援這樣x寫。

因此,當我們需要用到 elif 的時候,我們需要寫一個常規的、換行的 if-elif-else 表示式

到此這篇關於Python程式碼顯得Pythonic(區別於其他語言的寫法)的文章就介紹到這了,更多相關Python程式碼顯得Pythonic內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com