Mémo Python

Message d'image Python

https://nktmemo.wordpress.com/2014/01/05/画像のurlを受け取りbase64テキストに変換する(python)/

Utiliser la classe pour créer un nouveau type de données

[Exemple: type de dés avec un seul nom, qui n'a pas de fonction]

>>> class Dice:
...     pass
...

[Instance d'appel]

>>> sai = Dice()

Si aucune erreur ne se produit, un nouveau type de dés a été préparé et affecté à la variable sai.

Qu'est-ce qu'un «nouveau type de données»?

La nature est déterminée par l'attribut (attribut), Créez des fonctions par des méthodes.

Exemple) Dés ・ Propriétés: 6 faces et chiffres gravés dessus ・ Vous pouvez lancer et décider d'un numéro

[Type de données] -Une collection d'attributs de données (attributs) et de fonctions (méthodes) plus simples. "Attribut" et "Méthode" Comment c'est Le mécanisme (dessin de conception) qui détermine la classe est le concept de classe.

La classe est un dessin de conception de type de données
Créer un nouveau type de données avec le mot-clé class

Ajoutez un attribut de données qui exprime le nombre de faces de dés au type de dés.

>>> class Dice:
...     face_num = 6
...
>>> 

Appeler une instance

>>> sai = Dice()
>>> sai.face_num

6

Un nouvel attribut de données, face_num, a été ajouté au type de dés. Vous pouvez voir que 6 est stocké.

Pensez à la différence entre les méthodes et les fonctions

[Une fonction qui renvoie au hasard un nombre de 1 à 6]

>>> import random
>>>
>>> def shoot():
...     return random.randint(1,6)
...

Si vous mettez cette fonction dans la classe telle quelle, elle ne fonctionnera pas comme une méthode.

Alors que devons-nous faire

Règles qui définissent les méthodes

・ "Self" qui doit écrire un argument

sample.py


Réunis en module

>>> import random
>>>
>>> class Dice:
...     face_num = 6
...     def shoot(self):
...             return random.randint(1,6)
... 

>>> sai = Dice()
>>> sai.shoot()
5

face_num = 6 n'est pas utilisé Par exemple

※Erreur

err.py


>>> import random
>>>
>>> class Dice:
...     face_num = 6
...     def shoot(self):
...             return random.randint(1,face_num)
... 

Cela entraînera une erreur. face_num = 6 Vous ne pouvez pas voir les variables extérieures depuis l'intérieur de la méthode. Il est décidé que les données utilisées dans la fonction sont passées en argument

face_num est un attribut de données que le type Dice possède par lui-même, donc Il est gênant de se donner la peine de le passer comme argument à la méthode. À mesure que le nombre d'attributs de données augmente, le nombre d'arguments de méthode augmente, ce qui devient difficile.

Lors de la préparation d'une instance, nous ne savons pas quel nom de variable l'utilisateur attribuera. Il est décidé d'appeler l'instance "self" dans le premier argument de la méthode afin qu'une instance de type Dice puisse être créée avec n'importe quel nom.

Décidez de vous référer à vous-même

sample.py


>>> class Dice:
...     face_num = 6
...     def shoot(self):
...             return random.randint(1,self.face_num)
...
Lorsque j'ai créé la fonction, je pouvais voir les variables en dehors de la fonction, mais pourquoi le visage se trouve-t-il juste à côté ici?_Tu ne vois pas num?

La plage à partir de laquelle la variable peut être référencée est déterminée par l'emplacement défini.
portée.

Type de portée

Ce que tu peux voir d'où tu es Uniquement la "portée intégrée" et la "portée du module" auxquelles vous appartenez.

import random

random.randint(1,10)

Si vous lui donnez le nom au hasard comme celui-ci, vous pouvez vous y référer. Il est appelé "espace de nom".

sample.py



#! /usr/bin/python
#-*- coding:utf-8 -*-

import dice

sai = dice.Dice()
count = sai.shoot()
print(count)

sample.py



import random

class Dice:
        face_num = 6
        def shoot(self):
            return random.randint(1,self.face_num)

L'identité de la méthode d'initialisation

Lors de la préparation d'une instance avec un type de données autre que le type de données intégré, il était nécessaire d'appeler la méthode d'initialisation. Étant donné que le type de dés créé n'est pas un type de données intégré, je l'ai écrit comme suit.

sai = dice. Dice()

Je fais toujours ça comme ça. Cela appelle une méthode d'initialisation sans arguments. Lorsque vous créez un "nouveau type de données" à l'aide de la classe, Python fournit automatiquement une méthode d'initialisation sans arguments. Que faire si je souhaite modifier le comportement de cette méthode d'initialisation?

Le vrai nom de la méthode d'initialisation init

[Achevée]

dice.py


import random

class Dice:
        face_num = 6
        def __init__(self):
            print("Hello")

        def shoot(self):
             return random.randint(1,self.face_num)

sample.py



#! /usr/bin/python
#-*- coding:utf-8 -*-

import dice

sai = dice.Dice()
count = sai.shoot()
print(count)

Hello
2

Modifier le type de dés

Lors de l'appel de la méthode d'initialisation afin que différents types de dés puissent être réalisés avec le type Dice 4, 6, 8, 12, 20 avec des arguments Spécifiez l'un des nombres entiers de Être capable de décider de la forme des dés.

dice2.py



import random

class Dice:
    def __init__(self,val):
        self.face_num = val

    def shoot(self):
         return random.randint(1,self.face_num)

test10.py



import dice2

sai = dice2.Dice(4)
count = sai.shoot()
print(count)

Si aucun argument n'est donné, une erreur se produira

Définissez la valeur par défaut de l'argument val dans dice2.py

import random

class Dice:
    def __init__(self,val=6):
        self.face_num = val

    def shoot(self):
         return random.randint(1,self.face_num)

développement

Il n'existe que 5 types de tétraèdres réguliers, mais le type Dice actuel est un argument de la méthode d'initialisation. Toute valeur sera spécifiée. Donc, Vérifiez l'argument avec la méthode d'initialisation et donnez une erreur si ce n'est pas possible.

Le fait que l'argument soit un nombre spécifié ou non est évalué à l'aide du mot-clé dans et d'une liste.

>>> 4 in [4,6,8,12,20]
True

>>> 7 in [4,6,8,12,20]
False

>>> 7 not in [4,6,8,12,20]
True

dice3.py


#coding:UTF-8

import random

class Dice:
    def __init__(self,val=6):
        if val not in [4,6,8,12,20]:
            raise Exception("Il n'y a pas de tel polyèdre.")
            self.face_num = val

    def shoot(self):
        return random.randint(1,self.face_num)

test10.py



import dice3

sai = dice3.Dice(99)
count = sai.shoot()
print(count)

dice3.py



#! /usr/bin/python
#-*- coding:utf-8 -*-

import random

class Dice:
    def __init__(self,val=6):
        if val not in [4,6,8,12,20]:
            #raise Exception("Il n'y a pas de tel polyèdre")
            print("Il n'y a pas de tel polyèdre")
        self.face_num = val

    def shoot(self):
        return random.randint(1,self.face_num)
-*- coding:utf-8 -*-

import dice3

num = input("4,6,8,12,Lequel des 20 jouerez-vous?:")
my_dice = dice3.Dice(num)
cpu_dice = dice3.Dice(num)

my_pip = my_dice.shoot()
cpu_pip = cpu_dice.shoot()

Convertir des nombres en chaînes à l'aide de la fonction str

print("CPU:"+ str(cpu_pip) + "tu"+ str(my_pip))

if my_pip > cpu_pip:
    print("Toutes nos félicitations. Vous gagnez")
elif my_pip < cpu_pip:
    print("Pardon!Tu as perdu")
else:
    print("C'est un tirage au sort")

Résumé

-Le type de données est composé d'attributs de données et de méthodes ・ Pour créer un nouveau type de données, créez une classe qui sert de dessin de conception. ・ La classe organise les attributs de données (attributs) et les méthodes -Les méthodes sont ajoutées à la classe en utilisant le mot-clé def, tout comme les fonctions. -La méthode doit toujours avoir "self" comme premier argument -La substance de la méthode d'initialisation est une méthode nommée init

Qu'est-ce que Django

Un framework d'application Web implémenté en Python. Un framework qui hérite de l'architecture MVC (Model-view-Controll).

Django réduit la quantité de code et facilite la création de sites Web complexes centrés sur les bases de données.

https://django-docs-ja.readthedocs.org/

Installation

pip install django

projet

-Un projet est un package Python qui contient tous les paramètres d'une instance Django. ・ Créez un site Web en un seul projet. -Créer et placer une nouvelle application spécifique au projet dans le projet -Dispose de paramètres pour chaque site Web (paramètres de base de données, paramètres d'option Django, paramètres pour chaque application, etc.).

