目錄
技巧1 就地交換兩個數字
技巧2 比較運算子的連結。
技巧3 使用三元運算子進行條件賦值。
技巧4 使用多行字串
技巧5 將列表元素儲存到新變數中
技巧6 列印匯入模組的檔案路徑
技巧7 使用互動式「_」運算子
技巧8 字典/集合理解
技巧9 偵錯腳本
技巧10 設定檔案共用
Python 3.5.
技巧11 在 Python 中檢查物件
技巧12 簡化 if 語句
技巧13 在執行時間偵測 Python 版本
技巧14 组合多个字符串
技巧15 反转 string/list 的四种方法
反转列表本身
在循环中迭代时反转
反转一个字符串
使用切片反转列表
技巧16 玩枚举
技巧17 在 Python 中使用枚举。
技巧18 从函数返回多个值。
技巧19 使用 splat 运算符解包函数参数。
技巧20 使用字典来存储 switch。
技巧21 计算一行中任意数字的阶乘。
Python 3.x.
技巧22 查找列表中出现频率最高的值。
技巧23 重置递归限制。
技巧24 检查对象的内存使用情况。
技巧25 使用 __slots__ 减少内存开销。
技巧26 Lambda 模仿打印功能。
技巧27 从两个相关序列创建字典。
技巧28 在线搜索字符串中的多个前缀。
技巧29 形成一个统一的列表,不使用任何循环。
技巧30 在 Python 中实现真正的 switch-case 语句。
首頁 後端開發 Python教學 歸納整理三十個Python的實用技巧

歸納整理三十個Python的實用技巧

Mar 10, 2022 pm 05:47 PM
python

本篇文章為大家帶來了關於python的相關知識,其中主要總結了一些程式設計過程中常用到的使用技巧,包括了檢查物件、使用多行字串、從函數中傳回多個值等等相關內容,希望對大家有幫助。

歸納整理三十個Python的實用技巧

 推薦學習:python教學

技巧1 就地交換兩個數字

Python 提供了一種在一行中進行賦值和交換的直觀方式。請參考下面的例子。

x, y = 10, 20print(x, y)
 x, y = y, xprint(x, y)
 #1 (10, 20)#2 (20, 10)
登入後複製

右邊的賦值為一個新的元組播種。而左邊的立即將那個(未引用的)元組解包到名稱 <a><b>

分配完成後,新元組將被取消引用並標記為垃圾收集。變數的交換也發生在最終。


技巧2 比較運算子的連結。

比較運算子的聚合是另一個有時可以派上用場的技巧。

n = 10 result = 1 < n < 20 print(result) # True result = 1 > n <= 9 print(result) # False
登入後複製

技巧3 使用三元運算子進行條件賦值。

三元運算子是 if-else 語句的捷徑,也稱為條件運算子。

[on_true] if [expression] else [on_false]
登入後複製

以下是一些範例,您可以使用它們使程式碼緊湊簡潔。

下面的語句與它的意思相同,即「如果 y 為 9,則將 10 分配給 x,否則將 20 分配給 x 」。如果需要,我們可以擴展運算符的連結。

x = 10 if (y == 9) else 20
登入後複製

同樣,我們可以對類別物件做同樣的事情。

x = (classA if y == 1 else classB)(param1, param2)
登入後複製

在上面的例子中,classA 和 classB 是兩個類,其中一個類別建構子將會被呼叫。

下面是一個沒有的例子。加入評估最小數字的條件。

def small(a, b, c):
	return a if a <= b and a <= c else (b if b <= a and b <= c else c)
	print(small(1, 0, 1))print(small(1, 2, 2))print(small(2, 2, 3))print(small(5, 4, 3))#Output#0 #1 #2 #3
登入後複製

我們甚至可以在清單推導式中使用三元運算子。

[m**2 if m > 10 else m**4 for m in range(50)]#=> [0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401]
登入後複製

技巧4 使用多行字串

#基本方法是使用從 C 語言衍生的反斜線。

