Grammaire de base Python3

Un mémorandum pour vous-même, facile à oublier.

#Grammaire la plus rapide de Python

#référence

#Tout le monde est Python 3e édition

# [python]Grand Thanksgiving de fin d'année! Présentation de 50 conseils Python pour l'évasion des débutants
# http://kwatch.houkagoteatime.net/blog/2013/12/07/python-tips/

#Spécification d'encodage
# -*- coding: utf-8 -*-


#Saut de code =;(point-virgule)


#Importation de module
import moduleName
from moduleName import functionName

from math import *  # import all functions
from math import e
from math import e as newName
from math import (e, pi) #Mettre entre parenthèses si plusieurs importations

##Le nom du module peut être omis à l'aide de l'instruction from
import math
math.sin(60)

from math import sin
sin(60)

##Créer un fichier de module
## (Le fichier de script peut être utilisé comme module tel quel)

# 1. moduleName.Ecrire une fonction en py
# 2. import moduleName


#Je veux couper une ligne au milieu d'une ligne: barre oblique inverse à la fin de la ligne(\)
import urllib, poplib, sys, calendar, \
    datetime, re


#littéral
b = 0b1000  #Nombre binaire
c = 0x1ff   #Hexadécimal

#Type booléen
True
False

# Null
None


#Les symboles sont sensibles à la casse
python = 100
Python = 200
print(python, Python) #=> 100 200


#Sortie vers sortie standard(Avec saut de ligne)
print("abc")
print("abc", "def") #Connectez-vous avec un espace demi-largeur
print("abc", file=sys.stderr)   #Sortie d'erreur standard

#Concaténer sans interruption
for i in range(10):
    print("abc", end = ' ') #=> abc abc abc abc abc abc abc abc abc abc


#Obtenir à partir d'une entrée standard
s = raw_input()
#s = input()     # == eval(raw_input())


#Quatre règles
x += 1
x -= 1
x *= 1
x /= 1

x = 2 ** 10 #Puissance

x = 3 / 2   #Valeur de retour = virgule flottante
x = 3 // 2  #Valeur renvoyée = entier

x = 5 % 3   #Surplus

x++         #Cette façon d'écrire ne peut pas être utilisée
x--         #Cette façon d'écrire ne peut pas être utilisée


#Chaîne littérale
s = "abc'def"
s = 'abc"def'
s = r'\d+\s\n'  #chaîne brute(Traitez comme vous le voyez)


#Manipulation des cordes
"abcdef"[0]
"abcdef"[0] = "x" # =>Erreur
"abcdef"[-1]

"abcdef".title()
"abcdef".lower()
"abcdef".upper()
"abcdef".endswith('f')
"abcdef".startswith('a')
"abcdef".strip()
"abcdef".count('c')
"abcdef" + "ghijkl"
"abcdef" * 3
"abcdef".replace("abc","replaced")

"abcdef".find('x')  #=> -1
"abcdef".index('x') #=> ValueError

#Justifié à gauche, justifié à droite, justifié au centre
"abcdef".ljust(10," ")
"abcdef".rjust(10," ")
"abcdef".center(10," ")

"abc def".split(" ")
" ".join(["abc","def"])

len("abcdef")

ord("a")
chr(52)

if "a" in "abcdef":
    do_something()

#Format de chaîne
"{0} {1} {0}".format("Mika", "Mike")
"{name0} {name1} {name0}".format(name0="Mika", name1="Mike")
"{:.2%}".format(6260 / 12776) #Notation en%


#Échange de valeur(Générer des tuples sans parenthèses)
b, a = a, b


#Ici document
lines = '''
de cette façon
Plusieurs lignes
Peut être décrit

Si vous ne souhaitez pas insérer de sauts de ligne\
Citation arrière à la fin(\)Avec
'''


#Si vous souhaitez conserver le retrait()utilisation(Pas de virgule)
lines = ("aaaaaa"
  "bbbbb"
         "ccccc")


#Opérateur conditionnel(Opérateur binaire)
return "odd" if odd(x) else "even"

s = "odd" if odd(x) else "even"


#Conversion de type
int("123")
hex(1023)
bin(15)
oct(7)
float("1.3")
str(123)
tuple([1,2,3])
list((1,2,3))


