Dies ist eine Fortsetzung der Umweltkonstruktionsausgabe Last time. Dieses Mal werfen wir einen kurzen Blick auf Pythons Grammatik.
Python heißt "eine einfache und leicht zu erlernende objektorientierte Sprache".
Python wird seit langem als Sprache zum Erlernen der Programmierung verwendet. In letzter Zeit wurde es als Google App Engine verwendet, und es gibt viele Plug-Ins für maschinelles Lernen und Datenmanipulation, sodass es viel Aufmerksamkeit auf sich gezogen hat. (In Japan ist es nicht so auffällig, aber es scheint in Übersee sehr beliebt zu sein.)
Dieses Mal möchte ich die Grammatik mit dem weit verbreiteten Python 2.7.x überprüfen. (Verwenden Sie 2.7.12.)
Semikolons am Ende von Sätzen sind in der Python-Syntax veraltet. (Es ist in pep8 definiert, was im nächsten und den folgenden Artikeln erklärt wird.) Das Ende des Satzes wird durch einen Zeilenumbruch dargestellt.
Sie können mit \ # kommentieren.
Wenn ich japanische Zeichen in den Code in Python einfüge, wird der folgende Fehler ausgegeben.
File "index.py", line 2
SyntaxError: Non-ASCII character '\xe3' in file index.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for
details
Beim Umgang mit Japanisch im Code muss UTF-8 explizit deklariert werden.
# coding: UTF-8
#Oben können Sie Japanisch für den Code verwenden
print 'hello' #Grüße hallo
Es kann ohne spezielles Präfix deklariert werden.
msg = 'hello from gemcook'
print msg
Folgende Datentypen können von Python verarbeitet werden.
--Numerischer Wert
Wenn Sie einen Bruch und eine ganze Zahl berechnen, wird dieser zu einem Bruch.
Wenn Sie die ganzen Zahlen teilen, erhalten Sie das Ergebnis der Kürzung.
print 10 / 3 # 3
Wenn Sie eine kleine Anzahl erhalten möchten, können Sie wie folgt vorgehen.
print 10 / 3.0 # 3.3333333333
Ausgabe mit "u" (Unicode) am Anfang der Zeichenkette. (Ohne u werden bei der Suche nach Zeichenfolgen keine korrekten Ergebnisse erzielt.)
print 'hello' + 'world' # helloworld
print u'Ist' *5 # IstIstIstIstIst
Beschreibe mit \.
print 'It\'s a pen!'
Wenn Sie es in '' 'und' '' einschließen, wird der Bereich unterbrochen und erzwungene Flucht, wenn er unterbrochen wird.
print '''
<html lang="ja">
<body>
</body>
</html>
'''
s = 'abcdefghi'
print len(s) # 9
print s.find('c') # 2(Wenn es nicht existiert-Rückgabe 1)
print s[2] # c
print s[2:5] # cde(Kehrt bis zum 5. zurück)
print s[2:] # cdefghi
print s[:5] # abcde
print s[2:-1] # cdefgh(Gibt bis zu eins vor dem letzten Zeichen zurück)
In anderen Sprachen wie JS werden numerische Zeichen automatisch in numerische Werte konvertiert. ('1' wird als 1 beurteilt)
Da Python die Typkonvertierung nicht automatisch durchführt, muss die Typkonvertierung explizit durchgeführt werden.
print 5 + '5' #Ein Fehler wird auftreten.
Wenn Sie in eine Ganzzahl konvertieren möchten, gehen Sie wie folgt vor.
print 5 + int('5') # 10
Gleiches gilt für Zeichenketten.
age = 20
print 'i am ' + str(age) + ' years old'
In anderen Sprachen wird es als Array bezeichnet.
sales = [
255,
100,
353
]
Der Inhalt der Liste kann jedem Elementtyp zugewiesen werden.
sales = [
255,
100,
353,
'apple'
]
Sie können für Listen dieselben Anweisungen wie für Zeichenfolgen verwenden.
sales = [
255,
100,
353,
'apple'
]
sales2 = [
500,
'orange'
]
print sales # [255, 100, 353, 'apple']
print sales * 2 # [255, 100, 353, 'apple', 255, 100, 353, 'apple']
print sales + sales2 # [255, 100, 353, 'apple', 500, 'orange']
print len(sales) # 4
print sales[3] # 'apple'
sales[2] = 250
print sales # [255, 100, 250, 'apple']
Es gibt auch einen Existenzprüfungsbefehl.
sales = [
255,
100,
353,
'apple'
]
print 100 in sales # True
Es gibt auch eine Anweisung zum Erstellen einer Liste von Seriennummern.
print range(3) # [0, 1, 2]
print range(1, 3) # [1, 2]
print range(3, 10, 2) # [3, 5, 7, 9]
list ist eine Variable vom Listentyp und str ist eine Variable vom Typ Zeichenfolge.
d = '2013/12/15'
print d.split('/') # [2013, 12, 15]
list = ['a', 'b', 'c']
print string.join(list)
Der Taple ist im Grunde der gleiche wie die Liste. Es hat jedoch die Eigenschaft, dass die Elemente nicht geändert werden können.
Sie können dieselben Anweisungen wie Arrays verwenden.
tuple1 = (2, 5, 8)
tuple2 = (5, 5, 5)
print tuple1 + tuple2 # (2, 5, 8, 5, 5, 5)
print 2 in tuple2 # True
tuple1[2] = 10 #Dies führt zu einem Fehler.
Mit dem Befehl zum Konvertieren des Typs, der der Konvertierung zwischen Zeichenfolgen und Zahlen entspricht, kann flexibel zwischen Tapple und Liste gewechselt werden.
array = [
'dog',
'cat',
'tiger'
]
print array # ['dog', 'cat', 'tiger']
tupleChange = tuple(array)
listChange = list(tupleChange)
print tupleChange # ('dog', 'cat', 'tiger')
print listChange # ['dog', 'cat', 'tiger']
Neben der Lehre, dass die Daten nicht explizit geändert werden können, bedeutet die Verwendung von Tapples Dies führt auch zu einer Verbesserung der Verarbeitungsgeschwindigkeit.
Wenn der Taple verfügbar ist, verwenden Sie den Taple.
Das Set ist das gleiche wie die Liste und das Taple, und die Daten sind aufgereiht. Es hat die Funktion, keine Duplizierung zuzulassen.
Sie können die Menge so berechnen, wie sie als Mengenart bezeichnet wird.
a = set([1, 2, 3])
b = set([3, 4, 5])
Außerdem werden doppelte Daten ignoriert.
print set([1, 2, 3, 3, 3, 4, 5]) # set([1, 2, 3, 4, 5])
# coding: UTF-8
a = set([1, 2, 3, 6])
b = set([3, 4, 5, 7])
#Differenz gesetzt(Dinge, die in a sind, aber nicht in b)
print b - a # set([1, 2, 6])
#Summensatz(Was ist in a und b)
print a | b # set([1, 2, 3, 4, 5, 6, 7])
#Produktset(Duplikate in a und b)
print a & b # set([3])
#Nur einer von a und b
print a ^ b # set([1, 2, 4, 5, 6, 7])
Es ist ein Objekt in JS. Ich denke, der Swift-Wörterbuchtyp ist näher am Bild.
mugiwara = {
'luffy': 100000000,
'zoro': 77000000
}
print mugiwara # {'zoro': 77000000, 'luffy': 100000000}
Beachten Sie, dass die Ausgabeelemente in keiner bestimmten Reihenfolge sind.
In Bezug auf Zuordnung und Erwerb unterscheidet es sich nicht von einer Liste.
mugiwara = {
'luffy': 100000000,
'zoro': 77000000
}
print mugiwara['luffy'] # 100000000
mugiwara['zoro'] = 120000000
print mugiwara # {'zoro': 120000000, 'luffy': 100000000}
Sie können das Vorhandensein des Schlüssels auch mit dem Befehl in überprüfen.
mugiwara = {
'luffy': 100000000,
'zoro': 77000000
}
print 'luffy' in mugiwara # True
Dies ist eine für den Wörterbuchtyp eindeutige Methode.
mugiwara = {
'luffy': 100000000,
'zoro': 77000000
}
#Holen Sie sich eine Liste der Schlüssel.
print mugiwara.keys() # ['zoro', 'luffy']
#Holen Sie sich eine Liste von Werten.
print mugiwara.values() # [77000000, 100000000]
# key-Holen Sie sich eine Liste von Werten.
print mugiwara.items() # [('zoro', 77000000), ('luffy', 100000000)]
Es ist auch möglich, andere Typen in einen Zeichenfolgentyp einzubetten, ohne sich um die Typkonvertierung kümmern zu müssen.
a = 3000000000
b = 1.234
c = 'luffy'
d = {
'choppa': 50,
'usoppu': 300000000
}
#Integrieren Sie ganzzahlige Werte
print 'decimal: %010d' % a # 3000000000
#Integrieren Sie Dezimalzahlen
print 'float: %.1f' % b # 1.2
#Integrieren Sie eine Zeichenfolge
print 'name: %s' % c # luffy
#Integrieren Sie den Wörterbuchtyp
print 'berry: %(choppa)d' % d # 30000000
#Integrieren Sie mehrere Werte
print '%s: %d' % (c, a) # luffy: 300000000
-% ([keyName]) Wird durch [Zeichen des Typwerts] dargestellt.
Die Python-Typprüfung lautet wie folgt.
score = 70
print type(score) # <type, int>
Sie können auch mit True / False zurückkehren.
score = 70
print isinstance(score, int) # True
print isinstance(score, str) # False
Verwenden Sie es wie gewohnt. Der bedingte Ausdruck () ist nicht erforderlich. Die Verarbeitung nach Beurteilung der Bedingung wird durch Einrücken ausgedrückt.
# coding: UTF-8
score = 70
if 60 < score < 80:
print 'ok' # 'ok'
Ein Vergleichsoperator.
=
Logische Operatoren sind intuitiver. (Mit JS&&, ||, !)
Die if else-Anweisung ist fast dieselbe wie in anderen Sprachen. Denken Sie daran, dass nur elif ein bisschen charakteristisch ist.
score = 70
if int(score) > 60:
print 'ok'
elif score > 40:
print 'soso'
else:
print 'ng'
In den meisten Sprachen gibt es eine Möglichkeit, einen bedingten Zweig in einer Zeile zu zeichnen. (JS ternärer Operator usw.)
Bedingte Verzweigung ist in einer Python-Zeile etwas schwierig. Lassen Sie es uns auswendig lernen, um einfachen Code zu schreiben.
score =70
print 'ok' if score > 60 else 'ng'
Sie können die for-Anweisung verwenden. Die Syntax lautet wie folgt.
sales = [13, 3523, 31, 238]
result = 0
for sale in sales:
result += sale
else:
print result
Das Folgende ist ein Prozess, der nur einmal ausgeführt wird, wenn die Wiederholung abgeschlossen ist.
range()
Wenn Sie einfach eine Seriennummer anzeigen möchten, können Sie range () verwenden.
for i in range(10):
print i # 0 1 2 3 4 5 6 7 8 9
Verwenden Sie continue und break, um den Schleifenprozess zu überspringen oder zu beenden.
for i in range(10):
if i == 3:
continue
elif i == 5:
break
Wörterbuchschleifen verwenden die Funktion iterXXXX ().
# coding: UTF-8
mugiwara = {
'luffy': 300,
'zoro': 100,
'sanji': 50
}
# key,Holen Sie sich beide Werte.
for key, value in mugiwara.iteritems():
print 'key: %s, value: %d' % (key, value)
#Holen Sie sich nur den Schlüssel.
for key in mugiwara.iterkeys():
print key
#Holen Sie sich nur Wert.
for value in mugiwara.itervalues():
print value
Es gibt auch eine while-Schleife.
# coding: UTF-8
n = 0
while n < 10:
print n
n += 1
else:
print 'finish'
Es ist eine gewöhnliche Funktion. Registrieren Sie mehrere Prozesse gleichzeitig.
Verwenden Sie das Schlüsselwort def.
Als Grammatikregel (pep8) machen Sie beim Definieren einer Funktion zwei Leerzeilen.
# coding: UTF-8
def sayHello():
print 'hello'
sayHello()
Natürlich kann man auch argumentieren.
# coding: UTF-8
def sayHello(name, num):
print 'hello, %s.' % name * num
sayHello('Luffy', 2) # hello, Luffy.hello, Luffy.
Setzen Sie den Anfangswert mit = auf der Registrierungsseite. (In pep8 ist kein Leerzeichen zwischen ihnen.)
# coding: UTF-8
def sayHello(name, num=3):
print 'hello, %s.' % name * num
sayHello('Luffy') # hello, Luffy.hello, Luffy.hello, Luffy.
Es ist auch möglich, das Argument auf der Ausführungsseite explizit anzugeben.
# coding: UTF-8
def sayHello(name, num=3):
print 'hello, %s.' % name * num
sayHello('Luffy') # hello, Luffy.hello, Luffy.hello, Luffy.
sayHello(num=2, name='Zoro') # hello, Zoro.hello, Zoro.
Wenn Sie den Befehl return auf der Registrierungsseite verwenden, können Sie das Ergebnis der Funktion als einfachen Wert zurückgeben.
# coding: UTF-8
def sayHello(name='no name'):
return 'hello, %s' % name
print sayHello(name='Nami')
Möglicherweise möchten Sie vorerst nur die eigentliche Funktion definieren und die Verarbeitung des Inhalts später beschreiben. In einem solchen Fall denke ich, dass in anderen Sprachen die leere Funktion wie folgt definiert ist. (Zur Zeit von JS)
index.js
#Nur die Entität, die Beschreibung des Inhalts ist noch keine Funktion
function sayHello() {
}
In Python wird die Funktion nicht durch {} definiert, und das Ende des Satzes wird durch Einrückung ausgedrückt, sodass die Übergabeanweisung nur zum Definieren einer leeren Funktion vorbereitet wird.
def sayHello2():
pass
print sayHello2() # None
Sie können den nicht definierten Fehler vermeiden, indem Sie den Befehl pass verwenden.
In Python sind Variablen innerhalb einer Funktion nur innerhalb der Funktion gültig.
# coding: UTF-8
name = 'Luffy'
def sayHello():
name = 'Zoro'
#Nicht Zoro
print name # Luffy
map
Es ist eine Anweisung, eine Funktion für jedes Element der Liste auszuführen. Der Map-Befehl wird wie folgt ausgeführt.
# coding: UTF-8
listItems = [2, 5, 8]
def double(x):
return x * x
map(double, listItems) # [4, 25, 64]
In Python ist es auch möglich, eine anonyme Funktion zu definieren, die nur einmal verwendet wird. Ich habe ein Lambda definiert, das den Zielwert mit der Karte nur verdoppelt.
# coding: UTF-8
listItems = [2, 5, 8]
result = map(lambda x: x * x, listItems)
print result # [4, 25, 64]
Geben Sie ein Argument unmittelbar nach Lambda an. (map weist x die Elemente der Liste einzeln zu.) Lambda ist ein Bild, in dem nur der Wert in der return-Anweisung zurückgegeben wird.
# coding: UTF-8
#Nehmen Sie als Klischee das Objekt als Argument der Klasse.
class User(object):
# __init__Ist der JS-Konstruktor
#Das erste Argument self wird bei der Initialisierung immer benötigt
def __init__(self, name):
self.name = name
#Bei Verwendung der Eigenschaftsmethode der Zielklasse in der Funktion
#Nimm dich selbst als erstes Argument.
def greet(self):
print 'my name is %s' % self.name
bob = User('Bob')
tom = User('Tom')
print bob.name # 'Bob'
bob.greet() # my name is Bob
tom.greet() # my name is Tom
__init__
ist eine Initialisierungsmethode, wenn eine Klasse instanziiert und von Python vorbereitet wird.
--Wenn Sie eine Funktion definieren, ist das erste Argument self (dies für JS) erforderlich.Beschreiben Sie beim Erben einer Klasse den Namen der erbenden Quelle im Argument der Klasse.
# coding: UTF-8
class User(object):
def __init__(self, name):
self.name = name
def greet(self):
print 'my name is %s' % self.name
class SuperUser(User):
def shout(self):
print '%s is SUPER!' % self.name
luffy = SuperUser('Luffy')
luffy.shout() # Luffy is SUPER!
Es enthält nützliche Anweisungen, die Python im Voraus vorbereitet hat.
Auf der offiziellen Website finden Sie Informationen zu den verfügbaren Modulen.
Es gibt drei Haupttypen von Modulen, die Python vorbereitet.
Module, die ursprünglich ohne Importanweisungen wie len, split, join erstellt wurden
Von Python vorbereitete Module, die jedoch ohne Import nicht verwendet werden können
Modul, das nach der Installation des Moduls mit pip durch Importieren verwendet werden soll
Das folgende Beispiel zeigt den Import eines externen Moduls.
# coding: UTF-8
import math
import random
#Importieren Sie nur das Datumsmodul in das Datums- / Uhrzeitmodul
from datetime import date
print math.ceil(5.2) # 6.0
for i in range(5):
print random.random()
print date.today() # 2016-10-08
Bei großen Modulen wie datetime ist es möglich, nur die erforderlichen Teile auszuschneiden. Verwenden Sie in diesem Fall den Befehl from.
Python hat eine einzigartige Syntax, aber ich denke, es ist im Grunde leicht zu merken und ziemlich lesbar. Ich denke, es ist eine angenehme Sprache zu schreiben.
Das nächste Mal möchte ich Django erkunden, das beliebteste Framework in Python.
Recommended Posts