Heim Backend-Entwicklung Python-Tutorial Wie können Sie Ihren Python-Code pythonischer gestalten?

Wie können Sie Ihren Python-Code pythonischer gestalten?

Oct 17, 2016 pm 05:22 PM

Pythonic ist sehr pythonisch, wenn man es ins Chinesische übersetzt. In China gibt es viele Verwendungen der Substantivstruktur „sehr“, wie zum Beispiel: „sehr mädchenhaft“, „sehr Fußballnationalmannschaft“, „sehr CCTV“ usw. ·

Der Einfachheit halber verwenden wir im Folgenden P, um die pythonische Schreibmethode darzustellen, und NP, um die nicht-pythonische Schreibmethode darzustellen. Natürlich ist dieses P-NP nicht das P-. NP.

Warum Python verfolgen?

Im Vergleich zu NP ist die Schreibmethode von P prägnant, klar und elegant. Meistens ist die Ausführungseffizienz hoch und je weniger Code, desto weniger Fehler -anfällig ist es. Ich denke, dass gute Programmierer beim Schreiben von Code auf Korrektheit, Einfachheit und Lesbarkeit achten sollten. Dies ist genau der Geist von Python.

Für Programmierer (wie mich), die Erfahrung in anderen Programmiersprachen haben und mit Python noch nicht vertraut sind, wird das Erkennen der Python-Schreibmethode mehr Komfort und Effizienz beim Schreiben von Python-Code bringen. Die Hauptleser dieses Artikels wird auch diese Gruppe von Programmierern sein.

N Beispiele für P und NP werden unten als Referenz für die Leser aufgeführt.


Beispiel für P vs. NP

Kettenvergleich

P:

a = 3
b = 1
1 <= b <= a < 10  #True
Nach dem Login kopieren

NP:

a = 3
b = 1
b >= 1 and b <= a and a < 10 #True
Nach dem Login kopieren

P ist eine Syntax, die Grundschüler verstehen können, sie ist einfach und direkt und spart Code ~


Wahrheitstest

P:

name = &#39;Tim&#39;
langs = [&#39;AS3&#39;, &#39;Lua&#39;, &#39;C&#39;]
info = {&#39;name&#39;: &#39;Tim&#39;, &#39;sex&#39;: &#39;Male&#39;, &#39;age&#39;:23 }    
  
if name and langs and info:
    print(&#39;All True!&#39;)  #All True!
Nach dem Login kopieren

NP:

if name != &#39;&#39; and len(langs) > 0 and info != {}:
    print(&#39;All True!&#39;) #All True!
Nach dem Login kopieren

Kurz gesagt, die Art und Weise, wie P geschrieben wird, besteht darin, die Authentizität eines Objekts direkt zu beurteilen, ohne die Beurteilungsbedingungen zu schreiben. Dies kann nicht nur die Richtigkeit sicherstellen, sondern auch die Menge reduzieren Code.


Wahr- und Falsch-Wertetabelle (Sie können viel Code sparen, wenn Sie sich an Falsch erinnern!)

Wahr Falsch

Wahr Falsch

Jede nicht leere Zeichenfolge, leere Zeichenfolge''

Jede Zahl ungleich 0, Zahl 0

Jeder nicht leere Container, leerer Container[] () {} set()

Alle anderen Nicht-Falsch-Keine


String Reverse

P:

def reverse_str( s ):
    return s[::-1]
Nach dem Login kopieren

NP:

def reverse_str( s ):
    t = &#39;&#39;
    for x in xrange(len(s)-1,-1,-1):
        t += s[x]
    return t
Nach dem Login kopieren

P ist einfach zu schreiben und nach dem Testen effizienter.

Wenn es zur Erkennung von Palindromen verwendet wird, ist es ein Satz von input == input[::-1], wie elegant!


Verkettung von Stringlisten

P:

strList = ["Python", "is", "good"]  
  
res =  &#39; &#39;.join(strList) #Python is good
Nach dem Login kopieren

NP :

res = &#39;&#39;
for s in strList:
    res += s + &#39; &#39;
#Python is good
#最后还有个多余空格
Nach dem Login kopieren

string.join() wird häufig zum Verbinden von Zeichenfolgen in einer Liste verwendet. Im Vergleich zu NP ist die P-Methode sehr effizient und fehlerfrei . .


Listensumme, Maximum, Minimum, Produkt

P:

numList = [1,2,3,4,5]   
sum = sum(numList)  #sum = 15
maxNum = max(numList) #maxNum = 5
minNum = min(numList) #minNum = 1
from operator import mul
prod = reduce(mul, numList, 1) #prod = 120 默认值传1以防空列表报错
Nach dem Login kopieren


NP:

sum = 0
maxNum = -float(&#39;inf&#39;)
minNum = float(&#39;inf&#39;)
prod = 1
for num in numList:
    if num > maxNum:
        maxNum = num
    if num < minNum:
        minNum = num
    sum += num
    prod *= num
# sum = 15 maxNum = 5 minNum = 1 prod = 120
Nach dem Login kopieren

Nach einem einfachen Test wird die Liste summiert, wenn die Länge von numList 10000000 beträgt Auf meiner Maschine benötigt P 0,6 Sekunden und NP 1,3 Sekunden, was fast dem Doppelten des Unterschieds entspricht. Erfinden Sie also nicht Ihr eigenes Rad neu.


Listenverständnis

P:

l = [x*x for x in range(10) if x % 3 == 0]
#l = [0, 9, 36, 81]
Nach dem Login kopieren

NP:

l = []
for x in range(10):
    if x % 3 == 0:
        l.append(x*x)
#l = [0, 9, 36, 81]
Nach dem Login kopieren

Sehen Sie, wie einfach und intuitiv es wird, mit Ps Listenverständnis eine neue Liste zu erstellen!


Wörterbuch-Standardwert

P:

dic = {&#39;name&#39;:&#39;Tim&#39;, &#39;age&#39;:23}  
  
dic[&#39;workage&#39;] = dic.get(&#39;workage&#39;,0) + 1
#dic = {&#39;age&#39;: 23, &#39;workage&#39;: 1, &#39;name&#39;: &#39;Tim&#39;}
Nach dem Login kopieren

NP:

if &#39;workage&#39; in dic:
    dic[&#39;workage&#39;] += 1
else:
    dic[&#39;workage&#39;] = 1
#dic = {&#39;age&#39;: 23, &#39;workage&#39;: 1, &#39;name&#39;: &#39;Tim&#39;}
Nach dem Login kopieren

Die Methode get(key,default) von dict wird verwendet, um den Wert des Schlüssels im Wörterbuch abzurufen. Dem Schlüssel wird der Standardwert zugewiesen. Der Wert ist Standard.

Im Vergleich zu NP wird P weniger als if...else... geschrieben, was wirklich die erste Wahl für Leute ist, die if...else... hassen!


für…sonst… Aussage

P:

for x in xrange(1,5):
    if x == 5:
        print &#39;find 5&#39;
        break
else:
    print &#39;can not find 5!&#39;
#can not find 5!
Nach dem Login kopieren

NP :

find = False
for x in xrange(1,5):
    if x == 5:
        find = True
        print &#39;find 5&#39;
        break
if not find:
    print &#39;can not find 5!&#39;
#can not find 5!
Nach dem Login kopieren

Der else-Teil von for...else... wird verwendet, um Situationen zu behandeln, in denen es keine Unterbrechung durch die for-Schleife gibt. Damit müssen wir keine Statusvariablen festlegen, um zu prüfen, ob die for-Schleife ausbricht, was einfach und praktisch ist.


Ersatz des ternären Symbols

P:

a = 3  
  
b = 2 if a > 2 else 1
#b = 2
Nach dem Login kopieren

NP :

if a > 2:
    b = 2
else:
    b = 1
#b = 2
Nach dem Login kopieren

Wenn Sie C-Programmiererfahrung haben, suchen Sie nach Alternativen zu A : B ? Sie werden vielleicht feststellen, dass A und B oder C gut aussehen, aber b = a > 1 und False oder True gibt True zurück, obwohl die eigentliche Absicht darin bestehen sollte, False zurückzugeben.

Die Verwendung von b = False, wenn a > 1, sonst gibt True False korrekt zurück, es handelt sich also um einen authentischen ternären Symbolersatz.


Aufzählen

P:

array = [1, 2, 3, 4, 5]
  
for i, e in enumerate(array,0):
    print i, e
#0 1
#1 2
#2 3
#3 4
#4 5
Nach dem Login kopieren

NP:

for i in xrange(len(array)):
    print i, array[i]
#0 1
#1 2
#2 3
#3 4
#4 5
Nach dem Login kopieren

Mit enumerate können Sie den Index und den Wert gleichzeitig herausnehmen und vermeiden, dass der Index zum Abrufen des Werts verwendet wird. Der zweite Parameter von enumerate kann die Startposition des Indexindex anpassen. Der Standardwert ist 0.


Verwenden Sie zip, um Schlüssel-Wert-Paare zu erstellen

P:

keys = [&#39;Name&#39;, &#39;Sex&#39;, &#39;Age&#39;]
values = [&#39;Tim&#39;, &#39;Male&#39;, 23]
  
dic = dict(zip(keys, values))
#{&#39;Age&#39;: 23, &#39;Name&#39;: &#39;Tim&#39;, &#39;Sex&#39;: &#39;Male&#39;}
Nach dem Login kopieren

NP:

dic = {}
for i,e in enumerate(keys):
    dic[e] = values[i]
#{&#39;Age&#39;: 23, &#39;Name&#39;: &#39;Tim&#39;, &#39;Sex&#39;: &#39;Male&#39;}
Nach dem Login kopieren

Die Zip-Methode gibt ein Tupel zurück, mit dem einfach und klar Schlüssel-Wert-Paare erstellt werden.


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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Apr 01, 2025 pm 05:09 PM

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Apr 01, 2025 pm 11:15 PM

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden? Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden? Apr 02, 2025 am 07:18 AM

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet? Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet? Apr 02, 2025 am 07:15 AM

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Was sind reguläre Ausdrücke? Was sind reguläre Ausdrücke? Mar 20, 2025 pm 06:25 PM

Regelmäßige Ausdrücke sind leistungsstarke Tools für Musteranpassung und Textmanipulation in der Programmierung, wodurch die Effizienz bei der Textverarbeitung in verschiedenen Anwendungen verbessert wird.

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Apr 01, 2025 pm 10:51 PM

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Was sind einige beliebte Python -Bibliotheken und ihre Verwendung? Was sind einige beliebte Python -Bibliotheken und ihre Verwendung? Mar 21, 2025 pm 06:46 PM

In dem Artikel werden beliebte Python-Bibliotheken wie Numpy, Pandas, Matplotlib, Scikit-Learn, TensorFlow, Django, Flask und Anfragen erörtert, die ihre Verwendung in wissenschaftlichen Computing, Datenanalyse, Visualisierung, maschinellem Lernen, Webentwicklung und h beschreiben

Wie erstelle ich dynamisch ein Objekt über eine Zeichenfolge und rufe seine Methoden in Python auf? Wie erstelle ich dynamisch ein Objekt über eine Zeichenfolge und rufe seine Methoden in Python auf? Apr 01, 2025 pm 11:18 PM

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...

See all articles