9 Python-Programmierkenntnisse, die Anfänger von erfahrenen unterscheiden

Vor Beginn des Python Developer- Kurses wurde eine Übersetzung des Artikels erstellt .




Python ist eine fantastische Sprache. Die Syntax ist so einfach, dass Sie nicht einmal nach einem zusätzlichen Semikolon in Ihrem Code suchen müssen. Ich würde sogar sagen, dass Python eine der besten Sprachen für Neulinge ist.

Sie beginnen mit einem umfangreichen Satz von Bibliotheken und erweitern diese mit zunehmender Erfahrung in der Programmierung.

Nach einer Weile haben Sie möglicherweise das Gefühl, dass Sie nicht weiterkommen, wenn sich herausstellt, dass Sie zu viel Code für eine einfache Operation geschrieben haben. In der Tat ist dies nicht so schlimm, wie Sie vielleicht denken. Das Verständnis der Logik Ihrer Arbeit ist viel wichtiger als die Anzahl der Zeilen. Funktionscode ist besser, aber wenn die Logik fehlerhaft ist, funktioniert Ihr Code nicht wie beabsichtigt. Mit Erfahrung und einem kreativen Arbeitsansatz wird Ihr Code jedoch kürzer und besser.

Anfänger oder erfahren?


Was unterscheidet einen Anfänger von einem erfahrenen Programmierer, wenn es um das Programmieren in Python geht?

In diesem Artikel möchte ich mich auf folgende Themen konzentrieren:

  • Problemlösung und die Kunst, Fragen zu stellen
  • Verstehen, warum Code funktioniert (oder nicht)
  • Arbeite mit Strings
  • Mit Listen arbeiten
  • Schleifen verwenden
  • Verwenden von Funktionen (und korrekter Terminologie)
  • Objekt orientierte Programmierung
  • Respekt für PEP

Problemlösung und die Kunst, Fragen zu stellen


Als Programmierer sage ich, wenn Sie nicht genug Erfahrung mit dem Lösen von Problemen haben, wird es für Sie schwierig sein, exzellenten Code zu schreiben. Wenn Sie Probleme mit dem Lösen von Problemen haben, wird es für Sie wahrscheinlich nicht einfach sein, die besten Lösungen für Ihre Probleme zu finden. Beim Programmieren wird nicht nur Code geschrieben. Die Fähigkeit zur Problemlösung ist die Fähigkeit, die Sie benötigen, um aus der Kategorie für Anfänger herauszukriechen.

Es ist auch sehr wichtig, Fragen zur Programmierung zu stellen. Wenn Sie nur jemanden bitten, das Problem für Sie zu lösen, ohne etwas zu versuchen, tun Sie das Falsche. Dies ist nicht einfach, aber wenn Sie nicht versuchen, Probleme selbst zu lösen, profitieren Sie nicht von der Lösung Ihres Problems durch eine andere Person.

Wenn Sie wissen möchten, wie ich Programmierfragen formuliere, finden Sie hier einen separaten Artikel dazu.

Problem xy


"Ich muss die letzten drei Zeichen in einer Zeichenfolge erhalten."
"Nein, das braucht es nicht! Sie müssen die Dateierweiterung erhalten. “

Problem XY ist eine sehr lustige Sache. Sie haben Problem X, und wenn Sie den Support anrufen, fragen Sie nach Problem Y, dessen Lösung, wie Sie denken, Problem X lösen wird. [1]

Der oben beschriebene Fall veranschaulicht diese Situation gut. Wenn Sie die Dateierweiterung erhalten möchten, können Sie davon ausgehen, dass Sie die letzten 3 Zeichen der Zeile benötigen.

Wie es aussehen könnte:

def extract_ext(filename):
    return filename[-3:]
print (extract_ext('photo_of_sasquatch.png'))
>>> png

