Chapitre un Notions de base sur la grammaire
Définition du logiciel
Désigne une collection de données informatiques et d'instructions organisées dans un ordre spécifique.
Données: certaines données que l' ordinateur peut reconnaître. Dans le disque dur: avi, doc, txt, py, en mémoire: constantes, variables, fonctions, objets, classes.
Instructions : Les étapes pour manipuler ces données pour effectuer des calculs préalables.
Processus d'exploitation du logiciel
Le code écrit par Python est appelé code source. Le code source peut-il être directement reconnu par l'ordinateur? Compilez le code source en code machine que l'ordinateur peut reconnaître, puis l'ordinateur exécute le code machine.
Deux modes de fonctionnement du logiciel:
-
Mode de fonctionnement de l'interface graphique
-
Mode de fonctionnement de la ligne de commande
Les langages de programmation de haut niveau sont divisés en deux catégories:
-
Type compilé statiquement: C, C ++, Java
-
Compiler: le code source doit être complètement compilé dans un fichier de code machine, puis le fichier de code machine doit être exécuté et le programme exécuté
-
Statique: les variables doivent avoir des définitions de type de données claires
-
-
Interprété dynamiquement: Python, JavaScript, Mathlab, Ruby, Go
-
Explication: Il n'est pas nécessaire de convertir complètement le code en code machine, lire un code source-compiler une phrase-exécuter une phrase
-
Dynamique: les variables n'ont pas de définition de type de données claire, toute variable de type de données peut être stockée
-
1.1 Données de base
Entier entier
Habituellement appelé entier, il vaut zéro, positif et négatif, sans point décimal.
Lors de l'expression de nombres, nous pouvons également utiliser la forme hexadécimale de deux, huit, dix, hexadécimal
>>> print(10)
10
>>> print(1001)
1001
>>> print(0b1001)
9
>>> print(0o1234)
668
>>> print(0x9C1A)
39962
>>> print(0x9W2Y)
File "<stdin>", line 1
print(0x9W2Y)
^
SyntaxError: invalid syntax
Remarque: le résultat imprimé est toujours décimal
La longueur entière de Python est de 32 bits à 4 octets, et il s'agit généralement d'une allocation continue de la fonction id () d'espace mémoire
>>> id(0)
2034812832
>>> id(1)
2034812848
>>> id(2)
2034812864
Lorsque Python initialise l'environnement, il divise un espace dans la mémoire, dédié à l'accès aux objets entiers. Bien entendu, cet espace n'est pas infini et les données qui peuvent être stockées sont limitées.
>>> id(251)
2034816848
>>> id(260)
13647712
>>> id(-10)
13647696
Petit pool d'objets entiers
Lorsque Python est initialisé, il crée automatiquement un petit pool d'objets entiers, ce qui est pratique pour nous d'appeler et d'éviter la génération répétée plus tard. Il ne contient que -5 ~ 256. Ces nombres sont nos nombres les plus couramment utilisés, ils sont donc chargés en mémoire par Python à l'avance. Pour l'utilisation d'entiers, s'il n'est pas compris entre -5 et 256, il sera toujours recréé.
>>> id(-5)
2034812752
>>> id(-6)
13647728
>>> id(256)
2034816928
>>> id(257)
13647648
>>> id(300)
13647696
>>> id(300)
13647712
>>> id(300)
13647680
Flottant de type virgule flottante
Les nombres à virgule flottante sont des décimales. Si les décimales sont trop longues, elles peuvent également être exprimées en notation scientifique.
>>> print(3.14)
3.14
>>> print(1.298765e10)
12987650000.0
>>> print(0.89e-5)
8.9e-06
>>> print(1.23e-8)
1.23e-08
Complexe
Un nombre complexe est composé de parties réelles et imaginaires, a + bj
>>> print(1+2)
3
>>> print(1+2j)
(1+2j)
>>> (1+2j)*(1-2j)
(5+0j)
>>> complex(1,2)*complex(1,-2)
(5+0j)
Booléen
Le bien et le mal, 0 et 1, positifs et négatifs, sont tous des types booléens au sens traditionnel
En Python, il n'y a que deux types booléens True et False
Les types booléens ne peuvent exister que dans les opérations logiques et les opérations de comparaison
>>> True + False
1
>>> True - False
1
>>> 3 > 2
True
>>> 2 < 1
False
>>> 3 > 2 and 2 < 1
False
Aucun 空 值 AucunType
La valeur nulle ne peut pas être comprise comme le nombre 0, c'est l'ensemble vide φ; nous l'utilisons principalement dans la création de séquences et dans la programmation orientée objet.
>>> None + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
>>> [None] * 10 # 创建一个长度为10的列表 没有数据 但有空间
[None, None, None, None, None, None, None, None, None, None]
Chaîne str
Il existe trois formes de chaîne de caractères: guillemets simples, guillemets doubles, guillemets triples (généralement utilisés dans les commentaires)
>>> print("HelloWorld")
HelloWorld
>>> print('你好')
你好
>>> print(" '' ")
''
>>> print(' "" ')
""
>>> print(' ' ')
File "<stdin>", line 1
print(' ' ')
^
SyntaxError: EOL while scanning string literal
>>> print(' \' ')
'
Échappées
-
\\
: Barre oblique inverse -
\'
:apostrophe -
\"
:Double citation -
\n
: Envelopper -
\t
: Onglet Horizontal
>>> print(' \' ')
'
>>> print("\")
File "<stdin>", line 1
print("\")
^
SyntaxError: EOL while scanning string literal
>>> print("\\")
\
variable
Variable : Le montant par lequel la valeur changera pendant l'exécution du programme.
Constante: la quantité par laquelle la valeur ne changera pas pendant l'exécution du programme. (Littéral, données qui apparaissent directement dans le code)
Qu'il s'agisse d'une variable ou d'une constante, un espace est ouvert dans la mémoire lors de sa création pour enregistrer leur valeur.
# Java中基本数据类型变量a,b 和 引用数据类型变量c d e
int a = 3;
int b = 8;
Object c = new Object();
Object d = new Object();
Object e = c;
En Python, tout est un objet!
>>> a = 1
>>> b = 1
>>> c = 1
>>> a == b
True
>>> id(1)
2034812848
>>> id(a)
2034812848
>>> id(b)
2034812848
>>> d = a
>>> d == b
True
>>> num1 = 300
>>> num2 = 300
>>> num3 = 300
>>> id(num1)
13647712
>>> id(num2)
13647696
>>> id(num3)
13647680
>>> num1 == num2
True
Vous ne pouvez pas comparer aveuglément l'adresse, mais aussi comparer si le contenu des deux objets est égal.
Dans l'espace variable, seule l'adresse d'un certain objet de données peut être stockée, et la variable est juste une référence à l'objet
Les variables doivent être affectées avant de pouvoir être appelées.
>>> print(num4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'num4' is not defined
Les variables peuvent être affectées en continu:
>>> a=b=c=10
>>> a
10
>>> b
10
>>> c
10
>>> a,b,c =10,20,30
>>> a
10
>>> b
20
>>> c
30
>>> a=b=c=1000
>>> id(a)
13647776
>>> id(b)
13647776
>>> id(c)
13647776
>>> a=1000
>>> b=1000
>>> c=1000
>>> id(a)
13647792
>>> id(b)
13647648
>>> id(c)
13647824
La variable elle-même en Python n'a pas de contrainte de type de données, il s'agit simplement d'une référence à un objet et elle stocke l'adresse mémoire des données de l'objet
Seuls les types de données sont distingués entre les objets de données.
Identifiant
Le soi-disant identifiant est le nom que nous donnons aux variables, constantes, fonctions, classes, etc.
Les dispositions suivantes:
-
Le premier caractère doit être une lettre ou un trait de soulignement
_
-
Bien que Python prenne en charge le chinois, nous pouvons également utiliser le chinois pour nommer, mais nous ne recommandons pas
-
Les mots commençant par un trait de soulignement ont une signification particulière dans la programmation orientée objet-privé
-
-
Les autres parties de l'identifiant sont constituées de lettres, de chiffres et de traits de soulignement
-
Les identifiants sont sensibles à la casse
-
Les noms de variables sont tous en minuscules et les noms de constantes sont tous en majuscules (il n'y a pas de constante PI = 3,14 en Python, et c'est essentiellement une variable)
-
Le nom de la fonction est en minuscules et souligné, ce qui équivaut au nom de la variable
-
Le nom de la classe utilise la méthode de dénomination du grand chameau: si le nom est composé de plusieurs mots, la première lettre de chaque mot est en majuscule
变量的命名不要使用关键字和内置函数的名称!
>>> True = 2
File "<stdin>", line 1
SyntaxError: cannot assign to True
>>> if = 3
File "<stdin>", line 1
if = 3
^
SyntaxError: invalid syntax
Mot-clé
Fait référence aux mots qui ont reçu une signification spéciale par les langages de programmation de haut niveau.
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
Ne peut pas non plus utiliser les fonctions intégrées (changer le nom des fonctions intégrées à d'autres fins)
>>> id(2)
2034812864
>>> id = 3
>>> id + 1
4
>>> id(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
En Python, tout est un objet et les fonctions elles-mêmes sont des objets!
>>> id(2)
2034812864
>>> id(id)
45545184
>>> abc = id
>>> abc(1)
2034812848
>>> id(1)
2034812848
>>> id = 10
>>> print(id)
10
>>> abc(id)
2034812992
Combien de fonctions intégrées y a-t-il?
>>> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
Commentaire
Remarque: une information textuelle utilisée par le programme n'est pas considérée comme faisant partie du programme.
-
Commentaire sur une seule ligne : # contenu du commentaire
-
Commentaires sur plusieurs lignes : plusieurs commentaires sur une seule ligne
-
Note du document : "" "Le contenu de la note peut expliquer les informations sur la fonction d'information de classe" ""