#Conversion de base
int("0x100", 16)
int("0b1111", 2)
int("0o1777", 8)


#Opération de bit
x | y   # or
x & y   # and
x ^ y   # xor
x << y  # left shift
x >> y  # right shift


#une fonction
def functionname(x):
    """
Commentaire de fonction
    """
    do_something()
    return result


def moveTo(x,y=0):  #Valeur par défaut de l'argument
    do_something()

moveTo(x=1, y=20)   #Spécification de mot-clé d'argument

#Branche conditionnelle
if s == "abc":  # =ne pas==
    statementA()
elif s == "def":
    statementB()
else:
    statementC()

if min <= value <= max: #Vous pouvez écrire des opérateurs de comparaison consécutivement
    do_something()


#Valeurs de retour multiples(Affectation de déballage)
def foo():
    minValue = 1
    maxValue = 9
    return minValue, maxValue

minValue, maxValue = foo()

(minValue,  #valeur minimum
 maxValue,  #Valeur maximum
 ) = foo()


#Arguments variables
def foo(a, b, *vals):
    print(a, b, vals)

foo(1, 2, 3, 4)     # => 1, 2, (3, 4)


#Argument de mot-clé variable
def foo(a, b, **args):
    print(a, b, args)

foo(1, 2, c=3, d=4)     # => 1, 2, {'c': 3, 'd': 4}


#Opérateur conditionnel:== != > < <= >= not in
#Opérateur logique: et ou xor


#l'instruction switch n'est pas en python


#Répéter (nombre de fois spécifié)
for i in range(6): # i = 0 to 5
    do_something()


for i in range(1, 10, 2): #début,Fin,Étape I= 1,3,5,7,9
    do_something()


#Contrôle de boucle

    continue
    break


#Déclaration While
while condition:
    do_something()


#Il n'y a pas de faire ~ en python


for loopCounter, item in enumerate(seq):    #Avec compteur de boucles
    print(loopCounter, item)


for no, name in zip([1, 2, 3, 4], ['name1', 'name2', 'name3', 'name4']):    #Combinez deux séquences
    print(no, name)


#Gestion des exceptions
try:
    if condition:
        raise Exception()   #Lever intentionnellement une exception
except Exception as e:
    #La gestion des erreurs
    msg = "{1}(err={2})".format(e.errno, e.strerror)
    sys.stderr.write(msg)
else:
    #Traitement lorsqu'une exception ne se produit pas
finally:
    #Post-traitement (toujours exécuté)

try:
    ...
except Exception as e:
    print e, 'error occurred'


#avec déclaration:Rendre l'exécution des blocs efficace
#Si le processus échoue, n'exécutez pas le bloc

with open(fn) as f: #S'il échoue ici, le traitement à l'intérieur du bloc ne sera pas exécuté.
    for line in f :
        print(line)

##Gérer les exceptions dans le module de traceback
import traceback

try:
    do_something()
except:
    traceback.print_exc()               #Afficher l'exception
    message = traceback.format_exc()    #Obtenir comme une chaîne

#liste
a = [1, 2, 3, 4, 5]
a[0]
a[-1]   #S'il s'agit d'un nombre négatif, de la fin
a[5] # => Error

#Slice: donne le dernier index +1 de l'élément que vous souhaitez récupérer
a[1:3]      #=> a[1] ~ a[3 - 1]Se lever pour=> [2, 3]
a[2:]       #=> [3, 4, 5]
a[:3]       #=> [1, 2, 3]
a[2:100]    #=> [3, 4, 5]
a * 2       #=> [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
a + [6,7]   #=> [1, 2, 3, 4, 5, 6, 7]
a[1] = "x"  #=> [1, "x", 3, 4, 5, 6, 7]

del a[1]    #=> [1, 3, 4, 5, 6, 7]

a.index(1)

if 1 in a:
    do_something()

max(a)
min(a)
a.sort()    #Attention car il sera réécrit
a.sort(key=compareFuncName)
a.reverse() #Attention car il sera réécrit

a.append(6) # add()n'est pas
a.extend([6, 7, 8])
a.remove(1)
a.pop(0)


#Tableau multidimensionnel
matrix = [[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]]
matrix[0][2]


