Fassen Sie dreißig praktische Python-Kenntnisse zusammen

WBOY
Freigeben: 2022-03-10 17:47:27
nach vorne
2413 Leute haben es durchsucht

Dieser Artikel vermittelt Ihnen relevantes Wissen über Python und fasst hauptsächlich einige gängige Verwendungstechniken im Programmierprozess zusammen, darunter das Überprüfen von Objekten, die Verwendung mehrzeiliger Zeichenfolgen, die Rückgabe mehrerer Werte aus Funktionen usw. Warten auf verwandte Inhalte , ich hoffe, es wird für alle hilfreich sein.

Fassen Sie dreißig praktische Python-Kenntnisse zusammen

Empfohlenes Lernen: Python-Tutorial

Tipp 1 Zwei Zahlen an Ort und Stelle vertauschen

Python bietet eine intuitive Möglichkeit, in einer Zeile zuzuordnen und zu vertauschen. Bitte beachten Sie das Beispiel unten.

x, y = 10, 20print(x, y)
 x, y = y, xprint(x, y)
 #1 (10, 20)#2 (20, 10)
Nach dem Login kopieren

Die Aufgabe auf der rechten Seite erzeugt ein neues Tupel. Und der auf der linken Seite entpackt dieses (nicht zitierte) Tupel sofort in den Namen <a><b>.

Nachdem die Zuordnung abgeschlossen ist, wird das neue Tupel dereferenziert und für die Speicherbereinigung markiert. Am Ende findet auch der Austausch von Variablen statt.


Tipp 2 Verkettung von Vergleichsoperatoren.

Die Aggregation von Vergleichsoperatoren ist ein weiterer Trick, der manchmal nützlich sein kann.

n = 10 result = 1 < n < 20 print(result) # True result = 1 > n <= 9 print(result) # False
Nach dem Login kopieren

Tipp 3 Verwenden Sie den ternären Operator für die bedingte Zuweisung.

Der ternäre Operator ist eine Abkürzung für if-else-Anweisungen, auch als bedingte Operatoren bekannt.

[on_true] if [expression] else [on_false]
Nach dem Login kopieren

Hier sind einige Beispiele, mit denen Sie Ihren Code kompakt und prägnant gestalten können.

Die folgende Aussage hat die gleiche Bedeutung wie „Wenn y 9 ist, dann weisen Sie x 10 zu, andernfalls weisen Sie x 20 zu“. Bei Bedarf können wir die Verkettung der Operatoren erweitern.

x = 10 if (y == 9) else 20
Nach dem Login kopieren

Dasselbe können wir auch mit Klassenobjekten machen.

x = (classA if y == 1 else classB)(param1, param2)
Nach dem Login kopieren

Im obigen Beispiel sind KlasseA und KlasseB zwei Klassen, von denen einer der Klassenkonstruktor aufgerufen wird.

Das Folgende ist ein Beispiel für Nr. Fügen Sie eine Bedingung hinzu, die die kleinste Zahl auswertet.

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
Nach dem Login kopieren

Wir können den ternären Operator sogar im Listenverständnis verwenden.

[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]
Nach dem Login kopieren

Tipp 4 Mehrzeilige Zeichenfolgen verwenden

Die grundlegende Methode besteht darin, Backslashes zu verwenden, die aus der C-Sprache abgeleitet sind.

multiStr = "select * from multi_row \
where row_id < 5"print(multiStr)# select * from multi_row where row_id < 5
Nach dem Login kopieren

Ein weiterer Trick besteht darin, dreifache Anführungszeichen zu verwenden.

multiStr = """select * from multi_row 
where row_id < 5"""print(multiStr)#select * from multi_row #where row_id < 5
Nach dem Login kopieren

Ein häufiges Problem bei den oben genannten Methoden ist das Fehlen einer ordnungsgemäßen Einrückung. Wenn wir versuchen, einzurücken, werden Leerzeichen in die Zeichenfolge eingefügt.

