成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

讓你的代碼更賞心悅目,介紹10個重要的Python技巧

開發 后端
今天,我來給大家講講10個我個人覺得非常實用,但并不是所有人都知道的Python編程技巧。

導讀:

Python可以說是近5年來增長速度最快、應用最廣泛的,并且是世界范圍內最受歡迎的編程語言之一;

今天,我來給大家講講10個我個人覺得非常實用,但并不是所有人都知道的Python編程技巧;

保持這些良好的編程習慣,可以讓我們寫出更清晰、更優雅、更易讀、更加賞心悅目的代碼;

Python語言在設計之初,其實就有在考慮他語法的簡潔性和可讀性;

可能有人聽說過Python之禪(Zen of Python);

這其實是Tim Peter在Python中留下的一個彩蛋;

如果你進入Python,輸入Import this,你會看到作者留下的一條條編程建議,其中列出的這20條規則,就是在告訴你Python程序編寫的指導方針;

另外,不知道大家有沒有聽說過Pythonic這個詞,他其實也是指的是Python具有獨特風格、簡潔而優雅的代碼;

最后,甚至在Python語言的提案PEP8中,也定義了一條條讓代碼更清晰、更簡潔的代碼規范;

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

一、變量的交換 

  1. a = 1  
  2. b = 2  
  3. 如果我們需要交換a 和 b中的內容  
  4. 我們通常可以定義一個臨是變量tmp 
  5. tmp = a   
  6. a = b  
  7. b = tmp 

先將a 的內容存放在其中,然后將a 設置成b,再將b 設置成這個臨時的變量;

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

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

二、字符串的格式化 

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

通常我們在程序中需要組合或拼接字符串的話,我們用加號來做字符串的連接,如果做兩個字符串的連接,這樣做其實并沒有什么問題,但如果字符串比較多的話,類似這種情況: 

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

這樣的程序就會顯得非常的雜亂并且不易閱讀;而且,當我們在連接整形數據的時候,還需要進行類型的轉化,不然程序會報錯。

其實,我們可以把程序寫成這個樣子,利用Python的百分號語法來格式化字符串,其中%s代表這里會被替代成一個字符串,%d表示這里會被替換成一個替換成一個十進制,最后面括號內里的內容表示會被替換的內容: 

  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)) 

雖然程序寫成這樣已經好看很多了,但是我們在這里還可以做的更好一些,我們可以利用python中的format函數和花括號語法,把程序寫成下面這樣:

花括號里面的內容會被替換成format函數中傳入的各個參數; 

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

花括號里面的內容會被替換成format函數中傳入的各個參數,使用這個函數好處是:

你可以在花括號中寫入被替代的索引,同個索引的地方會被替換成同一個內容,像下面這樣: 

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

最后一種,也是我最喜歡的,叫做f-string,我們只需要在字符串開頭寫一個f,花括號中的內容就會被自動替換成指定表達式的值,注意是表達式: 

  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語法

比如在這里,我們定義了一個fibonacci()函數,來列舉斐波那契數列的前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) 

我們可以修改這個fibonacci()函數來使用Python中的yield語法:

首先把append改寫成yield;

然后刪除num列表;

這樣程序會和以上是一樣的,yield a表示,每當我們計算出一個元素,就立馬將這個元素送出去;并不需要等整個列表生成后再輸出;yield的優勢是在一些非常耗時的操作,及時輸出; 

  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列表里,如果我們希望把列表的內容都改成大寫,我們可以有很多種辦法: 

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

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

做個練習,評論區可以說說這段代碼是什么意思: 

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

五:Enumerate函數

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

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

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

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

六、反向遍歷

如果我們希望對列表從后往前依次輸出,那么應該怎么做呢?

其實只要加入reversed函數就可以了: 

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

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

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

七、字典的合并操作

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

  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] 

我們可以將程序改寫成: 

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

兩個**號在python中稱為解包unpacking,意為將a和b的內容都直接放入c中;

八、三元運算符:

我們經常會根據條件,將變量設置成不同的值: 

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

其實可以直接改成: 

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

這里的if...else稱為Python中的三元運算符;

九、序列解包

我們定義一個變量,存儲名字的名和姓,如果我們想要單獨提取他們的姓和名,并存入不同變量,我們最簡單的辦法就是使用split()函數: 

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

其實這段代碼可以被改寫成: 

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

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

十、With語句

如果我們想打開某個文件,我們可以使用open函數,打開并讀取文件;

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

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

對于小腳本來說,這不是什么大事,但是,對于一個長時間在服務器運行的程序,系統資源很可能被吃光,系統程序就會崩潰;所以更好的習慣是使用Python的with語句,將程序改寫成: 

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

這樣的話,就不用調用close函數了,執行完,文件就會自動關閉;

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

 

責任編輯:龐桂玉 來源: Python編程
相關推薦

2009-05-21 17:09:44

Linux迷你本賞心悅目

2010-03-01 15:05:39

WPF

2025-06-25 10:02:55

2020-05-07 17:03:49

Python編碼開發

2024-10-07 11:02:08

requests編程PythonAI

2024-01-08 17:09:07

Python解釋器CPython

2022-05-10 10:28:21

JavaScript代碼

2023-11-28 10:17:37

2024-05-20 10:00:00

代碼Python編程

2020-11-29 17:32:01

EmacsLinux

2025-02-17 08:50:00

CSS代碼JavaScript

2023-03-09 15:45:36

ES6編碼技巧數組

2022-10-31 07:09:15

拷貝代碼項目

2018-03-15 09:20:00

前端JSconsole

2024-10-08 10:24:41

Python編程語言

2022-01-06 22:31:21

Python技巧代碼

2011-04-28 16:55:07

電子商務網站設計網站

2024-09-18 05:00:00

Python代碼

2019-12-25 14:19:21

Python編程語言Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 自拍偷拍亚洲视频 | 一区二区三区国产在线观看 | 亚洲在线中文字幕 | 91视频网 | 国产精品久久久久久久免费大片 | 日韩精品视频在线 | 成人精品免费 | 国产一区二区三区在线 | 久久大陆| 久热精品在线播放 | 国产一级免费视频 | 国产成人精品一区二区 | 日韩中文字幕 | 一区二区三区高清不卡 | 天天射网站| 日韩三级免费网站 | 久久精品视频免费观看 | av在线一区二区三区 | 久久999| 欧美福利久久 | 少妇淫片aaaaa毛片叫床爽 | 精品一区久久 | 精品96久久久久久中文字幕无 | 久久国产精品一区 | 国产美女一区二区 | 日本亚洲一区 | 免费h视频 | 国产成人短视频在线观看 | 国产女人第一次做爰毛片 | 国产精品亚洲一区 | 北条麻妃一区二区三区在线视频 | 热re99久久精品国99热观看 | 狠狠色综合欧美激情 | 欧美日韩国产三级 | 国产在线一区二区 | 久久88 | 国产在线一区二区 | a级毛片毛片免费观看久潮喷 | 国产欧美日韩在线 | 亚洲精品一二三 | 欧美九九九 |