Beginnen Sie mit Python! ~ ② Grammatik ~

Überblick

Dies ist eine Fortsetzung der Umweltkonstruktionsausgabe Last time. Dieses Mal werfen wir einen kurzen Blick auf Pythons Grammatik.

Funktionen von Python

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.)

Offizielle Website

Dieses Mal möchte ich die Grammatik mit dem weit verbreiteten Python 2.7.x überprüfen. (Verwenden Sie 2.7.12.)

Python-Syntax

Semikolon ist veraltet

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.

Kommentar

Sie können mit \ # kommentieren.

Behandeln Sie japanische Zeichen

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

Variable

Es kann ohne spezielles Präfix deklariert werden.

msg = 'hello from gemcook'

print msg

Datentyp

Folgende Datentypen können von Python verarbeitet werden.

--Numerischer Wert

Numerischer Typ

Arithmetik von Brüchen und ganzen Zahlen

Wenn Sie einen Bruch und eine ganze Zahl berechnen, wird dieser zu einem Bruch.

Trunkation Integer

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

String

Bei der Ausgabe einer japanischen Zeichenfolge

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

Escape-Zeichen

Beschreibe mit \.

print 'It\'s a pen!'

Wenn es viele Zeilenumbrüche und Fluchtwege gibt

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>
'''

Anleitung für Strings

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)

Umwandlung von Zahlen und Zeichen

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'

Listentyp

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]

Bequeme Anweisungen vom Listentyp

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)

Taple-Typ

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.

Gegenseitige Umwandlung zwischen Tapple und Liste

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.

Set (kollektiver Typ)

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.

Wie erstelle ich ein Set?

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])

Berechnung von Mengen

# 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])

Wörterbuchtyp

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

Wörterbuchtyp-Methode

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)]

Einbetten von Daten in einen Zeichenfolgentyp

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

Integer Wert

Kleine Nummer

String

Wörterbuchtyp

-% ([keyName]) Wird durch [Zeichen des Typwerts] dargestellt.

Andere

Typprüfung

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

Bedingte Verzweigung

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'

Vergleichsoperator

Ein Vergleichsoperator.

Logischer Operator

Logische Operatoren sind intuitiver. (Mit JS&&, ||, !)

if else-Anweisung

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'

Bedingter Zweig in einer Zeile

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'

Wiederholung

Sie können die for-Anweisung verwenden. Die Syntax lautet wie folgt.

Listentyp-Schleife

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 

weiter und brechen

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

Dictionary-Typ-Schleife

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

while-Schleife

Es gibt auch eine while-Schleife.

# coding: UTF-8

n = 0

while n < 10:
    print n
    n += 1
else:
    print 'finish'

Funktion

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()

Streit

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.

Argumentinitialisierung

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.

Argumentspezifikation

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.

return-Anweisung

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')

Definition der leeren Funktion

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.

Variabler Umfang

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]

Lambda-Anweisung

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.

Objekt (Klasseninstanz)

Eine Klasse erstellen

# 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

Punkt

Klassenvererbung

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!

Modul

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.

Eingebautes Modul

Module, die ursprünglich ohne Importanweisungen wie len, split, join erstellt wurden

Standardmodul

Von Python vorbereitete Module, die jedoch ohne Import nicht verwendet werden können

Externes Modul

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

Punkt

Bei großen Modulen wie datetime ist es möglich, nur die erforderlichen Teile auszuschneiden. Verwenden Sie in diesem Fall den Befehl from.

Zusammenfassung

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

Beginnen Sie mit Python! ~ ② Grammatik ~
Beginnen Sie mit Python! ~ ① Umweltbau ~
Link, um mit Python zu beginnen
Erste Schritte mit Python
Beginnen Sie mit Python mit Blender
Django 1.11 wurde mit Python3.6 gestartet
1.1 Erste Schritte mit Python
Beginnen Sie mit MicroPython
Beginnen wir mit TopCoder in Python (Version 2020)
Holen Sie sich ein Date mit Python
Beginnen Sie mit Mezzanine
Erste Schritte mit Python
Wie Python-Anfänger mit Progete beginnen
[Blender x Python] Beginnen wir mit Blender Python !!
Python-Handspiel (Beginnen wir mit AtCoder?)
Zubu Amateur will Python starten
[Cloud102] # 1 Erste Schritte mit Python (Teil 1 Python Erste Schritte)
Holen Sie sich den Ländercode mit Python
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Holen Sie sich Twitter-Timeline mit Python
Beginnen Sie mit influxDB + Grafana
Holen Sie sich Youtube-Daten mit Python
Erste Schritte mit Python Django (1)
Fangen Sie mit Django an! ~ Tutorial ④ ~
Erste Schritte mit Python Django (4)
Erste Schritte mit Python Django (3)
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Holen Sie sich die Thread-ID mit Python
Einführung in Python Django (6)
Holen Sie sich Lager mit Python
Holen Sie sich das Home-Verzeichnis mit Python
Holen Sie sich Tastaturereignis mit Python
IfcOpenShell-Python-Bindungen werden gestartet
Erste Schritte mit Python Django (5)
Holen Sie sich Alembic-Informationen mit Python
Beginnen Sie in 30 Minuten mit Python! Erstellen Sie eine Entwicklungsumgebung und lernen Sie grundlegende Grammatik
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
Ich habe versucht, mit Blenders Python script_Part 02 zu beginnen
Python gestartet
Erste Schritte mit Python Responder v2
Holen Sie sich Bewertungen mit Python Googlemap API
Erste Schritte mit Python-Webanwendungen
Erste Schritte mit Python für PHPer-Klassen
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich Web-Screen-Capture mit Python
Holen Sie sich das Wetter mit Python-Anfragen 2
Wie fange ich mit Scrapy an?
[Kleine Geschichte] Holen Sie sich mit Python einen Zeitstempel
Wie fange ich mit Django an?
Holen Sie sich Qiita-Trends mit Python-Scraping
Beginnen Sie mit dem maschinellen Lernen mit SageMaker
Erste Schritte mit genetischen Python-Algorithmen
Erste Schritte mit Python 3.8 unter Windows
Erste Schritte mit Python für PHPer-Funktionen
Holen Sie sich Wetterinformationen mit Python & Scraping
Mindestkenntnisse, um mit dem Python-Protokollierungsmodul zu beginnen
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Schritt Notizen, um mit Django zu beginnen