#Taple
# (Liste non réinscriptible/Efficacité de la mémoire/Peut être utilisé comme clé de dictionnaire)
t = (1, 2, 3, 4, 5)

#D'autres sont identiques à la liste

#Exemple d'utilisation
ipmap = {(192.168.0.1):"host1.name.com",
         (192.168.0.2):"host2.name.com",}


#dictionnaire
dict = { "key1":"Tokyo", "key2":"Préfecture d'Osaka" }
dict["key1"]

# .get():Renvoie la valeur spécifiée sans erreur même s'il n'y a pas de clé
for word in lines.split():
    wordcount[word] = wordcount.get(word, 0) + 1


dict["key1"] = "Hokkaido"
del dict["key1"]
dict.keys()
dict.values()
dict.items()    # key,Renvoie une liste de tuples de valeur

if "key1" in dict:
    do_something()


#Synthétique
dict1.update(dict2) #Écraser la même clé

#ensemble
s = {1, 2, 3, 4}
s2 = {5, 6}

s.remove(7)     # KeyError
s.discard(7)    # no error

s.add(7)
s |= {7}

if s == s2:
    do_something()

if 1 in s:
    do_something()

s.union(s2)                 # s |ensemble de somme s2
s.intersection(s2)          # s &ensemble commun s2
s.difference(s2)            # s -jeu de différence s2
s.symmetric_difference(s2)  # s ^Jeu de différences symétriques s2


# map(Convertir chaque élément de la séquence)
map1 = map(str,  range(5))

#Jugement nul
if x is (not) None:
    do_something()


#Lecture de fichiers
f = open("foo.txt", "r", encoding="utf-8")
s = f.read()
line = f.readline()     #1 ligne
lines = f.readlines()   #Toutes les lignes
f.close()

#Écriture de fichier
f = open("foo.txt", "w", encoding="utf-8")
f.write(s)
f.writelines(seq)   #Notez qu'aucun saut de ligne n'est ajouté
f.close()

#Notation inclusive (complétion)
sq = [x ** 2 for x in range(5)]
sq #=> [0, 1, 4, 9, 16]

val = 10
[x for x in range(1,val) if val % x == 0]   #=> [1, 2, 5]


filter2 = [x for x in ['cat','dog', 'bird'] if 'cat' in x]
filter2 #=> ['cat']

tz = {"GMT" : "+000", "BST" : "+100",
      "EET" : "+200", "JST" : "+900"}
revtz = {value : name for name,  value in tz.items()}
revtz   #=> {'+200': 'EET', '+100': 'BST', '+000': 'GMT', '+900': 'JST'}

names = ['BOB', 'Burton', 'dave',  'bob']
unames = {x.title() for x in names}
unames  #=> {'Bob', 'Dave', 'Burton'}

#Commande de ne rien faire

pass

#Test de l'unité

from Hoge import *  #Cible de test
import unittest

class HogeClassTestCase(unittest.TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def testFooMethod(self):
        self.assertEqual(1, Hoge().foo())

if __name__ == "__main__":
    unittest.main()


#Mesure du temps de la pièce de code

import timeit
timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)


#Obtenir la ligne de commande
for arg in sys.argv[1:] # argv[0]=Le nom du script lui-même
    print(arg)


#Analyse des options de ligne de commande
from arse import OptionParser

VERSION = '1.01'

def main():
    version = '%prog version ' + VERSION
    usage = "usage: %prog [options] directories..."
    description = 'Delete empty directories.'

    parser = OptionParser(version=version, usage=usage,
                          description=description)
    parser.add_option("-f", "--file", dest="filename",
                      help="read data from FILENAME")
    parser.add_option("-v", "--verbose",
                      action="store_true", dest="verbose")
    parser.add_option("-q", "--quiet",
                      action="store_false", dest="verbose")

    (options, args) = parser.parse_args()
    if len(args) != 1:
        parser.error("incorrect number of arguments")
    if options.verbose:
        print "reading %s..." % options.filename

if __name__ == "__main__":
    main()

#Itérateur (itérateur externe)
# (Tous les objets intégrés peuvent être convertis en itérateurs)
# (Il est difficile de définir une classe pour la définir)

