您必須知道的十個有用的Python一行程序
盡管自發布以來,Python已經走過了30年的歷史,但它仍然是現存的最相關的高級編程語言之一。許多開發人員會選擇使用這種語言來開發易于維護的應用程序,并且只需要很少的手工操作就可以在許多操作系統和Linux的發行版 .
Python最大的好處之一是它能夠繞過(完全是雙關語)其他語言中的許多約定,程序員只需付出很少的努力,就可以編寫非常簡單的小“妙語”來完成工作。下面舉幾個例子!
內容
- 1.交換變量
- 2.做一個快速餐巾階乘
- 3.初始化并聲明多個變量
- 4.打開并閱讀文件
- 6.創建一個數字范圍列表
- 7.顯示所有用戶(在Linux/Unix/BSD中)
- 8.生成隨機密碼
- 9.查找文本中任何內容的實例
- 10.將十六進制表達式轉換為明文
- 常見問題
1.交換變量
因為您不必處理像內存中的地址這樣繁瑣的事情,所以可以在一行代碼中完成變量之間的交換:
x, y = y, x
只需用逗號分隔每個變量,并交換它們!
這是這個概念在一個片段中的樣子:
x = 1
y = 4
x, y = y, x
print(x,y)
在控制臺中運行該命令應該會輸出“4 1”。
2.做一個快速餐巾階乘
Python的數學工具允許一些非常有創意的代碼執行復雜的計算。例如,找出一些物體排列方式的最快方法是什么?做階乘。與reduce()打電話,可以很快想出答案!
reduce(lambda a, b: a * b, range(1, x+1)
這個調用將計算您先前在“x”中定義的任何數字的階乘
不要忘記這一點reduce()是的組成部分Python的函數工具圖書館。代碼片段如下所示:
from functools import reduce
x = 12print(reduce(lambda a, b: a * b, range(1, x+1)))
您的控制臺應該從這個特定的計算中輸出479001600。繼續做你想做的“x ”!
3.初始化并聲明多個變量
Python的語法規則允許你做一些非常瘋狂的事情。例如,一次性初始化和聲明盡可能多的變量。這與逐行執行相反。
x, y, z = 16, 78, 195
把這些打印出來,你會得到“16 78 195”最棒的是,你甚至不必限制自己在一行中聲明一種類型的變量。將“y”聲明替換為類似“Hi”的字符串,就可以了!
4.打開并閱讀文件
Python要求您像在許多其他語言中一樣逐行遍歷文件。即便如此,它也讓您能夠在一行代碼中實現打開和讀取文件的全部功能:
[line.strip() for line in open('file.txt')]
現在,如果我只想顯示我自己的默認bash配置文件的文本,我會這樣寫:
[print(line.strip()) for line in open('/home/miguel/.bashrc')]
5.寫入文件
就像讀取文件一樣,用這種漂亮的語言編寫文件的過程非常簡單。
with open("file.txt",'a',newline='\n') as f: f.write("This is a new line in a file")
這隨著語句讓您避免了必須關閉文件句柄的麻煩。因此,當您的應用程序打開時,它不會與試圖訪問它的其他應用程序發生沖突。
您現在可以使用您學習的用于讀取文件的一行程序來檢查該行是否被正確添加!
[print(line.strip()) for line in open('file.txt')]
6.創建一個數字范圍列表
與LUA等其他腳本語言的工作方式類似,Python允許您生成預先填充的列表,只要操作導致可預測的結果。在這個代碼片段中,我們創建了一個10個整數的列表,范圍從0到9:
lst = [i for i in range(0,10)]
打印這個列表將產生一個逗號分隔的數字列表,其中包含我們前面討論過的參數。
7.顯示所有用戶(在Linux/Unix/BSD中)
想知道在您的特定Linux安裝中實際上有多少個用戶名嗎?Python有一個很好的方法,通過打開“/etc/passwd”文件,在一行中就可以做到這一點。在這種情況下,我們要做的就是從每行的第一個冒號(":")開始刪除所有內容。
print('\n'.join(line.split(":",1)[0] for line in open("/etc/passwd")))
如果您沒有仔細查看該文件,您可能會驚訝地發現,系統創建的用戶比您登錄時使用的用戶和根用戶多得多。
用戶列表通常有這么長,因為系統會根據您運行的服務創建自己的身份驗證形式。
8.生成隨機密碼
像任何自尊的語言一樣,Python允許你隨機化事情,但是它不能不更進一步,允許你在一行中生成密碼。誠然,這是一個非常漫長的過程..
pwd = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 %^*(-_=+)'; print(''.join([pwd[random.randint(0,len(pwd)-1)] for i in range(32)]))
這個特定的代碼片段將生成一個32個字符的密碼,允許使用空格。根據你的喜好調整。如果您出于某種原因不想在密碼中使用空格,請刪除字符串聲明中的空格。不要忘記導入“隨機”庫,否則你的代碼將無法工作!
9.查找文本中任何內容的實例
如果您正在閱讀一個較長的文件,并試圖找出其中有多少個特定表達式的實例,這就有點奇怪了:
import re; len(re.findall('d','The dumb lazy cat doesn\'t know how to hunt birds.'))
在這個特殊的例子中,我們試圖找出字母“d”在它后面的字符串中出現了多少次。通過打印輸出,控制臺讓我們知道這封信有3個實例。您可以使用整個單詞和在文件中搜索來實現這一點。
10.將十六進制表達式轉換為明文
通過一點迭代魔法,可以用一個簡單的表達式將十六進制代碼轉換成純文本:
print(''.join(chr(int(''.join(i), 16)) for i in zip(*[iter('576f772c2049276d2077726974696e6720696e2068657861646563696d616c21')]*2)))
里面的一大堆胡言亂語iter()是一個十六進制表達式,這段代碼將其轉換為“哇,我在用十六進制寫!”
常見問題
Python相對于其他語言有多難?
雖然Python確實有一些特定于某些編碼風格的缺陷,但由于它在可變類型方面的靈活性,Python提供了比其他語言更友好的初學者氛圍。它是一種解釋型語言,所以它不需要您處理手動分配內存并確保在不再使用時釋放內存的繁瑣工作。
Python穩定嗎?
Python的開發人員強烈反對用新版本使舊代碼無效的想法,并且在歷史上一直非常小心地確保向后兼容更舊的代碼。在2005年,Python社區不得不處理一個棘手的問題reduce()和許多其他功能從標準庫中移除并且必須從Python 3000中的另一個導入。一般來說,這些事情都是公開的,如果您的代碼停止正常運行,控制臺會提供有用的信息,讓您找出原因并做出相應的調整。
Python最好的開發環境是什么?
如果您想使用Python的集成開發環境,有幾個跨操作系統的選項可供您選擇:
- 皮查姆
–如果你真的想獻身于Python,就用這個吧。這個IDE只專注于Python,包含大量的工具和庫,可以幫助您流暢地編寫代碼。
- Visual Studio代碼
–如果您希望最終擴展并學習其他語言,VSCode(在Linux中有時稱為Code–OSS,在Arch Linux中稱為“Code”包)提供了強大的功能以及針對各種語言的集成編譯器。
- 精力
–它允許在任何終端模擬器中非??焖俚鼐庉嫃碗s的文本。它有很高的學習曲線,但應該是每個程序員的武器庫。