Perfekt! Nun, versuchen Sie es mit. Ein photo_of_lochness.jpeg
Benutzer könnte von Anfang an nach der Erweiterung fragen. Problem Y sind die letzten drei Zeichen. Problem X ist eine Erweiterung.

def extract_ext(filename):
    return filename.split('.')[-1]
print (extract_ext('photo_of_sasquatch.png'))
print (extract_ext('photo_of_lochness.jpeg'))
>>> png
>>> jpeg

Das ist alles!

Sie können auch die Standardbibliothek verwenden os.path.splitext().
Sie können sich damit vertraut machen hier .

Verstehen, warum Code funktioniert (oder nicht)


Wenn Sie neu sind, können Sie ein kleines Stück Code mehrere Tage lang schleifen. Und wenn dieser Code plötzlich funktioniert, werden Sie Erleichterung verspüren und mit dem nächsten Teil fortfahren. Und das ist das Schlimmste, was Sie tun können. Es ist wahrscheinlich noch gefährlicher, stillschweigend zu akzeptieren, dass der Code einfach funktioniert, und nicht zu verstehen, warum er funktioniert, als nicht zu verstehen, warum der Code im Prinzip nicht funktioniert.

Nicht zu verstehen, warum Ihr Code nicht funktioniert, passiert ständig. Wenn Sie alle Fehler beseitigen und schließlich herausfinden, warum die Lösung nicht funktioniert hat, ist es sehr wichtig, darüber nachzudenken, warum sie nicht funktioniert hat und warum der Code letztendlich ordnungsgemäß funktioniert hat. Sie werden dieses Wissen durch alle Ihre Programme tragen.

Wenn Sie beispielsweise einen Fehler beim Einrücken am Anfang einer Codezeile mit mehreren Blöcken haben, können Sie Blöcke nach dem Zufallsprinzip verschieben und dann bilden, wenn das Programm schließlich gestartet wird.
Denken Sie daran , dass in den meisten IDEs Sie Schlaufen zusammengedrückt werden und wenn ‚s. So können Sie leicht erkennen, welches Gerät für Sie funktioniert und welches nicht.


ATOM mit gefalteten if-else-Konstrukten auf der rechten Seite

Eine weitere coole Möglichkeit, visuell zu sehen, wie Ihr Code funktioniert, ist www.pythontutor.com , wo Sie zeilenweise sehen können, was in Ihrem Programm passiert.


Codeausführung in Python-Tutoren

Arbeite mit Strings


Im aktuellen Abschnitt geht es nicht nur um Linien. Es geht mehr darum, in die großartigen Python-Bibliotheken einzutauchen. In Python lernen wir früh, dass eine Zeichenfolge als Liste von Zeichen betrachtet werden kann. Sie können über einen Index auf ein Zeichen in einer Zeichenfolge zugreifen.

word = 'supergreat'
print (f'{word[0]}') 
>>> s
print (f'{word[0:5]}')
>>> super

Ein anfragender Verstand lernt, was es bietet str(), aber Sie können einfach weiter schreiben, ohne jemals die Dokumentation zu lesen str(). Um die Dokumentation der Funktion aufzurufen, können Sie schreiben help(str)oder dir(str). Wenn Sie dies tun, können Sie Methoden finden, deren Existenz nicht einmal vermutet wurde. Möglicherweise haben Sie sich die Dokumentation angesehen und wissen, dass Zeichenfolgen beispielsweise eine Methode haben endswith(), die Sie irgendwo anwenden können.



Hier ist ein Beispiel für Code, der dasselbe auf zwei verschiedene Arten tut. Die erste Option wird verwendet split, über die wir kürzlich gesprochen haben. Und im zweiten - endswith()was Sie in der Dokumentation finden konnten.

Die meisten Programmierer werden niemals die gesamte Dokumentation lesen und alles lernen. Ein wichtiger Teil der Arbeit eines Programmierers besteht darin, zu wissen, wo nach Informationen zur Lösung eines Problems gesucht werden muss.

Mit Listen arbeiten