Die endgültige Lösung besteht also darin, die Zeichenfolge in mehrere Zeilen aufzuteilen und die gesamte Zeichenfolge in Klammern zu setzen.

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
Nach dem Login kopieren

Tipp 5 Listenelemente in einer neuen Variablen speichern

Wir können eine Liste verwenden, um eine Nr. zu initialisieren. Variable. Beim Entpacken einer Liste sollte die Anzahl der Variablen die Anzahl nicht überschreiten. Elemente in der Liste.

testList = [1,2,3]x, y, z = testListprint(x, y, z)#-> 1 2 3
Nach dem Login kopieren

Tipp 6 Drucken Sie den Dateipfad importierter Module aus

Wenn Sie den absoluten Speicherort importierter Module in Ihrem Code wissen möchten, verwenden Sie den folgenden Trick.

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;>
Nach dem Login kopieren

Tipp 7 Verwenden Sie den interaktiven „_“-Operator

Dies ist eine nützliche Funktion, die viele von uns nicht kennen.

In der Python-Konsole wird das Ergebnis jedes Mal, wenn wir einen Ausdruck testen oder eine Funktion aufrufen, an den temporären Namen _ (Unterstrich) gesendet.

>>> 2 + 13>>> _3>>> print _3
Nach dem Login kopieren

„_“ bezieht sich auf die Ausgabe des zuletzt ausgeführten Ausdrucks.


Tipp 8 Wörterbuch-/Mengenverständnis

So wie wir Listenverständnisse verwenden, können wir auch Wörterbuch-/Mengenverständnisse verwenden. Sie sind einfach anzuwenden und gleichermaßen effektiv. Hier ist ein Beispiel.

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}
Nach dem Login kopieren

Hinweis – Der einzige Unterschied zwischen den beiden Anweisungen ist <:>. Um den obigen Code in Python3 auszuführen, ersetzen Sie ihn außerdem durch .


Tipp 9 Debuggen von Skripten

Mit Hilfe des Moduls können wir Haltepunkte in Python-Skripten festlegen. Bitte folgen Sie dem Beispiel unten.

import pdb
pdb.set_trace()
Nach dem Login kopieren

Wir können an einer beliebigen Stelle im Skript angeben und dort Haltepunkte setzen. Das ist sehr praktisch.


Tipp 10 Dateifreigabe einrichten

Python ermöglicht den Betrieb eines HTTP-Servers, mit dem Sie Dateien vom Server-Root aus teilen können. Unten finden Sie den Befehl zum Starten des Servers.

Python 2

python -m SimpleHTTPServer
Nach dem Login kopieren

Python 3

python3 -m http.server
Nach dem Login kopieren

Der obige Befehl startet den Server auf dem Standardport 8000. Sie können auch einen benutzerdefinierten Port verwenden, indem Sie ihn als letzten Parameter an den obigen Befehl übergeben.


Tipp 11 Objekte in Python prüfen

Wir können Objekte in Python prüfen, indem wir die Methode dir() aufrufen. Dies ist ein einfaches Beispiel.

test = [1, 3, 5, 7]print( dir(test) )
Nach dem Login kopieren
['__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']
Nach dem Login kopieren

Tipp 12 Vereinfachen Sie die if-Anweisung

Um mehrere Werte zu validieren, können wir es auf folgende Weise tun.

if m in [1,3,5,7]:
Nach dem Login kopieren

Anstelle von:

if m==1 or m==3 or m==5 or m==7:
Nach dem Login kopieren

Alternativ können wir „{1,3,5,7}“ anstelle von „[1,3,5,7]“ als „in“-Operator verwenden, da „set“ sein kann O(1) übergeben, um auf jedes Element zuzugreifen.


Tipp 13 Python-Version zur Laufzeit erkennen

