Capítulo Um Gramática Básica
Definição de software
Refere-se a uma coleção de dados e instruções do computador organizados em uma ordem específica.
Dados: alguns dados que o computador pode reconhecer. No disco rígido: avi, doc, txt, py, na memória: constantes, variáveis, funções, objetos, classes.
Instruções : As etapas para manipular esses dados para realizar cálculos de pré-requisitos.
Processo de operação de software
O código escrito por Python é chamado de código-fonte. O código-fonte pode ser reconhecido diretamente pelo computador? Compile o código-fonte em um código de máquina que o computador possa reconhecer e, em seguida, o computador executa o código de máquina.
Dois modos de operação do software:
-
Modo de operação da interface gráfica
-
Modo de operação de linha de comando
As linguagens de programação de alto nível são divididas em duas categorias:
-
Tipo compilado estaticamente: C, C ++, Java
-
Compilar: O código-fonte deve ser completamente compilado em um arquivo de código de máquina e, em seguida, o arquivo de código de máquina deve ser executado e o programa executado
-
Estático: as variáveis devem ter definições claras de tipo de dados
-
-
Interpretado dinamicamente: Python, JavaScript, Mathlab, Ruby, Go
-
Explicação: Não há necessidade de converter completamente o código em código de máquina, leia um código-fonte, compile uma frase, execute uma frase
-
Dinâmico: as variáveis não têm uma definição clara de tipo de dados, qualquer variável de tipo de dados pode ser armazenada
-
1.1 Dados básicos
Inteiro int
Normalmente chamado de inteiro, é zero, positivo e negativo, sem ponto decimal.
Ao expressar números, também podemos usar a forma hexadecimal de dois, oito, dez, hexadecimal
>>> 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
Nota: o resultado impresso é sempre decimal
O comprimento inteiro do Python é de 32 bits-4 bytes e geralmente é uma alocação contínua da função id () do espaço de memória
>>> id(0)
2034812832
>>> id(1)
2034812848
>>> id(2)
2034812864
Quando o Python inicializa o ambiente, ele divide um espaço na memória, dedicado ao acesso de objetos inteiros. É claro que esse espaço não é infinito e os dados que podem ser armazenados são limitados.
>>> id(251)
2034816848
>>> id(260)
13647712
>>> id(-10)
13647696
Pool de objetos de número inteiro pequeno
Quando o Python é inicializado, ele cria automaticamente um pequeno pool de objetos inteiros, que é conveniente para nós chamarmos e evitar a geração repetida posteriormente. Ele contém apenas -5 ~ 256. Esses números são nossos números mais comumente usados, portanto, são carregados na memória pelo Python antecipadamente. Para uso de inteiros, se não estiver entre -5 e 256, será recriado.
>>> id(-5)
2034812752
>>> id(-6)
13647728
>>> id(256)
2034816928
>>> id(257)
13647648
>>> id(300)
13647696
>>> id(300)
13647712
>>> id(300)
13647680
Tipo de ponto flutuante flutuante
Os números de ponto flutuante são decimais. Se os decimais forem muito longos, eles também podem ser expressos em notação científica.
>>> print(3.14)
3.14
>>> print(1.298765e10)
12987650000.0
>>> print(0.89e-5)
8.9e-06
>>> print(1.23e-8)
1.23e-08
Complexo
Um número complexo é composto de partes reais e imaginárias, 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
Certo e errado, 0 e 1, positivo e negativo, são todos tipos booleanos no sentido tradicional
Em Python, existem apenas dois tipos booleanos True e False
Os tipos booleanos só podem existir em operações lógicas e operações de comparação
>>> True + False
1
>>> True - False
1
>>> 3 > 2
True
>>> 2 < 1
False
>>> 3 > 2 and 2 < 1
False
Nenhum 空 值 NoneType
O valor nulo não pode ser entendido como o número 0, é o conjunto vazio φ, o utilizamos principalmente na criação de sequências e na programação orientada a objetos.
>>> 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]
String str
Existem três formas de sequência de caracteres: aspas simples, aspas duplas, aspas triplas (geralmente usadas em comentários)
>>> print("HelloWorld")
HelloWorld
>>> print('你好')
你好
>>> print(" '' ")
''
>>> print(' "" ')
""
>>> print(' ' ')
File "<stdin>", line 1
print(' ' ')
^
SyntaxError: EOL while scanning string literal
>>> print(' \' ')
'
Fugas
-
\\
: Barra invertida -
\'
:apóstrofo -
\"
:Aspas duplas -
\n
: Embrulho -
\t
: Guia horizontal
>>> print(' \' ')
'
>>> print("\")
File "<stdin>", line 1
print("\")
^
SyntaxError: EOL while scanning string literal
>>> print("\\")
\
variável
Variável : a quantidade pela qual o valor mudará durante a execução do programa.
Constante: o valor pelo qual o valor não mudará durante a execução do programa. (Literal, dados que aparecem diretamente no código)
Independentemente de se tratar de uma variável ou constante, um espaço é aberto na memória quando é criado para salvar seu valor.
# Java中基本数据类型变量a,b 和 引用数据类型变量c d e
int a = 3;
int b = 8;
Object c = new Object();
Object d = new Object();
Object e = c;
Em Python, tudo é um objeto!
>>> 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
Você não pode comparar cegamente o endereço, mas também comparar se o conteúdo dos dois objetos é igual.
No espaço da variável, apenas o endereço de um determinado objeto de dados pode ser armazenado, e a variável é apenas uma referência ao objeto
As variáveis devem ser atribuídas antes de serem chamadas.
>>> print(num4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'num4' is not defined
As variáveis podem ser atribuídas continuamente:
>>> 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
A própria variável em Python não tem restrição de tipo de dados, é apenas uma referência a um objeto e armazena o endereço de memória dos dados do objeto
Apenas os tipos de dados são diferenciados entre os objetos de dados.
Identificador
O assim chamado identificador é o nome que damos às variáveis, constantes, funções, classes, etc.
As seguintes disposições:
-
O primeiro caractere deve ser uma letra ou sublinhado
_
-
Embora Python suporte chinês, também podemos usar chinês para nomear, mas não recomendamos
-
As palavras que começam com um sublinhado têm um significado especial na programação orientada a objetos privada
-
-
As outras partes do identificador consistem em letras, números e sublinhados
-
Identificadores diferenciam maiúsculas de minúsculas
-
Os nomes das variáveis são todos minúsculos e os nomes das constantes são todos maiúsculos (não há constante PI = 3.14 em Python, e é essencialmente uma variável)
-
O nome da função está em minúsculas e sublinhado, o que é equivalente ao nome da variável
-
O nome da classe usa o método de nomenclatura big camel case: se o nome consistir em várias palavras, a primeira letra de cada palavra é maiúscula
变量的命名不要使用关键字和内置函数的名称!
>>> True = 2
File "<stdin>", line 1
SyntaxError: cannot assign to True
>>> if = 3
File "<stdin>", line 1
if = 3
^
SyntaxError: invalid syntax
Palavra-chave
Refere-se a palavras que receberam significados especiais por linguagens de programação de alto nível.
>>> 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']
Também não pode usar funções integradas (alterar o nome das funções integradas para outros 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
Em Python, tudo é um objeto e as próprias funções são objetos!
>>> id(2)
2034812864
>>> id(id)
45545184
>>> abc = id
>>> abc(1)
2034812848
>>> id(1)
2034812848
>>> id = 10
>>> print(id)
10
>>> abc(id)
2034812992
Quantas funções integradas existem?
>>> 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']
Comente
Nota: Um pedaço de informação de texto usado pelo programa não é considerado parte do programa.
-
Comentário de uma linha : # conteúdo do comentário
-
Comentários de várias linhas : vários comentários de uma linha
-
Nota do documento : "" "O conteúdo da nota pode explicar as informações da função de informação da classe" ""