Listen sind eine großartige und vielseitige Sache.
Zum Beispiel mischen wir hier ganzzahlige Werte und Zeichenfolgen:

my_list = ['a' , 'b' , 'n' , 'x' , 1 , 2 , 3, 'a' , 'n' , 'b']
for item in my_list:
    print (f'current item: {item}, Type: {type(item)}')



Sehen Sie, wie wir sie gemischt haben. Wenn wir versuchen, die Liste zu sortieren, erhalten wir eine Fehlermeldung.

print (my_list.sort())



Was ist, wenn wir Buchstaben von Zahlen trennen müssen? Der erste Weg besteht darin, das Problem mithilfe einer Schleife zu lösen, in der jedes Element der Liste überprüft wird. Ein Anfänger wird Zyklen früh kennenlernen, da Schleifen ein wichtiger Bestandteil der Programmierung sind.

Der Code könnte ungefähr so ​​aussehen:

my_list = ['a' , 'b' , 'n' , 'x' , 1 , 2 , 3 , 'a' , 33.3 , 'n' , 'b']
number_list = []
string_list = []
for item in my_list:
    print (f'current item: {item}, Type: {type(item)}')
    if not isinstance(item,str):
        number_list.append(item)
    else:
        string_list.append(item)
my_list = string_list

Dies ist der richtige Ansatz, aber etwas umständlich. Der Code funktioniert, aber Sie können ihn so gestalten, dass das Problem mit derselben Methode gelöst wird, jedoch in einer Zeile!

Wenn Sie glücklicher sein möchten, erfahren Sie, wie Listenausdrücke in Python funktionieren. Hier ist das gleiche Problem, das jedoch mit einem Verständnis der Funktionsweise von Listen gelöst wurde:

my_list = [letter for letter in my_list if isinstance(letter,str)]


Das ist alles!

Und das ist nicht das Ende. Sie können verwenden filter, um das gleiche Ergebnis zu erhalten.

def get_numbers(input_char):
    if not isinstance(input_char,str):
        return True
    return False

my_list = [1,2,3,'a','b','c']
check_list = filter(get_numbers, my_list)
for items in check_list:
    print(items)




Wie Sie wahrscheinlich bereits verstanden haben, gibt es viele Möglichkeiten, dasselbe Problem zu lösen. Sie müssen sich bewusst sein, dass es speziell für Sie und Ihr Team am besten funktioniert.

Bonus

  • Liste (oder Zeile) umdrehen:

names = ['First' , 'Middle' , 'Last']
print(names[::-1])
>>> ['Last', 'Middle', 'First']

  • Listenelemente kombinieren:

names = ['First' , 'Middle' , 'Last']
full_name = ' '.join(names)
print(f'Full Name:\n{full_name}')
>>> First Middle Last

Schleifen verwenden


Haben Sie einen ähnlichen Code gefunden?

greek_gods = ['Zeus' , 'Hera' , 'Poseidon' , 'Apollo' , 'Bob']
for index in range(0,len(greek_gods)):
    print (f'at index {index} , we have : {greek_gods[index]}')

Sie werden dieses Konstrukt wahrscheinlich aus anderen Sprachen lernen, aber dies ist weit von Pythons Ansatz entfernt. In Python verwenden Sie:

for name in greek_gods:
    print (f'Greek God: {name}')

Sie werden schnell feststellen, dass es keinen Index gibt. Was ist, wenn Sie einen Index bearbeiten möchten? In Python können Sie davon profitieren enumerate. Dies ist eine großartige Möglichkeit, auf alles zuzugreifen, was Sie benötigen!

for index, name in enumerate(greek_gods):
    print (f'at index {index} , we have : {name}')



Verwenden von Funktionen (und korrekter Terminologie)