multiStr = "select * from multi_row \
where row_id < 5"print(multiStr)# select * from multi_row where row_id < 5
登入後複製

另一個技巧是使用三引號。

multiStr = """select * from multi_row 
where row_id < 5"""print(multiStr)#select * from multi_row #where row_id < 5
登入後複製

上述方法的共同問題是缺乏適當的縮排。如果我們嘗試縮進,它會在字串中插入空格。

所以最終的解決方案是將字串拆分成多行,並將整個字串括在括號中。

multiStr= ("select * from multi_row ""where row_id < 5 ""order by age") print(multiStr)#select * from multi_row where row_id < 5 order by age
登入後複製

技巧5 將列表元素儲存到新變數中

我們可以使用一個列表來初始化一個 no。的變數。在解壓縮列表時,變數的數量不應超過編號。列表中的元素。

testList = [1,2,3]x, y, z = testListprint(x, y, z)#-> 1 2 3
登入後複製

技巧6 列印匯入模組的檔案路徑

如果您想知道程式碼中匯入的模組的絕對位置,請使用下列技巧。

import threading 
import socketprint(threading)print(socket)#1- <module &#39;threading&#39; from &#39;/usr/lib/python2.7/threading.py&#39;>#2- <module &#39;socket&#39; from &#39;/usr/lib/python2.7/socket.py&#39;>
登入後複製

技巧7 使用互動式「_」運算子

這是一個有用的功能,我們很多人都不知道。

在 Python 控制台中,每當我們測試表達式或呼叫函數時,結果都會傳送到臨時名稱 _(下劃線)。

>>> 2 + 13>>> _3>>> print _3
登入後複製

“_”引用上次執行的表達式的輸出。


技巧8 字典/集合理解

就像我們使用列表推導一樣,我們也可以使用字典/集合推導。它們易於使用且同樣有效。這是一個例子。

testDict = {i: i * i for i in xrange(10)} testSet = {i * 2 for i in xrange(10)}print(testSet)print(testDict)
#set([0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
#{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
登入後複製

注意 -兩個語句中只有 <:> 的差別。此外,要在 Python3 中運行上述程式碼,請將 替換為 。


技巧9 偵錯腳本

我們可以在 模組的幫助下在 Python 腳本中設定斷點。請按照以下範例進行操作。

import pdb
pdb.set_trace()
登入後複製

我們可以在腳本的任何地方指定 並在那裡設定斷點。這是非常方便的。


技巧10 設定檔案共用

Python 允許執行 HTTP 伺服器,您可以使用它從伺服器根目錄共用檔案。下面是啟動伺服器的命令。

Python 2

python -m SimpleHTTPServer
登入後複製

Python 3

python3 -m http.server
登入後複製

以上指令將在預設連接埠 8000 上啟動伺服器。您也可以透過將自訂連接埠作為最後一個參數傳遞給上述命令來使用自訂連接埠。


技巧11 在 Python 中檢查物件

我們可以透過呼叫 dir() 方法來檢查 Python 中的物件。這是一個簡單的例子。

test = [1, 3, 5, 7]print( dir(test) )
登入後複製
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
登入後複製

技巧12 簡化 if 語句

要驗證多個值,我們可以透過以下方式進行。

if m in [1,3,5,7]:
登入後複製

#:

if m==1 or m==3 or m==5 or m==7:
登入後複製

或者,我們可以用'{1,3,5,7}' 而不是'[1,3,5,7]' 作為'in' 運算符,因為'set' 可以透過O(1) 存取每個元素。


技巧13 在執行時間偵測 Python 版本

有時,如果目前執行的 Python 引擎低於支援的版本,我們可能不想執行我們的程式。為此,您可以使用以下程式碼片段。它還以可讀格式列印目前使用的 Python 版本。

import sys#Detect the Python version currently in use.if not hasattr(sys, "hexversion") or sys.hexversion != 50660080:
    print("Sorry, you aren't running on Python 3.5\n")
    print("Please upgrade to 3.5.\n")
    sys.exit(1)
    #Print Python version in a readable format.print("Current Python version: ", sys.version)