i = iter([1, 2, 3]) #Convertir en objet itérateur
next(i)             #Extraire l'élément suivant(Exception StopIteration si l'élément a disparu)

for line in open("test.txt"):   #Traitez chaque ligne du fichier
    print(line, end=" ")

#Générateur (générateur interne)
# (Définir des fonctionnalités de type itérateur à l'aide de fonctions)
#Utiliser la déclaration de rendement

def get_primes(x=2):
    while True:
        for i in range(2, x):
            if x  %  i  == 0:
                break
        else:
            yield x
        x += 1

i = get_primes()
for c in range(10):
    print(next(i))

#Génération par formule de générateur

gen = (ord(s) for s in 'Python')
next(gen)

for code in (ord(s) for s in 'Python'):
    print(code)

#Test de l'unité

#TODO:Écrivez plus tard


#Style Lambda

lambda x: x * 10


#Bloquer à exécuter uniquement lorsqu'il est exécuté dans main
# (Non importé d'autres scripts)

if __name__  ==  '__main__':
    do_something()


#Définition et instanciation de classe

class Person(SuperClassName): #Le nom de la classe est en majuscule
    def __init__(self, name, age): #Initialisation(1er argument nécessaire)
        self.name, self.age = name, age
        self.address = None

bob = Person('Bob', 15)
print bob.name
bob.address = 'USA'

##Héritage de classe (héritage multiple possible)

class Person(SuperClassName):
    def __init__(self, width):
        super().__init__()  #L'appel à la classe parent est super()
        self.width = width

#Restrictions sur l'ajout d'attributs (variables d'instance)

class Klass:
    __slot__ = ['width', 'height']  #Les attributs non écrits ici ne peuvent pas être ajoutés
    def __init__(self):
        self.width = 0
        self.height = 0

i = Klass()
i.width = 1
i.c = 0 # AttributeError

#Masquage (encapsulation) des méthodes et des attributs Ajouter _ au début du nom
self._size #Inaccessible de l'extérieur de la classe
self.__size #Inaccessible de l'extérieur de la classe

## Setter / Getter(Méthode dédiée pour modifier ou référencer des données)
##Propriété(Setter /Fonction pour définir facilement Getter)
##Empêcher la réécriture de l'extérieur de la classe comme des attributs

class Prop(object):
    def __init__(self):
        #Le nom utilisé en interne est différent du nom de propriété x(Prévention des boucles infinies)
        self.__x = 0

    def getx(self):     # Getter
        return self.__x

    def setx(self, x):  # Setter
        self.__x = x

    #Obtention de la propriété x,Définir le poseur
    x = property(getx, setx)

i = Prop()
i.x = 0


##Tour de l'aura de l'opérateur(redéfinition)

__add__(self, other)        # + (self + other)
__sub__(self, other)        # -
__mul__(self, other)        # *
__truediv__(self, other)    # /
__floordiv__(self, other)   # //

__iadd__(self, other)       # +=
__isub__(self, other)       # -=
__imul__(self, other)       # *=
__itruediv__(self, other)   # /=
__ifloordiv__(self, other)  # //=

__or__(self, other)         # | (or)
__and__(self, other)        # & (and)

##Comparaison de l'aura de l'opérateur
## equal, not equal, lesser than, greater than, ...

__eq__(self, other)         # ==
__ne__(self, other)         # !=
__lt__(self, other)         # <  (self < other)
__gt__(self, other)         # >

__le__(self, other)         # <=
__ge__(self, other)         # >=

##Remplacement de la conversion de type

__int__(self)   # int()
__bytes__(self)
__float__(self)
__str__(self)
__repr__(self)  #Conversion en représentation sous forme de chaîne de caractères imprimable

__format__(self, form_spec) # format()Redéfinir le format dans

##Méthode spéciale utilisée dans le type de conteneur

__len__(self)   # len()
__getitem__(self, key) # obj[key]
__setitem__(self, key, value) # obj[key] = value
__delitem__(self, key) # del obj[key]

__iter__(self)  # iter() :Renvoie un objet itérateur
                # (À l'intérieur__next_()Besoin de définir une méthode appelée)