Manchmal möchten wir unser Programm möglicherweise nicht ausführen, wenn die aktuell laufende Python-Engine niedriger als die unterstützte Version ist. Dazu können Sie den folgenden Codeausschnitt verwenden. Außerdem wird die aktuell verwendete Python-Version in einem für Menschen lesbaren Format gedruckt.

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)
Nach dem Login kopieren

Alternativ können Sie im obigen Code sys.hexversion!= 50660080 durch sys.version_info >= (3, 5) ersetzen. Dies ist der Rat eines informierten Lesers.

Ausgabe bei Ausführung unter 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.
Nach dem Login kopieren

在 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]
Nach dem Login kopieren

技巧14 组合多个字符串

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

>>> test = ['I', 'Like', 'Python', 'automation']
Nach dem Login kopieren

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

>>> print ''.join(test)
Nach dem Login kopieren

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

反转列表本身

testList = [1, 3, 5]testList.reverse()print(testList)#-> [5, 3, 1]
Nach dem Login kopieren

在循环中迭代时反转

for element in reversed([1,3,5]): print(element)#1-> 5#2-> 3#3-> 1
Nach dem Login kopieren

反转一个字符串

"Test Python"[::-1]
Nach dem Login kopieren

这使输出为“nohtyP tseT”

使用切片反转列表

[1, 3, 5][::-1]
Nach dem Login kopieren

上面的命令将输出 [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
Nach dem Login kopieren

技巧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
Nach dem Login kopieren

技巧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)
Nach dem Login kopieren

#-> 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
Nach dem Login kopieren

技巧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
Nach dem Login kopieren

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

Python 2.x.

result = (lambda k: reduce(int.__mul__, range(1,k+1),1))(3)print(result)#-> 6
Nach dem Login kopieren

Python 3.x.

import functools
result = (lambda k: functools.reduce(int.__mul__, range(1,k+1),1))(3)print(result)
Nach dem Login kopieren

#-> 6


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

test = [1,2,3,4,2,2,3,1,4,4,4]print(max(set(test), key=test.count))#-> 4
Nach dem Login kopieren

技巧23 重置递归限制。

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

import sys

x=1001print(sys.getrecursionlimit())sys.setrecursionlimit(x)print(sys.getrecursionlimit())#1-> 1000#2-> 1001
Nach dem Login kopieren

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


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

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

Python 2.7.

import sys
x=1print(sys.getsizeof(x))#-> 24
Nach dem Login kopieren

Python 3.5.

import sys
x=1print(sys.getsizeof(x))#-> 28
Nach dem Login kopieren

技巧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
Nach dem Login kopieren

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


技巧26 Lambda 模仿打印功能。

import sys
lprint=lambda *args:sys.stdout.write(" ".join(map(str,args)))lprint("python", "tips",1000,1001)#-> python tips 1000 1001
Nach dem Login kopieren

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

t1 = (1, 2, 3)t2 = (10, 20, 30)print(dict (zip(t1,t2)))#-> {1: 10, 2: 20, 3: 30}
Nach dem Login kopieren

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

print("http://www.baidu.com".startswith(("http://", "https://")))print("https://juejin.cn".endswith((".com", ".cn")))#1-> True#2-> True
Nach dem Login kopieren

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

import itertools
test = [[-1, -2], [30, 40], [25, 35]]print(list(itertools.chain.from_iterable(test)))#-> [-1, -2, 30, 40, 25, 35]
Nach dem Login kopieren

如果您有一个包含嵌套列表或元组作为元素的输入列表,请使用以下技巧。但是,这里的限制是它使用了 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]
Nach dem Login kopieren

统一包含列表和元组的列表的另一种更简单的方法是使用 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]
Nach dem Login kopieren

技巧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
Nach dem Login kopieren

 推荐学习:python学习教程

Das obige ist der detaillierte Inhalt vonFassen Sie dreißig praktische Python-Kenntnisse zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!