登入後複製

或者,您可以在上面的程式碼中使用sys.version_info >= (3, 5)取代sys.hexversion!= 50660080。這是一位知情讀者的建議。

在 Python 2.7 上執行時的輸出。

Python 2.7.10 (default, Jul 14 2015, 19:46:27)[GCC 4.8.2] on linux
   
Sorry, you aren't running on Python 3.5Please upgrade to 3.5.
登入後複製

在 Python 3.5 上运行时的输出。

Python 3.5.1 (default, Dec 2015, 13:05:11)[GCC 4.8.2] on linux
   
Current Python version:  3.5.2 (default, Aug 22 2016, 21:11:05) [GCC 5.3.0]
登入後複製

技巧14 组合多个字符串

如果您想连接列表中所有可用的标记,请参见以下示例。

>>> test = ['I', 'Like', 'Python', 'automation']
登入後複製

现在,让我们从上面给出的列表中的元素创建一个字符串。

>>> print ''.join(test)
登入後複製

技巧15 反转 string/list 的四种方法

反转列表本身

testList = [1, 3, 5]testList.reverse()print(testList)#-> [5, 3, 1]
登入後複製

在循环中迭代时反转

for element in reversed([1,3,5]): print(element)#1-> 5#2-> 3#3-> 1
登入後複製

反转一个字符串

"Test Python"[::-1]
登入後複製

这使输出为“nohtyP tseT”

使用切片反转列表

[1, 3, 5][::-1]
登入後複製

上面的命令将输出 [5, 3, 1]。


技巧16 玩枚举

使用枚举器,在循环中很容易找到索引。

testlist = [10, 20, 30]for i, value in enumerate(testlist):
	print(i, ': ', value)#1-> 0 : 10#2-> 1 : 20#3-> 2 : 30
登入後複製

技巧17 在 Python 中使用枚举。

我们可以使用以下方法来创建枚举定义。

class Shapes:
	Circle, Square, Triangle, Quadrangle = range(4)print(Shapes.Circle)print(Shapes.Square)print(Shapes.Triangle)print(Shapes.Quadrangle)#1-> 0#2-> 1#3-> 2#4-> 3
登入後複製

技巧18 从函数返回多个值。

支持此功能的编程语言并不多。但是,Python 中的函数确实会返回多个值。

请参考以下示例以查看它的工作情况。

# function returning multiple values.def x():
	return 1, 2, 3, 4# Calling the above function.a, b, c, d = x()print(a, b, c, d)
登入後複製

#-> 1 2 3 4


技巧19 使用 splat 运算符解包函数参数。

splat 运算符提供了一种解压参数列表的艺术方式。为清楚起见,请参阅以下示例。

def test(x, y, z):
	print(x, y, z)testDict = {'x': 1, 'y': 2, 'z': 3} testList = [10, 20, 30]test(*testDict)test(**testDict)test(*testList)#1-> x y z#2-> 1 2 3#3-> 10 20 30
登入後複製

技巧20 使用字典来存储 switch。

我们可以制作一个字典存储表达式。

stdcalc = {
	'sum': lambda x, y: x + y,
	'subtract': lambda x, y: x - y}print(stdcalc['sum'](9,3))print(stdcalc['subtract'](9,3))#1-> 12#2-> 6
登入後複製

技巧21 计算一行中任意数字的阶乘。

Python 2.x.

result = (lambda k: reduce(int.__mul__, range(1,k+1),1))(3)print(result)#-> 6
登入後複製

Python 3.x.

import functools
result = (lambda k: functools.reduce(int.__mul__, range(1,k+1),1))(3)print(result)
登入後複製

#-> 6


技巧22 查找列表中出现频率最高的值。

test = [1,2,3,4,2,2,3,1,4,4,4]print(max(set(test), key=test.count))#-> 4
登入後複製

技巧23 重置递归限制。

Python 将递归限制限制为 1000。我们可以重置它的值。

import sys

x=1001print(sys.getrecursionlimit())sys.setrecursionlimit(x)print(sys.getrecursionlimit())#1-> 1000#2-> 1001
登入後複製

