網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、字符串
對(duì)于字符串連接,相比于簡(jiǎn)單的+,更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)中用+和+=操作符來(lái)累加字符串。
由于字符串是不可變的, 這樣做會(huì)創(chuàng)建不必要的臨時(shí)對(duì)象, 并且導(dǎo)致二次方而不是線(xiàn)性的運(yùn)行時(shí)間。
比較pythonic
的做法是將每個(gè)子串加入列表, 然后在循環(huán)結(jié)束后用.join
連接列表。
# no a = "" for i in ["a", "b", "c"]: ? ? a += i ? ?? # yes a = "".join(["a", "b", "c"])
二、運(yùn)算
python
支持鏈?zhǔn)竭\(yùn)算,pythonic
的做法是優(yōu)先鏈?zhǔn)竭\(yùn)算,而不是使用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
中的變量不需要聲明。每個(gè)變量在使用前都必須賦值,變量賦值以后該變量才會(huì)被創(chuàng)建。
在 python 中,變量就是變量,它沒(méi)有類(lèi)型,我們所說(shuō)的"類(lèi)型"是變量所指的內(nèi)存中對(duì)象的類(lèi)型。
python
允許你同時(shí)為多個(gè)變量賦值。
a, b, c = 1, "a", 2 print(c)
這個(gè)特性的一個(gè)運(yùn)用是,在不引入第三個(gè)變量的情況下,交換兩個(gè)變量的值,非常優(yōu)雅
a, b = b, a
當(dāng)某函數(shù)有多個(gè)返回值,但只想獲取其中某值時(shí),pythonic
的做法是使用“_”在賦值時(shí)代替我們不需要的變量的位置。
# func函數(shù)有兩個(gè)返回值,但只想要第一個(gè) need, _ = func(*args)?
四、變量命名
Python
最基本的命名規(guī)則是:第一個(gè)字符必須是字母表中字母或下劃線(xiàn) _,標(biāo)識(shí)符的其他的部分由字母、數(shù)字和下劃線(xiàn)組成,且對(duì)對(duì)大小寫(xiě)敏感。
python對(duì)變量命名時(shí)應(yīng)避免變量名過(guò)長(zhǎng)。
此外,對(duì)于較長(zhǎng)的變量名,更 pythonic
的做法是用下劃線(xiàn) _ 連接,如some_var
,而非鞍型(大駝峰、小駝峰)格式,如 someVar
。
# no SomeVar = 1 ? # yes some_var = 1
五、提升代碼可讀性
有一些寫(xiě)法是Python
允許的,但是卻不被推薦的,因?yàn)檫@些寫(xiě)法會(huì)降低代碼的可讀性。
(一)避免用分號(hào);在一行內(nèi)些多條語(yǔ)句
例如:
import sys; x = 'hello'; sys.stdout.write(x + '\n')
的可讀性,遠(yuǎn)遠(yuǎn)弱于
import sys ? x = 'hello' sys.stdout.write(x + '\n')
(二)避免用\符號(hào)來(lái)?yè)Q行
如果代碼包含在括號(hào)、方括號(hào)或大括號(hào)中,Python將會(huì)認(rèn)為代碼是一行的:
def function(arg_one, arg_two, ? ? ? ? ? ? ?arg_three, arg_four): ? ? return arg_one
因此,為了提升可讀性,我們應(yīng)盡量避免用\符號(hào)進(jìn)行換行:
from mypkg import example1, \ ? ? example2, example3
這種方式的可讀性比用括號(hào)換行的可讀性低很多。
(三)if-else 三元表達(dá)式
下面是一個(gè)if-else
三元表達(dá)式,可以將 if-else 放在一行
value_when_true if condition_is_ture else value_when_condition_is_false
例如:
a = "Hello" if foo() else "Goodbye"
我們可以用三元表達(dá)式來(lái)把if else 放在一行寫(xiě),但是不要把 if-elif-else 放在一行寫(xiě):
- 一方面,這樣做會(huì)使得一行代碼變得過(guò)長(zhǎng),違反PER-8的書(shū)寫(xiě)規(guī)則:規(guī)定一行代碼最長(zhǎng)不能超過(guò)80個(gè)字符。
- 另一方面,這么寫(xiě)也違反了Python之禪:‘可讀性為王’。
- 最后,Python 的語(yǔ)法也不支持這樣x寫(xiě)。
因此,當(dāng)我們需要用到 elif 的時(shí)候,我們需要寫(xiě)一個(gè)常規(guī)的、換行的 if-elif-else
表達(dá)式
原文鏈接:https://blog.csdn.net/weixin_56659172/article/details/123146037
相關(guān)推薦
- 2023-05-30 Pandas.concat連接DataFrame,Series的示例代碼_python
- 2022-12-23 kotlin延遲初始化和密封類(lèi)詳細(xì)講解_Android
- 2022-05-11 Synchronized鎖優(yōu)化
- 2022-04-03 Python實(shí)現(xiàn)對(duì)相同數(shù)據(jù)分箱的小技巧分享_python
- 2022-07-19 Git Clone命令直接使用用戶(hù)名密碼Clone
- 2022-11-28 如何將python代碼生成API接口_python
- 2022-11-04 React項(xiàng)目中使用Redux的?react-redux_React
- 2021-12-13 C語(yǔ)言輸出唯一的子串_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支