__getattr__(self, attributeName)    #N'existe pas dans l'objet
                                    #Appelé lorsqu'un attribut est référencé
                                    #Si vous voulez que l'attribut soit inexistant
                                    # raise AttributeError
__getattrubute__(self, attributeName)    #Appelé sans condition__getattr__

__setattr__(self, attributeName, value)  #Appelé lors de l'attribution

__call__(self[, args...])   #Le nom de l'objet est suivi de parenthèses
                            #Appelé lorsqu'il est appelé en tant que fonction

__del__(self)   #Destructeur

__hash__(self)  # hash()Renvoie la valeur de hachage sous forme d'entier

##Détermination du type d'objet

isinstance(var, type)   #Jugement de type(ype= str, int, float, ...)

##Obtenir des attributs (y compris des méthodes)
s = "abcde"

s.find("cd")
getattr(s, "find")("cd") # find()Appelez la méthode


#Bibliothèque standard

##Obtenir des données du serveur Web
from urllib import request
src = request.urlopen('http://www.python.org/').read()

from urllib import request,  parse
url = 'http://www.python.org/somefile.zip'
filename = parse.urlparse(url)[2].split('/')[-1]
request.urlretrieve(url, filename)

##Dictionnaire ordonné
from collections import OrderedDict
od = OrderedDict()

##Dictionnaire avec prix par défaut
from collections import defaultdict
animals = [('Chat', 'Main Kuhn'),
           ('Chat', 'Abyssin'),
           ('chien', 'Carlin'),
           ('chien', 'Husky sibérien'),
           ('chien', 'bouledogue') ]
dd = defaultdict(list) #Un dictionnaire avec une liste vide comme valeur initiale
for k, v in animals :
    dd[k].append(v)

dd # =>  defaultdict(<class 'list'>, {'Chat': ['Main Kuhn', 'Abyssin'], 'chien': ['Carlin', 'Husky sibérien', 'bouledogue']})


##Aide à l'ajout d'éléments à une liste triée
import bisect

##Gérer la date et l'heure
import datetime

datetime.date.today()   #aujourd'hui
datetime.datetime.now() #Date et heure actuelles

datetime.datetime(2014, 3, 2, 16, 32, 00)
datetime.time(16, 32, 00)
datetime.date(2014, 3, 2)

d = datetime.date(2014, 3, 2)
d.year  #2014
d.month # 3
d.day # 2
d.weekday() # 6:Jour quotidien
d.strftime('%Y/%m/%d %H:%M:%S') # '2014/03/02 00:00:00'

d = datetime.strptime('2014/03/02 00:00:00', '%Y/%m/%d %H:%M:%S')

###Différence de date et d'heure(La comparaison et la multiplication / division sont également possibles)
delta = datetime.timedelta(days=5)
d1 = datetime.date(2014, 2, 6)
d2 = d1 + delta
print(d2)   # 2014-02-11

d2 = datetime.date(2014, 3, 2)
d1 = datetime.date(2014, 2, 6)
d2 = datetime.date(2014, 3, 2)
delta = d2  -  d1
print(delta)    # 24 days, 0:00:00

##Obtenir des informations sur le calendrier
import calendar

###Jour et nombre de jours dans l'année et le mois spécifiés
(days, first_weekday) = calendar.monthrange(2014, 2)
print(days, first_weekday) #5 28

calendar.month(2014, 2) #Calendrier de sortie

##Expressions régulières
import re

re.findall(r'[abcde]', 'abcdefg')   # ['a', 'b', 'c', 'd', 'e']
re.split(r',', 'ab,cde,fg')         # ['ab', 'cde', 'fg']
re.sub(r'a', 'b', 'abcde')          # 'bbcde'

match = re.search(r'a', 'abcdea')
print(match)
match = re.match(r'a', 'abcdea')
print(match)

for match in re.finditer(r'[a-z]+', 'This is a pen.'):
    print(match.group(0), end =' ') # his is a pen

s = 'abcd,efgh,ijkl'
r = re.compile(r'[abcde]', re.IGNORECASE | re.MULTILINE  | re.DOTALL)
r.findall(s)

##Obtenir et utiliser les paramètres système
import sys

sys.argv[0]  #Le script en cours d'exécution lui-même
sys.argv[1:] #Paramètres de ligne de commande
sys.exit(0)
sys.getdefaultencoding()

