Python代碼顯得Pythonic(區(qū)別于其他語言的寫法)
一、字符串
對于字符串連接,相比于簡單的+,更pythonic的做法是盡量使用%操作符或者format函數(shù)格式化字符串。
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)避免在循環(huán)中用+和+=操作符來累加字符串。
由于字符串是不可變的, 這樣做會創(chuàng)建不必要的臨時對象, 并且導致二次方而不是線性的運行時間。
比較pythonic的做法是將每個子串加入列表, 然后在循環(huán)結束后用.join 連接列表。
# no a = "" for i in ["a", "b", "c"]: ? ? a += i ? ?? # yes a = "".join(["a", "b", "c"])
二、運算
python支持鏈式運算,pythonic的做法是優(yōu)先鏈式運算,而不是使用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 中的變量不需要聲明。每個變量在使用前都必須賦值,變量賦值以后該變量才會被創(chuàng)建。
在 python 中,變量就是變量,它沒有類型,我們所說的"類型"是變量所指的內(nèi)存中對象的類型。
python允許你同時為多個變量賦值。
a, b, c = 1, "a", 2 print(c)
這個特性的一個運用是,在不引入第三個變量的情況下,交換兩個變量的值,非常優(yōu)雅
a, b = b, a
當某函數(shù)有多個返回值,但只想獲取其中某值時,pythonic的做法是使用“_”在賦值時代替我們不需要的變量的位置。
# func函數(shù)有兩個返回值,但只想要第一個 need, _ = func(*args)?
四、變量命名
Python最基本的命名規(guī)則是:第一個字符必須是字母表中字母或下劃線 _,標識符的其他的部分由字母、數(shù)字和下劃線組成,且對對大小寫敏感。
python對變量命名時應避免變量名過長。
此外,對于較長的變量名,更 pythonic 的做法是用下劃線 _ 連接,如some_var,而非鞍型(大駝峰、小駝峰)格式,如 someVar。
# no SomeVar = 1 ? # yes some_var = 1
五、提升代碼可讀性
有一些寫法是Python允許的,但是卻不被推薦的,因為這些寫法會降低代碼的可讀性。
(一)避免用分號;在一行內(nèi)些多條語句
例如:
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的書寫規(guī)則:規(guī)定一行代碼最長不能超過80個字符。
- 另一方面,這么寫也違反了Python之禪:‘可讀性為王’。
- 最后,Python 的語法也不支持這樣x寫。
因此,當我們需要用到 elif 的時候,我們需要寫一個常規(guī)的、換行的 if-elif-else 表達式
到此這篇關于Python代碼顯得Pythonic(區(qū)別于其他語言的寫法)的文章就介紹到這了,更多相關Python代碼顯得Pythonic內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python opencv 讀取本地視頻文件 修改ffmpeg的方法
今天小編就為大家分享一篇python opencv 讀取本地視頻文件 修改ffmpeg的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python?遞歸式實現(xiàn)二叉樹前序,中序,后序遍歷
這篇文章主要介紹了Python?遞歸式實現(xiàn)二叉樹前序,中序,后序遍歷,更多相關資料,需要的小伙伴可以參考下面具體的文章內(nèi)容2022-03-03
關于python與opc ua Expert endpoint連接的問題
這篇文章主要介紹了關于python與opc ua Expert endpoint連接的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02

