Haben Sie jemals gedacht, dass Sie eines Tages zu schnell in die PHP-Webprogrammierung eingestiegen sind?
Es sind bereits mehrere Jahre vergangen, Sie haben viel Erfahrung gesammelt und können sich keine andere Möglichkeit vorstellen, mit dem Web zu arbeiten als PHP. Vielleicht bezweifeln Sie manchmal die von Ihnen getroffene Entscheidung, können aber Ihre Zweifel hier und jetzt nicht bestätigen. Gleichzeitig brauchen Sie echte Beispiele; Sie möchten die Änderungen verstehen, die in bestimmten Aspekten Ihrer Arbeit auftreten können.
Heute werde ich versuchen, die folgende Frage zu beantworten: "
Was ist, wenn wir Python anstelle von PHP verwenden? ".
Ich habe diese Frage selbst oft gestellt. Ich benutze PHP bereits seit 11 Jahren und bin zertifizierter PHP-Spezialist. Ich habe es gemeistert, damit es so funktioniert, wie ich es will. Ich war wirklich verwirrt über mehrere Artikel, die PHP heftig kritisierten (
PHP: ein Fraktal mit schlechtem Design ). Als der Zufall kam, wechselte ich jedoch zu Ruby und dann zu Python. Schließlich entschied ich mich für Letzteres. Jetzt werde ich versuchen zu erklären, wie wir Python-Leute da draußen leben.

