日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
讓你的代碼更賞心悅目,介紹10個(gè)重要的Python技巧

導(dǎo)讀:

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、主機(jī)域名、網(wǎng)頁(yè)空間、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

Python可以說(shuō)是近5年來(lái)增長(zhǎng)速度最快、應(yīng)用最廣泛的,并且是世界范圍內(nèi)最受歡迎的編程語(yǔ)言之一;

今天,我來(lái)給大家講講10個(gè)我個(gè)人覺(jué)得非常實(shí)用,但并不是所有人都知道的Python編程技巧;

保持這些良好的編程習(xí)慣,可以讓我們寫(xiě)出更清晰、更優(yōu)雅、更易讀、更加賞心悅目的代碼;

Python語(yǔ)言在設(shè)計(jì)之初,其實(shí)就有在考慮他語(yǔ)法的簡(jiǎn)潔性和可讀性;

可能有人聽(tīng)說(shuō)過(guò)Python之禪(Zen of Python);

這其實(shí)是Tim Peter在Python中留下的一個(gè)彩蛋;

如果你進(jìn)入Python,輸入Import this,你會(huì)看到作者留下的一條條編程建議,其中列出的這20條規(guī)則,就是在告訴你Python程序編寫(xiě)的指導(dǎo)方針;

另外,不知道大家有沒(méi)有聽(tīng)說(shuō)過(guò)Pythonic這個(gè)詞,他其實(shí)也是指的是Python具有獨(dú)特風(fēng)格、簡(jiǎn)潔而優(yōu)雅的代碼;

最后,甚至在Python語(yǔ)言的提案PEP8中,也定義了一條條讓代碼更清晰、更簡(jiǎn)潔的代碼規(guī)范;

這里我篩選出10個(gè)重要的技巧,這里就用實(shí)例一一講解一些吧:

一、變量的交換

 
 
 
 
  1. a = 1 
  2. b = 2 
  3. 如果我們需要交換a 和 b中的內(nèi)容 
  4. 我們通??梢远x一個(gè)臨是變量tmp
  5. tmp = a  
  6. a = b 
  7. b = tmp

先將a 的內(nèi)容存放在其中,然后將a 設(shè)置成b,再將b 設(shè)置成這個(gè)臨時(shí)的變量;

不過(guò)上面這段代碼其實(shí)在Python中可以被改寫(xiě)成這樣:這樣的話,程序的可讀性就提高了很多;

 
 
 
 
  1. a = 1 
  2. b = 2 
  3. a, bb = b, a

二、字符串的格式化

 
 
 
 
  1. name = "Chan" 
  2. print("Hi, I'm" + name) 

通常我們?cè)诔绦蛑行枰M合或拼接字符串的話,我們用加號(hào)來(lái)做字符串的連接,如果做兩個(gè)字符串的連接,這樣做其實(shí)并沒(méi)有什么問(wèn)題,但如果字符串比較多的話,類似這種情況:

 
 
 
 
  1. name = "Chan" 
  2. country = "China" 
  3. age = 23 
  4. print("Hi, I'm " + name + ". I'm from " + country + ". And I'm " + str(age) + "."

這樣的程序就會(huì)顯得非常的雜亂并且不易閱讀;而且,當(dāng)我們?cè)谶B接整形數(shù)據(jù)的時(shí)候,還需要進(jìn)行類型的轉(zhuǎn)化,不然程序會(huì)報(bào)錯(cuò)。

其實(shí),我們可以把程序?qū)懗蛇@個(gè)樣子,利用Python的百分號(hào)語(yǔ)法來(lái)格式化字符串,其中%s代表這里會(huì)被替代成一個(gè)字符串,%d表示這里會(huì)被替換成一個(gè)替換成一個(gè)十進(jìn)制,最后面括號(hào)內(nèi)里的內(nèi)容表示會(huì)被替換的內(nèi)容:

 
 
 
 
  1. name = "Chan" 
  2. country = "China" 
  3. age = 23 
  4. print("Hi, I'm %s. I'm from %s. And I'm %d." % (name,country,age))

雖然程序?qū)懗蛇@樣已經(jīng)好看很多了,但是我們?cè)谶@里還可以做的更好一些,我們可以利用python中的format函數(shù)和花括號(hào)語(yǔ)法,把程序?qū)懗上旅孢@樣:

花括號(hào)里面的內(nèi)容會(huì)被替換成format函數(shù)中傳入的各個(gè)參數(shù);

 
 
 
 
  1. name = "Chan" 
  2. country = "China" 
  3. age = 23 
  4. print("Hi, I'm {}. I'm from {}. And I'm {}.".format (name,country,age))

花括號(hào)里面的內(nèi)容會(huì)被替換成format函數(shù)中傳入的各個(gè)參數(shù),使用這個(gè)函數(shù)好處是:

你可以在花括號(hào)中寫(xiě)入被替代的索引,同個(gè)索引的地方會(huì)被替換成同一個(gè)內(nèi)容,像下面這樣:

 
 
 
 
  1. name = "Chan" 
  2. print("Hi, I'm {0}. And I'm {0}.".format (name)) 
  3. 結(jié)果:Hi, I'm Chan. And I'm Chan

最后一種,也是我最喜歡的,叫做f-string,我們只需要在字符串開(kāi)頭寫(xiě)一個(gè)f,花括號(hào)中的內(nèi)容就會(huì)被自動(dòng)替換成指定表達(dá)式的值,注意是表達(dá)式:

 
 
 
 
  1. name = "Chan" 
  2. country = "China" 
  3. age = 23 
  4. print(f"Hi, I'm {name}. I'm from {country}. And I'm {age+1}."

三、Python中Yield語(yǔ)法

比如在這里,我們定義了一個(gè)fibonacci()函數(shù),來(lái)列舉斐波那契數(shù)列的前n位:0、1、1、2、3、5...

 
 
 
 
  1. def fibonacci(n): 
  2.     a = 0 
  3.     b = 1 
  4.     nums = [] 
  5.     for _ in range(n): 
  6.         nums.appends(a) 
  7.         a, bb = b, a+b 
  8.     return nums 
  9. for i in fibonacci(10): 
  10.     print(i)

我們可以修改這個(gè)fibonacci()函數(shù)來(lái)使用Python中的yield語(yǔ)法:

首先把a(bǔ)ppend改寫(xiě)成yield;

然后刪除num列表;

這樣程序會(huì)和以上是一樣的,yield a表示,每當(dāng)我們計(jì)算出一個(gè)元素,就立馬將這個(gè)元素送出去;并不需要等整個(gè)列表生成后再輸出;yield的優(yōu)勢(shì)是在一些非常耗時(shí)的操作,及時(shí)輸出;

 
 
 
 
  1. def fibonacci(n): 
  2.     a = 0 
  3.     b = 1
  4.      for _ in range(n): 
  5.         yield a  
  6.         a, bb = b, a+b 
  7.     return nums 
  8. for i in fibonacci(10): 
  9.     print(i)

四、列表解析式

比如我們有一系列水果的名字,存放在fruit列表里,如果我們希望把列表的內(nèi)容都改成大寫(xiě),我們可以有很多種辦法:

 
 
 
 
  1. fruit = ["apple", "pear", "orange", "banana"] 
  2. 第一種: 
  3. for i in range(len(fruit)):  
  4.     fruit[i] = fruit[i].upper()  
  5. 更簡(jiǎn)單的語(yǔ)法: 
  6. fruit = [x.upper for x in fruit]

方括號(hào)中for后面內(nèi)容是告訴python,我們需要枚舉fruit變量中的所有元素,而其中每個(gè)元素名稱叫做x,前半部分則是將x大寫(xiě)upper().

做個(gè)練習(xí),評(píng)論區(qū)可以說(shuō)說(shuō)這段代碼是什么意思:

 
 
 
 
  1. fruit = ["apple", "pear", "orange", "banana"] 
  2. new_fruit = [x for x in fruit if x.startwith("a")]

五:Enumerate函數(shù)

使用4的例子,我們希望按順序輸出一個(gè)列表中的所有元素,我們可以使用下面方式:

 
 
 
 
  1. fruit = ["apple", "pear", "orange", "banana"] 
  2. for x in fruit: 
  3.     print(x)

如果我們希望得到每個(gè)值對(duì)用的索引值,比如apple是0,orange是2,我們可以使用Enumerate函數(shù),把程序改成這樣:

 
 
 
 
  1. fruit = ["apple", "pear", "orange", "banana"] 
  2. for i,x in enumerate(fruit): 
  3.     print(i,x)
  4. i是索引值,x是內(nèi)容值

六、反向遍歷

如果我們希望對(duì)列表從后往前依次輸出,那么應(yīng)該怎么做呢?

其實(shí)只要加入reversed函數(shù)就可以了:

 
 
 
 
  1. fruit = ["apple", "pear", "orange", "banana"] 
  2. for i,x in enumerate(reversed(fruit)):
  3.      print(i,x)

希望水果元素按照字母順序輸出,使用sorted函數(shù):

 
 
 
 
  1. fruit = ["apple", "pear", "orange", "banana"] 
  2. for i,x in enumerate(sorted(fruit)): 
  3.     print(i,x)

七、字典的合并操作

比如我們有兩個(gè)字典,存放不同用戶的用戶名和密碼,可以寫(xiě)一個(gè)程序,將兩個(gè)字典合并:

 
 
 
 
  1. a = {"ross":"123456","xiaoming":"xiao123"} 
  2. b = {"lili":"11111","nana":"123456"} 
  3. c = {} 
  4. for k in a : 
  5.     c[k] = a[k] 
  6. for k in b: 
  7.     c[k] = b[k]

我們可以將程序改寫(xiě)成:

 
 
 
 
  1. a = {"ross":"123456","xiaoming":"xiao123"} 
  2. b = {"lili":"11111","nana":"123456"} 
  3. c = {**a, **b}

兩個(gè)**號(hào)在python中稱為解包unpacking,意為將a和b的內(nèi)容都直接放入c中;

八、三元運(yùn)算符:

我們經(jīng)常會(huì)根據(jù)條件,將變量設(shè)置成不同的值:

 
 
 
 
  1. if score > 60: 
  2.    s = "pass"  
  3. else: 
  4.    s = "fail"

其實(shí)可以直接改成:

 
 
 
 
  1. s = "pass" if score > 60 else "fail"

這里的if...else稱為Python中的三元運(yùn)算符;

九、序列解包

我們定義一個(gè)變量,存儲(chǔ)名字的名和姓,如果我們想要單獨(dú)提取他們的姓和名,并存入不同變量,我們最簡(jiǎn)單的辦法就是使用split()函數(shù):

 
 
 
 
  1. Name = "Xiao Chen" 
  2. str_list = name.split() 
  3. first_name = str_list[0] 
  4. last_name = str_list[1]

其實(shí)這段代碼可以被改寫(xiě)成:

 
 
 
 
  1. Name = "Xiao Chen" 
  2. first_name,last_name = name.split()

我們直接將split()函數(shù)返回列表中的元素賦給first_name和last_name,這個(gè)操作在python中就被稱為序列解包,這里的序列不一定是列表,可以是元組,甚至是range;

十、With語(yǔ)句

如果我們想打開(kāi)某個(gè)文件,我們可以使用open函數(shù),打開(kāi)并讀取文件;

讀取后不要忘記關(guān)閉文件,如果不關(guān)閉,Python將一直占用這個(gè)文件的資源,直到程序退出為止;

 
 
 
 
  1. f = open("suchfils.txt", "r") 
  2. s = f.read() 
  3. f.close()

對(duì)于小腳本來(lái)說(shuō),這不是什么大事,但是,對(duì)于一個(gè)長(zhǎng)時(shí)間在服務(wù)器運(yùn)行的程序,系統(tǒng)資源很可能被吃光,系統(tǒng)程序就會(huì)崩潰;所以更好的習(xí)慣是使用Python的with語(yǔ)句,將程序改寫(xiě)成:

 
 
 
 
  1. with open("suchfils.txt", "r") as f: 
  2.      s = f.read()

這樣的話,就不用調(diào)用close函數(shù)了,執(zhí)行完,文件就會(huì)自動(dòng)關(guān)閉;

今天主要講了Python的一些小技巧,有興趣可以一起交流~


本文題目:讓你的代碼更賞心悅目,介紹10個(gè)重要的Python技巧
網(wǎng)頁(yè)網(wǎng)址:http://www.dlmjj.cn/article/djeipeg.html