Commande django-admin

En exécutant "start project", le répertoire du projet (myprj) et Le fichier initial est créé

django-admin startproject myprj

・ Myprj/
· Gérer.py
・ Myprj
・__init__.py
· Réglages.py
・ URL.py
・ Wsgi.py

application

Le contenu n'est qu'un package Python. Peu importe où PYTHON va.

Lors de la création d'un répertoire de sondages et des fichiers initiaux

cd myprj
python manage.py startapp polls

modèle

Django propose un mappeur O / R. Vous pouvez écrire une mise en page de base de données en code Python.

Chaque modèle est une classe Python qui hérite de la classe django.db.models.Model et correspond à une table de la base de données.

Répartiteur d'URL

・ Modèle d'URL écrit en expression régulière -Ecrire dans le module "URLconf" qui définit le mappage des fonctions Python. (Peut être divisé pour chaque application) (En définissant l'URL avec un nom, vous pouvez faire référence à l'URL par ce nom à partir du code ou du modèle.)

Vue

Fonction qui renvoie une réponse HTTP · Objet HttpResponse pour la page demandée · Exceptions comme Http404

Une fonction d'affichage typique est

  1. Obtenir des données à partir des paramètres de demande
  2. Chargez le modèle
  3. Rendre et renvoyer le modèle en utilisant les données acquises