Artikelformat
Der beste Weg, eine neue Sprache zu lernen, besteht darin, sie mit einer Sprache zu vergleichen, die Sie bereits anwenden können, es sei denn, die neue Sprache unterscheidet sich drastisch von der aktuellen. Ein Artikel im Ruby-Webportal (
Ruby aus anderen Sprachen ) bietet einen solchen Vergleich, es fehlen jedoch Beispiele.
Ich sollte auch beachten, dass dieser Artikel nur Aspekte vergleicht, die Ihre Aufmerksamkeit in den ersten Wochen nach dem Wechsel zur neuen Sprache auf sich ziehen.
Konsolen vorbereiten
Ich habe mein Bestes getan, um diesen Artikel interaktiv zu gestalten. Daher empfehle ich, beim Lesen des Artikels alle Beispiele in den Konsolen auszuführen. Sie benötigen eine PHP-Konsole oder können die
PsySH- Konsole verwenden, was noch besser ist:
php -a
Und eine Python-Konsole. Ich empfehle die Verwendung von
bpython oder
ipython , da sie bereits einen Vergleich der Codevervollständigung mit der in die Sprache integrierten Standardkonsole
bieten . Die folgende Option ist jedoch ebenfalls anwendbar:
python
Und dann:
import rlcompleter import readline readline.parse_and_bind("tab: complete")
Vermeiden Sie die Wiederholung dieser AktionenErstellen Sie eine ~ / .pyrc-Datei mit:
import rlcompleter import readline readline.parse_and_bind("tab: complete")
Fügen Sie einige Zeilen in die Datei ~ / .bashrc ein:
export PYTHONSTARTUP="${HOME}/.pyrc" export PYTHONIOENCODING="UTF-8"
Adn, um Änderungen sofort vorzunehmen, ohne sich erneut anzumelden:
source ~/.bashrc
Über Sprachen
- Python ist eine Sprache mit einer starken dynamischen Enten-Typisierung ( siehe Informationen zur Typisierung ). Python ist in seiner Anwendung nicht beschränkt. Es wird für die Webentwicklung, Dämonen, wissenschaftliche Berechnungen oder als Sprache für Erweiterungen verwendet. Ähnliche Sprachen in Bezug auf die Eingabe: Ruby.
- PHP ist eine Sprache mit schwacher dynamischer Enten-Typisierung. PHP ist ebenfalls eine Allzwecksprache, ihr Anwendungsbereich umfasst jedoch hauptsächlich Web und Daemons. Andere Funktionen sind nicht richtig ausgearbeitet, sodass sie in der Produktion nicht anwendbar sind. Einige Leute glauben, dass PHP sterben soll . Ähnliche Sprachen in Bezug auf die Eingabe: JavaScript, Lua, Perl.
Allgemeine Einzelheiten
- Code wird unabhängig von der Python-Version in .py-Dateien geschrieben. Es sind keine öffnenden Tags wie <? PHP erforderlich, da Python ursprünglich als universelle Programmiersprache entwickelt wurde.
- Außerdem gibt es aus demselben Grund keine php.ini. Es sind zwei Dutzend
Umgebungsvariablen sind jedoch in den meisten Fällen undefiniert (abgesehen von PYTHONIOENCODING). Mit anderen Worten, es gibt keine Standardverbindungen zu Basen, Fehlerfilterverwaltung, Grenzwertverwaltung, Erweiterungen usw., was für die meisten Allzwecksprachen selbstverständlich ist. Infolgedessen verhalten sich Programme in den meisten Fällen ähnlich (ihr Verhalten hängt nicht von den bevorzugten Einstellungen Ihres Teamleiters ab). Einstellungen wie php.ini werden in den meisten Fällen in der Hauptkonfigurationsdatei einer Anwendung gespeichert. - Am Ende einer Zeichenfolge wird kein Semikolon benötigt. Wenn wir dort jedoch ein Semikolon einfügen, funktioniert es wie in PHP. Trotzdem ist es unnötig und unerwünscht, so dass Sie es einfach vergessen können.
- Variablen beginnen nicht mit $ (das PHP von Perl geerbt hat, das es wiederum übernommen hat
von Bash). - Die Zuordnung in Zyklen und Bedingungen gilt nicht, so dass niemand den Vergleich für die Zuordnung verwechselt, was ein häufiger Fehler ist (wie der Sprachautor glaubt). Siehe PEP 572 für Python 3.8, falls erforderlich.
- Beim Parsen von Dateien legt Python die Dateikopie automatisch mit der Erweiterung .pyc (vorausgesetzt, Ihre Python-Version ist kleiner als 3.3 und Sie haben PYTHONDONTWRITEBYTECODE nicht installiert) in demselben Ordner ab, in dem sich Ihr Bytecode befindet. Dann wird immer genau diese Datei ausgeführt, es sei denn, Sie ändern die Quelle.
Diese Dateien werden in allen IDEs automatisch ignoriert und stören im Allgemeinen nicht. Diese Funktion kann als vollständiges Analogon zu PHP APC angesehen werden, wenn man bedenkt, dass sich .pyc-Dateien wahrscheinlich im Dateicache-Speicher befinden. - Anstelle von NULL, TRUE, false sollten wir None, True, false verwenden (insbesondere in diesem Fall).
Verschachteln und Einrücken
Folgendes ist ungewöhnlich: Die Verschachtelung von Codes wird mit Einrückungen anstelle von Klammern festgelegt.
Also statt:
foreach($a as $value) { $formatted = $value.'%'; echo $formatted; }
Wir sollten folgendes schreiben:
for value in a: formatted = value + '%' print(formatted)
Warte, warte! Schließen Sie den Artikel nicht. Hier könnten Sie genau den Fehler machen, den ich gemacht habe.
Einmal glaubte ich, dass die Idee, Einrückungen für das Verschachteln von Code zu verwenden, lächerlich ist. Meine ganze Natur protestierte dagegen, da alle Entwickler ihren Code auf ihre eigene Weise schreiben, unabhängig von verschiedenen Style Guides.
Hier ist das Geheimnis der Welt: Es gibt kein Einrückungsproblem. In den meisten Fällen (99% der Fälle) werden Einrückungen von IDE automatisch wie in jeder anderen Sprache platziert. Du denkst überhaupt nicht darüber nach. Ich habe über 2 Jahre lang keine Probleme im Zusammenhang mit Einrückungen mit der Sprache gesehen.
Starkes Tippen
Das nächste, worauf Sie achten sollten, ist starkes Tippen. Allerdings zuerst etwas Code:
print '0.60' * 5; print '5' == 5; $a = array('5'=>true); print $a[5]; $value = 75; print $value.'%'; $a='0'; if($a) print 'non zero length';
Alle obigen Beispiele sind dank dynamischer Eingabe möglich.
Ja, ich weiß, dass die Typdeklaration für PHP verfügbar ist. Es ist jedoch nicht standardmäßig aktiviert und funktioniert nicht überall.
Folgendes funktioniert jedoch in Python nicht:
>>> print "25" + 5 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects
Außer ...Mit Ausnahme von Booleschen Werten ist dies jedoch beabsichtigt.
Normalerweise werden Datentypen nicht in Ihren Code gemischt und dieser Effekt lenkt Sie nicht ab. Im Allgemeinen gab es beim Codieren in PHP nur wenige Situationen pro Projekt, in denen dynamisches Tippen tatsächlich hilfreich war. In allen anderen Fällen interagierten Variablen desselben Typs miteinander.
Starke Typisierung wirkt sich auf die Fehlerbehandlung aus. Wenn eine
int- Funktion beispielsweise eine Ganzzahl zurückgibt, kann sie
None nicht an eine Zeichenfolge zurückgeben, aus der dieser Typ nicht explizit extrahiert werden kann. In diesem Fall wird eine Ausnahme ausgelöst. Möglicherweise müssen alle Benutzerdaten in den erforderlichen Datentyp konvertiert werden. Andernfalls wird eines Tages eine Ausnahme in der Produktionsversion ausgelöst.
try: custom_price = int(request.GET.get('custom_price', 0)) except ValueError: custom_price = 0
Dies betrifft nicht nur Standardfunktionen, sondern auch einige Methoden der Listen, Zeichenfolgen und einige Funktionen aus zusätzlichen Bibliotheken. Normalerweise berücksichtigt ein Python-Entwickler alle Ausnahmen, die ausgelöst werden können, und berücksichtigt sie. Wenn sich der Entwickler nicht an sie erinnert, überprüft er den Bibliothekscode. Natürlich werden manchmal nicht alle Fälle berücksichtigt, und Benutzer können Ausnahmen in der Produktionsversion verursachen. Da dies ein seltenes Phänomen ist und Web-Frameworks diese normalerweise automatisch an die E-Mail des Administrators senden, werden solche Fälle schnell behoben.
Um Werte verschiedener Datentypen in einem einzelnen Ausdruck zu verwenden, sollten sie konvertiert werden. Dafür gibt es Funktionen:
str ,
int ,
bool ,
long . Es gibt auch bequemere Entscheidungen für die Formatierung.
Saiten
Formatierung
In PHP:
$this_way = 'this_way'; echo "Currently you do it $this_way or {$this way}."; echo "Or ".$this_way."."; echo sprintf("However the following is possible: , %s or %1$'.9s.", $this_way);
Jetzt sollten Sie lernen, es anders zu machen:
etot = 'this' var = 'option' print('To %s option' % etot) print(etot + ' option can also be used, but not recommended) print('Or to %s %s' % (etot, var)) print('Or to %(etot)s %(var)s' % {'etot': etot, 'var': var}) # Very useful for localization team print('Or to {} {}'.format(etot, var)) print('Or to {1} {0}'.format(var, etot)) print('Or to {etot} {var}'.format(var=var, etot=etot)) # And finally print(f'Or to {etot} {var}') # Starting from Python 3.6
Es gibt mehr Optionen und eine bequeme Option für Lokalisierungen.
String-Methoden
Python hat etwas, das in PHP fehlt: integrierte Methoden. Vergleichen wir:
strpos($a, 'tr'); trim($a);
vs. a.index('tr') a.strip()
Und wie oft machst du so etwas?
substr($a, strpos($a, 'name: '));
vs. a[a.index('name: '):]
Unicode-Unterstützung
Endlich Unicode. In Python 2 sind alle Zeichenfolgen standardmäßig NICHT Unicode. (In Python 3 sind alle Zeichenfolgen standardmäßig Unicode). Wenn Sie jedoch das Zeichen
u am Anfang einer Zeichenfolge hinzufügen, wird es automatisch zu Unicode. Und dann funktionieren alle integrierten (und nicht integrierten) String-Methoden von Python ordnungsgemäß.
>>> len(' ')

In PHP wurde die natürliche Unicode-Verarbeitung für PHP 6 entwickelt, aber PHP 6 wurde abgebrochen ( Andrei Zmievski: Waht ist Unicode und PHP 6 passiert ).
In PHP können Sie übrigens die Überladung der MBString-Funktion verwenden , um einen ähnlichen Effekt zu erzielen, der jedoch veraltet ist.
Sie können jedoch nicht mit Binärzeichenfolgen mit überladenen Funktionen arbeiten, aber Sie können weiterhin mit einer Zeichenfolge als Array arbeiten.
Über rohe Zeichenfolgen (optional)Rohe Saiten
Sie sollten den Unterschied zwischen Zeichenfolgen in einfachen Anführungszeichen und Zeichenfolgen in doppelten Anführungszeichen kennen:
$a = 'Hello.\n'; $a[strlen($a)-1] != "\n";
Die ähnliche Funktion in Python hat Raw-Strings genannt. Um es zu verwenden, setzen Sie das Zeichen
r vor eine Zeichenfolge in einfachen Anführungszeichen.
a = r'Hello.\n' a[-1] != '\n'
Arrays
Jetzt ist es Zeit für Arrays. In PHP können Sie Ganzzahlen oder Zeichenfolgen als Schlüssel verwenden:
var_dump([0=>1, 'key'=>'value']);

In PHP sind Arrays keine Standard-Arrays ( Listen ), sondern assoziative Arrays ( Wörterbuch ). Standard-Arrays sind auch in PHP verfügbar, sie sind SPLFixedArray . Sie benötigen weniger Speicher, arbeiten möglicherweise schneller, werden jedoch aufgrund der Komplexität beim Erstellen und Erweitern selten verwendet.
In Python werden vier Datentypen für ein Array verwendet:
- Liste
a = [1, 2, 3]
- Diktat - Wörterbuch. Wörterbücher haben keine Reihenfolge zum Speichern von Daten (wie in PHP).
d = {'a': 1, 'b': 2, 'c': 3}
- Tupel. So etwas wie ein festes Array inhomogener Werte. Perfekt geeignet, um mehrere Werte von einer Funktion zurückzugeben und Konfigurationen kompakt zu speichern.
t = (True, 'OK', 200, )
- einstellen. Grundsätzlich handelt es sich hierbei um eine Liste eindeutiger Werte, für die keine Speicherreihenfolge festgelegt ist.
s = set([1,3,4]) s[0] = False
In PHP sind Arrays eine Art Schweizer Taschenmesser - sie können allen Zwecken dienen. Für Python müssen Sie Datenarrays verwenden, die für die Informatik nativ sind. Außerdem müssen Sie für jeden Einzelfall geeignete Datenfelder verwenden. Sie können sagen, dass dies unnötige Schwierigkeiten sind, mit denen Programmierer niemals konfrontiert werden sollten. Nun, das ist nicht der Punkt.
- Erstens: Die Möglichkeit, zwischen Tupel, Satz, Liste und Diktat zu wählen, macht die Dinge nicht schwierig - es wird nur zu einer unbewussten Gewohnheit wie dem Gangwechsel.
- Zweitens: Liste oder Diktat werden in den meisten Fällen verwendet.
- Drittens: In den meisten Fällen, wenn Sie das Schlüssel-Wert-Paar speichern müssen, ist die Reihenfolge nicht unbedingt erforderlich. Wenn Sie jedoch die Reihenfolge beibehalten müssen, gibt es in den meisten Fällen nur Werte anstelle von Schlüssel-Wert-Paaren.
- Viertens: Python hat ein geordnetes Wörterbuch - OrderedDict .
Importe
Dies ist eine sehr interessante Funktion. Es ist eine Art alternatives Konzept von Namensräumen, das verwendet werden muss.
In PHP schreiben Sie
require_once und es bleibt bis zum Ende der PHP-Ausführungssitzung verfügbar. Im Allgemeinen ordnen Entwickler bei Verwendung von CMS alles in Klassen ein, platzieren sie an speziellen Speicherorten, schreiben eine kleine Funktion, die diese Speicherorte kennt, und registrieren diese Funktion über
spl_autoload_register am Anfang der Datei.
In Python hat jedoch jede Datei einen eigenen Namensraum. Daher enthält eine Datei nur Objekte, die Sie dort importieren. Standardmäßig ist nur die Standard-Python-Bibliothek verfügbar (ca. 80 Funktionen).
Überprüfen Sie das folgende Beispiel:
Nehmen wir an, Sie haben die Datei
tools / logo.py erstellt:
def is_prime(number): max_number = int(sqrt(number)) for multiplier in range(2, max_number + 1): if multiplier > max_number: break if number % multiplier == 0: return False return True
Jetzt möchten Sie es in der Datei
main.py verwenden. In diesem Fall müssen Sie entweder die gesamte Datei oder die gewünschten Dateieinheiten in die Zieldatei importieren, an der Sie arbeiten.
from tools.logic import is_prime print(is_prime(79))
Diese Regel gilt Python-weit. In den meisten Fällen müssen Sie, wenn Sie mit der Arbeit an einer Datei beginnen, zuerst zusätzliche Python-Objekte in Ihre Datei importieren: Ihre eigenen und integrierten Bibliotheken. Es ist, als ob PHP-Funktionen wie mysqli_ *, pdo_ *, memcached_ * sowie Ihr gesamter Code in Namensräumen gespeichert sind und Sie sie in jede Datei importieren müssen, mit der Sie arbeiten. Welche Vorteile hat dieser Ansatz?
- Erstens: Verschiedene Objekte in verschiedenen Dateien können identische Namen haben. Sie sind es jedoch, der das Objekt, seinen Namen und die Zieldatei auswählt.
- Zweitens: Refactoring ist viel einfacher. Sie können jederzeit eine Klasse, Funktion oder eine andere Entität verfolgen. Verwenden Sie eine einfache Suche, um eine Funktion zu finden und zu sehen, wo / wie sie verwendet wird.
- Drittens: Diese Funktion lässt Entwickler (zumindest teilweise) über die Codestruktur nachdenken.
Auf der anderen Seite können wir nur einen Nachteil erwähnen -
zirkuläre Importe . Es ist jedoch ein seltenes Problem. Außerdem ist es ein bekanntes Problem, und Entwickler kennen die Möglichkeiten, es zu beheben.
Ist es bequem, ständig Importe zu verwenden? Es hängt von Ihrer Präferenz ab. Wenn Sie mehr Kontrolle über den Code haben möchten, bevorzugen Sie die Verwendung von Importen. Einige Teams haben sogar Regeln, die die Reihenfolge der Zuweisung von externem Code regeln, um die Anzahl der zirkulären Importe zu minimieren. Wenn Ihr Team nicht über solche Regeln verfügt und Sie nicht viel stören möchten, können Sie sich einfach auf die IDE verlassen, die automatisch alles importiert, was Sie verwenden. Außerdem: Importe sind keine eindeutige Python-Funktion, sondern werden auch in Java und C # verwendet.
Bisher gab es keine Beschwerden.
Parameter * args und ** kwargs in einer Funktion
Die Syntax mit Standardparametern ist im Allgemeinen dieselbe:
function makeyogurt($flavour, $type = "acidophilus") { return "Making a bowl of $type $flavour."; }
vs. def makeyogurt(flavour, ftype="acidophilus"): return "Making a bowl of %s %s." % (ftype, flavour, )
Manchmal benötigen Sie jedoch eine Funktion für eine unbekannte Anzahl von Argumenten.
Zum Beispiel eine Proxy-Funktion, eine Protokollierungsfunktion oder eine Funktion zum Empfangen von Signalen. In PHP ist ab Version 5.6 die folgende Syntax verfügbar:
function sum(...$numbers) { $acc = 0; foreach ($numbers as $n) { $acc += $n; } return $acc; } echo sum(1, 2, 3, 4);
In Python können Sie einem Array jeweils unbenannte Argumente und einem Wörterbuch benannte Argumente hinzufügen:
def acc(*args, **kwargs): total = 0 for n in args: total += n return total print(acc(1, 2, 3, 4))
Jeweils
* args - Liste der unbenannten Argumente,
** kwargs - Wörterbuch der benannten Argumente.
Klassen
Schauen Sie sich den folgenden Code an:
class BaseClass: def __init__(self): print("In BaseClass constructor") class SubClass(BaseClass): def __init__(self, value): super(SubClass, self).__init__()
Die Hauptunterschiede zu PHP sind folgende:
- self wird anstelle von $ this verwendet , und Methoden werden immer mit dem Zugriffsoperator (".") aufgerufen. Außerdem sollte "Selbst" bei allen Methoden immer das erste Argument sein (na ja, in den meisten von ihnen). Der Punkt ist, dass Python allen Methoden einen Link zum Objekt mit dem ersten Argument zur Verfügung stellt (das Objekt selbst kann einer Variablen mit einem beliebigen Namen hinzugefügt werden).
- Wie in PHP gibt es ein Analogon von magischen Namen . Anstelle von __construct - __init__ . Anstelle von __get - __getattr__ usw.
- neu ist nicht erforderlich. Das Erstellen einer Klasseninstanz entspricht dem Aufrufen einer Funktion.
- Ein komplexerer Aufruf der übergeordneten Methode. Was Super betrifft, müssen Sie immer alle Details im Auge behalten. parent :: Wie bei PHP ist die Struktur weniger sperrig.
Wir sollten auch Folgendes erwähnen:
- Es kann mehr als eine Klasse geerbt werden.
- Kein öffentliches , geschütztes , privates . Python ermöglicht das Ändern einer Instanzstruktur (sowie der gesamten Klasse) während der Ausführung durch einfache Zuweisung, sodass kein Schutz erforderlich ist. Daher ist auch keine Reflexion erforderlich. Es gibt jedoch ein Analogon zum geschützten Zustand - doppelter Unterstrich vor dem Namen. Diese Operation ändert jedoch einfach den sichtbaren Namen der Variablen / Methode in _% ClassName% __% varname%, wodurch mit versteckten Daten gearbeitet werden kann.
- Keine statischen, endgültigen Klassen und Schnittstellen. Das Modell ist in Python im Allgemeinen objektbasierter. Anstelle von Singleton haben Sie wahrscheinlich eine Datei mit allen erforderlichen Funktionen oder eine Datei, die beim Importieren dieselbe Instanz zurückgibt. Anstelle der Schnittstelle werden Sie wahrscheinlich eine Klasse erstellen, die Ausnahmen für Methoden auslöst, die aus irgendeinem Grund nicht neu zugewiesen wurden (d. H. Problemumgehung ist möglich).
- Es ist nicht erwünscht, nur objektorientierte Programmierung (OOP) anzuwenden. Da ohnehin alles ein Objekt ist (auch bool) und die Syntax keine unterschiedlichen Operatoren zum Aufrufen einer Methode oder Funktion aus einer importierten Datei hat, werden alle Aufrufe mit dem Zugriffsoperator (".") Ausgeführt. Daher erfordert die Einkapselung nicht unbedingt OOP. Daher werden in den meisten Projekten Klassen dort erstellt, wo sie wirklich benötigt werden.
Codierungsstil
Ich habe an mehreren langfristigen Projekten gearbeitet und festgestellt, dass alle Teammitglieder einen anderen Codierungsstil haben. In vielen Fällen kann ein Code dabei helfen, den Code-Autor zu identifizieren. Ich wollte schon immer, dass ein Standard für den Codestil aus Gründen der Konsistenz übernommen wird.
Bei der Genehmigung dieses Dokuments im Team gab es jedoch immer viele Argumente. Dieses Problem betrifft auch Python, jedoch in geringerem Maße, da es mehrere Empfehlungen von qualifizierten Spezialisten gibt, die auf jeden Fall ausreichen werden, um damit zu beginnen:
Darüber hinaus gibt es ein sogenanntes Zen of Python. Eine seiner Regeln besagt: "Es sollte einen - und vorzugsweise nur einen - den vorherigen Weg geben, dies zu tun." Daher kann ein Code nicht auf mehrere ungefähr ähnliche Arten geschrieben werden. Das ist natürlich Idealismus, aber es hilft in vielen Fällen:
- Anstelle einer großen Bestandsbibliothek mit mehreren Funktionen, die sich teilweise gegenseitig duplizieren, verwenden wir einen kleineren Satz von Methoden und zusätzliche Integrationsbibliotheken (z. B. für Hash-Summen).
- Anstelle von strlen und count verwenden wir immer len .
usw.
Python-Versionen
Neue Versionen von PHP sind immer abwärtskompatibel mit früheren, obwohl manchmal Verbesserungen erforderlich sind. Auf der anderen Seite gibt es Python 2 und Python 3. Sie sind standardmäßig ein wenig inkompatibel. In letzter Zeit haben Python-Entwickler die Situation jedoch erheblich verbessert. Sie können einen Code für zwei Python-Versionen schreiben. Wenn Sie jedoch neue Python 3-Funktionen wie asynchrone Programmierung oder neue Unicode-Funktionen (UTF 8) verwenden, treten wahrscheinlich Schwierigkeiten auf. Aus diesem Grund verwenden Projekte, die bereits seit mehreren Jahren entwickelt und codiert wurden, immer noch Python 2.
Für neue Projekte gibt es jedoch keinen Grund, Python 2 zu verwenden.
Sprachübergreifende Aliase
Unten finden Sie eine Liste der Schlüsselwörter, die die Alternative erklären, die Python zu der derzeit verwendeten Technologie bietet.
- Komponist -> Pip
- mod_php -> mod_wsgi
- nginx + php-fpm -> nginx + uwsgi + uwsgi_python
- daemon.io -> Tornado, verdreht
- Zend Framework -> Django
- Phalcon -> Falke
Fazit
Woher weißt du, ob du es brauchst oder nicht?
- Sie glauben, je stärker das Tippen, desto besser.
- Sie bevorzugen eine Sprache mit einer gut organisierten Architektur.
- Sie sind ein Perfektionist, übermäßige Vielfalt nervt Sie.
- Python-Stellen in Ihrer Stadt sehen vielversprechender aus (oder Sie haben es gelangweilt, nur Webportale zu entwickeln).
- Sie möchten, dass Ihre Hauptprogrammiersprache für die Entwicklung jeglicher Art von Software geeignet ist (unter Berücksichtigung der angemessenen Einschränkungen im Zusammenhang mit der dynamischen Eingabe).
- Sie mögen das Können von Nachwuchsentwicklern nicht (aufgrund der relativ geringen Lernkurve).
Mein Weg, Python zu lernen
Wenn Sie ein erfahrener Entwickler sind, benötigen Sie bis zu drei Wochen, um es zu lernen, ohne zu viel Aufwand zu betreiben.
- Erste Woche : Lesen Sie Dive Into Python , Kapitel 2-7. Sie können andere Kapitel kurz durchsehen und dabei nur auf interessante Punkte achten. Erledigen Sie gleichzeitig 10 Aufgaben mit Project Euler . Erstellen Sie abschließend ein Konsolendienstprogramm, das Parameter akzeptiert. Sie können entweder eines Ihrer vorherigen Bash-Skripte portieren oder ein Analogon von ls aus BusyBox oder etwas Neues erstellen. Der Punkt ist, dass das Skript etwas Nützliches tun sollte, etwas, das Sie häufig tun. Zum Beispiel habe ich mein PHP-Dienstprogramm portiert, das Daten im Speichercache anzeigen kann.
- Zweite Woche : Erstellen Sie ein einfaches Analogon von Medium in Django und schießen Sie auf jedes Hosting. Beachten Sie die Komponenten: Registrierung, Anmeldung, Kennwortwiederherstellung, Freigeben von Posts und Kommentaren und Entfernen dieser, Überprüfen der Berechtigungen auf Aktionen.
- Dritte Woche : Wählen Sie ein Unternehmen aus, für das Sie arbeiten möchten, und senden Sie ihm Ihren Lebenslauf mit der Bitte um eine Python-Testaufgabe, um Ihre Fähigkeiten zu testen.
Viel Glück!