请仅在需要时应用上述技巧。


技巧24 检查对象的内存使用情况。

在 Python 2.7 中,32 位整数消耗 24 字节,而在 Python 3.5 中使用 28 字节。为了验证内存使用情况,我们可以调用 方法。

Python 2.7.

import sys
x=1print(sys.getsizeof(x))#-> 24
登入後複製

Python 3.5.

import sys
x=1print(sys.getsizeof(x))#-> 28
登入後複製

技巧25 使用 __slots__ 减少内存开销。

你有没有观察到你的 Python 应用程序消耗了大量资源,尤其是内存?这是使用<__slots__>类变量在一定程度上减少内存开销的一种技巧。

import sysclass FileSystem(object):

	def __init__(self, files, folders, devices):
		self.files = files
		self.folders = folders
		self.devices = devicesprint(sys.getsizeof( FileSystem ))class FileSystem1(object):

	__slots__ = ['files', 'folders', 'devices']
	
	def __init__(self, files, folders, devices):
		self.files = files
		self.folders = folders
		self.devices = devicesprint(sys.getsizeof( FileSystem1 ))#In Python 3.5#1-> 1016#2-> 888
登入後複製

显然,您可以从结果中看到内存使用量有所节省。但是当一个类的内存开销不必要地大时,你应该使用 __slots__ 。仅在分析应用程序后执行此操作。否则,您将使代码难以更改并且没有真正的好处。


技巧26 Lambda 模仿打印功能。

import sys
lprint=lambda *args:sys.stdout.write(" ".join(map(str,args)))lprint("python", "tips",1000,1001)#-> python tips 1000 1001
登入後複製

技巧27 从两个相关序列创建字典。

t1 = (1, 2, 3)t2 = (10, 20, 30)print(dict (zip(t1,t2)))#-> {1: 10, 2: 20, 3: 30}
登入後複製

技巧28 在线搜索字符串中的多个前缀。

print("http://www.baidu.com".startswith(("http://", "https://")))print("https://juejin.cn".endswith((".com", ".cn")))#1-> True#2-> True
登入後複製

技巧29 形成一个统一的列表,不使用任何循环。

import itertools
test = [[-1, -2], [30, 40], [25, 35]]print(list(itertools.chain.from_iterable(test)))#-> [-1, -2, 30, 40, 25, 35]
登入後複製

如果您有一个包含嵌套列表或元组作为元素的输入列表,请使用以下技巧。但是,这里的限制是它使用了 for 循环。

def unifylist(l_input, l_target):
    for it in l_input:
        if isinstance(it, list):
            unifylist(it, l_target)
        elif isinstance(it, tuple):
            unifylist(list(it), l_target)
        else:
            l_target.append(it)
    return l_target

test =  [[-1, -2], [1,2,3, [4,(5,[6,7])]], (30, 40), [25, 35]]print(unifylist(test,[]))#Output => [-1, -2, 1, 2, 3, 4, 5, 6, 7, 30, 40, 25, 35]
登入後複製

统一包含列表和元组的列表的另一种更简单的方法是使用 Python 的 < more_itertools > 包。它不需要循环。只需执行 < pip install more_itertools >,如果还没有的话。

import more_itertools

test = [[-1, -2], [1, 2, 3, [4, (5, [6, 7])]], (30, 40), [25, 35]]print(list(more_itertools.collapse(test)))#Output=> [-1, -2, 1, 2, 3, 4, 5, 6, 7, 30, 40, 25, 35]
登入後複製

技巧30 在 Python 中实现真正的 switch-case 语句。

这是使用字典来模仿 switch-case 构造的代码。

def xswitch(x): 
	return xswitch._system_dict.get(x, None) xswitch._system_dict = {'files': 10, 'folders': 5, 'devices': 2}print(xswitch('default'))print(xswitch('devices'))#1-> None#2-> 2
登入後複製

 推荐学习:python学习教程

以上是歸納整理三十個Python的實用技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

See all articles