http://django-docs-ja.readthedocs.org/en/latest/contents.html

Recommended Posts

Mémo Python
mémo python
Mémo Python
mémo python
Mémo Python
Mémo Python
[Python] Mémo sur le dictionnaire
mémo débutant python (9.2-10)
mémo débutant python (9.1)
★ Mémo ★ Python Iroha
[Python] Mémo EDA
Mémo opérateur Python 3
[Mon mémo] python
Mémo de métaclasse Python3
[Python] Mémo de fond de carte
Mémo débutant Python (2)
[Python] Mémo Numpy
Classe Python (mémo d'apprentissage Python ⑦)
installation de python openCV (mémo)
Module Python (mémo d'apprentissage Python ④)
Mémo de visualisation par Python
Python
Mémo du package de test Python
[Python] Mémo sur les fonctions
mémo d'expression régulière python
Recherche de bisection (python2.7) mémo
[Mon mémo] python -v / python -V
Mémo de type Liste / Dictionnaire Python3
[Mémo] Tri de liste Python3
Astuces Python (mon mémo)
[Python] Mémo sur les erreurs
Mémo de script DynamoDB (Python)
Mémo de base Python - Partie 2
livre de recettes python Memo
Notes de commande de base Python
Mémo du didacticiel Python OpenCV
Mémo de grammaire de base Python
Mémo de l'API TensorFlow (Python)
liens de mémo utiles python
Mémo d'opération de décorateur Python
Mémo de base Python - Partie 1
Élément de mémo Python efficace 3
Mémo Python d'énumération approximative
Mémo Python (pour moi): Array
Gestion des exceptions Python (mémo d'apprentissage Python ⑥)
Mémo de mesure du temps d'exécution Python
Mémo graphique Twitter avec Python
[Line / Python] Mémo d'implémentation Beacon
Mémo tranche python et rubis
Mémo de grammaire de base Python (1)
Mémo de code personnel Python
Raspeye + Python + Mémo OpenGL
Grammaire de base Python (divers) Mémo (3)
Mémo int de type immuable Python
mémo python utilisant perl --join
Mémo récapitulatif des types de données Python
Grammaire de base Python (divers) Mémo (2)
[MEMO] [Construction de l'environnement de développement] Python
[Python] mémo de procédure de création virtualenv
Grammaire de base Python (divers) Mémo (4)