##Acquérir et exploiter des informations dépendant du système d'exploitation telles que les systèmes de fichiers et les processus
import os

os.getenv(key, default=None)
os.chdir(path)
os.getcwd()
os.remove(path)
os.rename(src, dest)
os.mkdir(path, mode)
os.mkdirs(path, mode)   #Créez un chemin en chemin
os.rmdir(path)
os.removedirs(path) #Supprimer au milieu

os.path.exists(path)
os.path.getsize(path)
os.path.isfile(path)
os.path.isdir(path)
os.path.join(path, path2, ...)
dirname, filename = os.path.split(path)

path = r'c:\users\default\desktop.ini'
os.path.dirname(path)   #Nom du répertoire
os.path.basename(path)  #nom de fichier
path_without_ext, ext = os.path.splitext(path) #extension


##Module mathématique
import math

math.pi
mati.sqrt(2)
mati.sin(60)
mati.cos(60)
mati.tan(60)

##nombre aléatoire
import random

random.seed(value) #Graine aléatoire

x = random.random() # 0 <= x <= 1
y = random.randint(1, 10) #Entier de 1 à 10

###Traversez la hiérarchie
for dirpath, dirnames, filenames in os.walk(path, topdown=True, oneerror=None):
    do_something()

###processus/Exécution d'une commande externe
exit_status = os.system(command)   #Exécutez le processus et attendez qu'il se termine(Renvoie le code de fin)
os.startfile(path)  #Commande de démarrage de Windows

import commands
stdout_text = commands.getoutput(command)   #Exécutez le processus et attendez qu'il se termine(Renvoie la sortie standard)

Installation d'IPython

>pip install ipython

Lancez IPython

>ipython

Lancez IPython Notebook

>ipython notebook --inline

Recommended Posts

Grammaire de base Python3
Mémo de grammaire de base Python
Grammaire de base du système Python3 (quelques itérations de Python)
Installation de Python et grammaire de base
Mémo de grammaire de base Python (1)
Grammaire de base Python (divers) Mémo (3)
Grammaire de base Python pour les débutants
J'ai appris la grammaire de base de Python
Grammaire de base Python (divers) Mémo (4)
Installation de Python (Python 3.7.7) et grammaire de base
RF Python Basic_01
vérification de la grammaire python
Écriture de base Python
Notes de grammaire Python
Grammaire de base du système Python3 (dictionnaire)
RF Python Basic_02
[Grammaire de base] Différences entre Ruby / Python / PHP
[Python] J'ai personnellement résumé la grammaire de base.
Grammaire de base de la série Python3 (chaîne de caractères)
Grammaire de base de la série Python3 (liste, tapple)
Grammaire de base du système Python3 (notation incluse)
[Go] Grammaire de base ① Définition
Cours de base Python (12 fonctions)
Cours de base Python (7 dictionnaire)
Cours de base Python (2 installation Python)
Tri de base en Python
[Go] Grammaire de base ② Instruction
Python ~ Apprentissage rapide de la grammaire ~
Cours de base Python (9 itérations)
[python] méthode de base de la classe
Cours de base Python (11 exceptions)
Cours de base Python (6 sets)
Aide-mémoire Python3 (basique)
Cours de base Python (Introduction)
Mémorandum de base Python partie 2
python basic ② sous windows
[Go] Grammaire de base ③ Pointeur
Mémo de base Python - Partie 2
Cours de base Python (13 cours)
Connaissance de base de Python
Mémo de base Python - Partie 1
mémorandum python super basique
Cours de base Python (8 branches)
Instruction if de base Python
Cours de base Python (3 Exécution de Python)
Python Basic --Pandas, Numpy-
Application Python: Pandas Partie 1: Basique
Refactoring appris avec Python (Basic)
Fonctionnalités de grammaire ajoutées à partir de Python3.6
Python
Authentification BASIC avec bouteille Python
Ordre de tri des dict de base Python
[Python] Utilisation d'OpenCV avec Python (basique)
Cours de base Python (10 notation d'inclusion)
Cours de base Python (5 List Taple)
[Pour les débutants] Apprenez la grammaire de base Python gratuitement en 5 heures!