Wenn ich an Animationen arbeite, sage ich immer, wenn Sie 5 Mal dasselbe tun, müssen Sie darüber nachdenken, ob Sie ein Programm benötigen? Wenn Sie zwei Wochen lang ein Tool entwickelt haben, können Sie manchmal sechs Wochen Arbeit sparen. Wenn Sie Code schreiben und verstehen, dass Sie dieselbe Aktion mehrmals ausführen, müssen Sie überlegen, ob Sie diesen Code in eine Prozedur oder Funktion codieren möchten. Die Funktion gibt einen Wert zurück und die Prozedur führt einfach den Code aus. Im ersten Beispiel sehen Sie die Prozedur und im zweiten die Funktion.

Es klingt verwirrend. Hier ist eine Abbildung, die das Funktionsprinzip widerspiegelt:



Achten Sie auf den Unterschied zwischen printund return. Es scheint, dass sie auf die gleiche Weise funktionieren, aber wenn Sie sich die Ausgabe ansehen, werden Sie sehen, dass die Funktion einfach den übergebenen Namen zurückgibt.

Die folgenden Begriffe, die klar voneinander getrennt werden sollten, sind Argumente und Parameter. Parameter sind die Definitionen in der Prozedur oder Funktion (in der Abbildung rot hervorgehoben), und was Sie an die Prozedur oder Funktion übergeben, sind Argumente (grün hervorgehoben).

Hier sind einige Beispiele.

Beispiel 1

def print_list(input_list):
    for each in input_list:
        print(f'{each}')
    print() #just to separate output
greek_gods = ['Zeus' , 'Hera' , 'Poseidon' , 'Apollo' , 'Bob']
grocery_list = ['Apples' , 'Milk' , 'Bread']
print_list(greek_gods)
print_list(grocery_list)
print_list(['a' , 'b' , 'c'])



Anstatt den Zyklus dreimal zu schreiben, schreibe ich ihn einmal in der Prozedur und rufe ihn auf, wenn ich ihn brauche. Im zweiten Beispiel können Sie sehen, wie die Funktion eine invertierte Liste zurückgibt.

Beispiel 2

def reverse_list(list_input):
    return list_input[::-1]
my_list = ['a', 'b' , 'c']
print (reverse_list(my_list))
>>> ['c', 'b', 'a']

Objekt orientierte Programmierung


Python ist eine objektorientierte Sprache, und Objekte haben viel Kraft. Stellen Sie sich ein Objekt als Zeichnung vor. Wenn Sie eine Zeichnung verwenden, erstellen Sie eine Instanz davon. Sie können also so viele Instanzen erstellen, wie Sie möchten, und nichts in der Originalzeichnung ruinieren, wenn Sie sie verwenden.

Objektorientierte Programmierung (OOP) ist ein großes Thema, daher enthält dieser Abschnitt nicht alles, was Sie darüber wissen müssen. Wir werden jedoch einige einfache Beispiele erläutern, die Ihnen bei Ihrer Arbeit helfen.

Wenn Sie schon einmal über OOP gelesen haben, sind Sie wahrscheinlich müde vom Lernen, aber hier ist es wieder. Beginnen wir mit der Definition einer Klasse Student. Es wird einen Namen ( name) und eine Liste von Disziplinen ( subject_list) haben:

class Student():
    def __init__(self,name):
        self._name = name
        self._subject_list = []

Hier __init__ist der Konstruktor der Klasse. Es definiert den Kern der Klasse. Später werden Sie sehen, wie die Methoden hinzugefügt werden. Methoden sind Prozeduren oder Funktionen, die zu einer Klasse gehören und bei Verwendung der Klasse im Programm aufgerufen werden können.
Wenn Sie einen Schüler erstellen möchten, erstellen Sie die folgende Variable:

student1 = Student('Martin Aaberge')

Wenn Sie mehr Schüler benötigen, verwenden Sie dieselbe Klasse und erstellen ein neues Objekt.

student2 = Student('Ninja Henderson')

Und student1, und student2werden Instanzen der Klasse sein Student. Sie haben das gleiche Schema, aber sie haben nichts mehr gemeinsam. Im Moment können wir mit Studenten wenig anfangen, aber wir haben eine Liste von Disziplinen hinzugefügt. Um diese Liste zu füllen, erstellen wir eine separate Methode. Sie können Methoden aufrufen, um mit Klasseninstanzen zu interagieren.

Lassen Sie uns die Klasse aktualisieren:

class Student():
    def __init__(self,name):
        self._name = name
        self._subject_list = []
    def add_subject(self, subject_name):
        self._subject_list.append(subject_name)
    def get_student_data(self):
        print (f'Student: {self._name} is assigned to:')
        for subject in self._subject_list:
            print (f'{subject}')
        print()

Jetzt kann diese Klasse verwendet werden, um Schüler zu erstellen, zu bearbeiten und Informationen über sie zu erhalten.

#create students:
student1 = Student('Martin Aaberge')
student2 = Student('Heidi Hummelvold')
#add subjects to student1
student1.add_subject('psychology_101')
student1.add_subject('it_security_101')
#add subject to student2
student2.add_subject('leadership_101')
#print current data on students
student1.get_student_data()
student2.get_student_data()

In der Regel werden Klassen in separaten Dateien gespeichert und in Code importiert. In unserem Beispiel haben wir eine Klasse Studentin einer Datei erstellt student.pyund in unsere Datei importiert main.py. (In diesem Fall befinden sich beide Dateien im selben Ordner).

from student import Student
student1 = Student('Martin')
student1.add_subject('biomechanics_2020')
student1.get_student_data()



Respektiere Pep


Es kann vorkommen, dass Leute Python-Code schreiben und überhaupt nicht an PEP denken. Vielleicht mache ich das manchmal selbst. Wenn Sie in einer Entwicklungsumgebung arbeiten, ist es sehr wichtig, die Standards zu befolgen, wenn nicht die PEP-Standards, dann zumindest die Standards Ihres Unternehmens.

PEP ist ein Empfehlungssatz für Ihren Code. Hier ist der Link zu PEP-8 . Tolle Lektüre. Lesen Sie es mindestens einmal, um zu verstehen, worum es geht. Ein klassisches Beispiel ist dies snake_case. Variablen in Python werden in snake_case geschrieben, d. H. Die Wörter im Variablennamen werden durch Unterstriche getrennt. Selbst an Universitäten lernen sie manchmal falsch, lassen Sie sich also nicht entmutigen und schreiben Sie einfach nach den Regeln.

Das stimmt:

chocolate_cake = 'yummy'

Und hier ist es - nein:

chocolateCake = 'Yummy'

Fazit


Ein Anfänger zu sein ist unglaublich. Ihr Weg wird nicht einfach sein, aber Ihre Lernkurve wird steil sein und Ihnen eine neue Erfahrung geben! Es kann schwierig sein, aufzuhören, ein Neuling zu sein. Manchmal ist es schwer zu verstehen, worauf Sie sich konzentrieren müssen. Was wird der nächste Schritt sein?

Vielleicht bringt Sie dieser Artikel in die richtige Richtung, oder vielleicht war es für Sie nur ein Haufen zufälliger Chatter, die Sie bereits kennen. Wenn Sie nicht sicher sind, wohin Sie als nächstes gehen sollen, haben Sie keine Angst zu fragen. Stellen Sie sicher, dass Sie den Ratschlägen derjenigen folgen, die erfahrener sind als Sie. Seien Sie offen für unterschiedliche Meinungen und finden Sie heraus, was für Sie richtig ist. Wenn Sie nicht bereit sind, bestimmte Methoden zum Schreiben von Code zu verwenden, schreiben Sie auf eine für Sie bequeme Weise, bis Sie neue und bessere lernen.

Quellen:

[1] Ausgabe XY, en.wikipedia.org/wiki/XY_problem



Kostenlose Lektion: Einführung in AutoTests



All Articles