Seção IX / Seção X
Operação ternária (Operação trinocular)
- Sintaxe:
- "v = a se a> b else b" # Resumo automático: retorna a quando a condição for atendida, retorne b quando a condição não for atendida
Função
1. Fundamentos da função
1.1 Estrutura básica da função
def 函数名(参数):
#函数内容
pass
函数名(参数) # 执行函数
1.2 Valor de retorno
- valor de retorno, a função retorna Nenhum por padrão
def func():
reuturn 1,3,"abc" #这种情况会自动转换为元组返回
1.3 Parâmetros de função
- Qual é a passagem do parâmetro da função? [Endereço de memória = referência]
- Qualquer número
- Qualquer tipo
- Referência de posição
def func(name,age,gender):
pass
func("伊万科夫",25,"人妖")
- Palavra-
chave de passagem e palavra - chave de passagem e posição, o parâmetro de posição deve estar na frente, o parâmetro de palavra-chave está na parte de trás - Valor padrão do parâmetro [definição]
e se o valor padrão for do tipo variável ---》 pit
#该部分代码解释了为什么默认值慎用可变类型
def func(data,value=[]):
value.append(data)
return value
v1=func(1) #[1,]
v2=func(1,[11,22,33]) # [11,22,33,1]
v3=func(2) # [1,2]
print(v1) #[1,2]
def func(name,age,gender='男'):
pass
func("伊万科夫",25,gender="人妖")
func("伊万科夫",gender="人妖",25) # 错误方式
func("伊万科夫",25) # gender不传的情况下使用默认值 “男”
- Parâmetros universais
-
* args recebe qualquer número de parâmetros posicionais
e pode receber qualquer número de parâmetros e converte todos os parâmetros em uma tupladef func(*args): # 将所有参数打包成元组传递 print(args) v1 = func((11,22,33,44,55)) #将参数元祖作为整个元组的第一个参数 print(v1) # ((11,22,33,44,55),) v2 = func(*(11,22,33,44,55))# 将元组元素打散再打包成元组传递 print(v1) # (11,22,33,44,55) #********************************************************** def func(*args,**kwargs): print(args) print(kwargs) func(*(11,"aaa"),444,"abc",name="沙鳄鱼",age='30') """ (11, 'aaa', 444, 'abc') {'name': '沙鳄鱼', 'age': '30'} """
-
** kwargs recebe qualquer número de parâmetros de palavras-chave
e recebe parâmetros de palavras-chave, e o valor da chave é convertido em um dicionáriodef func(**kwargs): print(kwargs) func(k1="v1",k2="v2") #转换字典{"k1":"v1","k2":"v2"} func(**{"k1":"v1","k2":"v2"}) #直接传递字典{"k1":"v1","k2":"v2"} #********************************************************** def func(*args,**kwargs): print(args) print(kwargs) func((11,"aaa"),444,"abc",name="沙鳄鱼",age='30') """ ((11, 'aaa'), 444, 'abc') {'name': '沙鳄鱼', 'age': '30'} """
-
1.4 Escopo da função
- Escopo global
- Escopo local
- Resumo:
- Uma função e um escopo
- Regras para encontrar dados no escopo: agora olhe dentro do escopo próprio, não é possível encontrar na pesquisa ao longo do pai
- O escopo filho só pode usar o valor da variável pai e não pode reatribuir o valor de sua variável pai [Reatribuir a variável é equivalente a definir uma nova variável no escopo filho]
- Para variáveis do tipo variável, o sub-escopo pode modificá-lo
- Se você precisar atribuir um valor a uma variável global, use a palavra-chave global para encontrar a variável global
name = 'enki'
def func():
global name # global 关键字 只找全局的变量 【global关键字只查找全局中的变量】
name = 'alex'
- 查找父级【上一级】的变量
# 使用关键noglobal关键字
- Convenção de nomenclatura variável
- Variáveis globais em todas as capitais
- Variáveis locais em todas as minúsculas
Seção 11 / Seção 12
1. Função sênior pequena
1.1 Designação de funções
- Atribuição de nome de função
def func():
pass
v1 = func
v1()
- A função pode ser listada, ditada, configurada, tupla e também pode ser usada como chave e valor do dicionário
- Nomes de funções podem ser usados como nomes de variáveis
- Funções podem ser passadas como parâmetros
def func(arg):
print(arg)
def show():
return 9
func(show)
def func(arg):
arg() #执行函数
def show():
print("执行show函数")
func(show)
1.2 expressão lambda
- Formulação básica
e usada para representar funções simples, [não há código complicado dentro da função, apenas valor de retorno simples]
def func(a,b):
return a + b
func1=lambda a,b:a+b
func2=lambda : 100
func3=lambda a: a+100
func4=lambda *args,**kwargs: len(args)
#默认会将":"后的结果作为返回
Expressões lambda não podem definir variáveis, procure por variáveis, caso contrário, procure o pai. [Expressões lambda são uma função de uma linha]
#一行实现比较两个值大小,返回大的值
func = lambda a,b: a if a > b else b
n = func(33,5)
print(n)
1.3 Funções incorporadas
- Função personalizada
- Funções incorporadas
-
Conversão obrigatória de tipos [int, str, bool, lista, tupla, ditado, conjunto]
-
Correlação numérica [max (), min (), float (), abs (): encontre o valor absoluto, sum ()]
- divmod (): divida os dois valores para obter o quociente e o restante [Usado para paginação]
- round (): a conversão retém várias vendas, arredondadas
-
Entrada e saída (impressão, entrada)
-
Relacionado à base
- conversão bin bin, começando com 0b
- out octal 0o começo
- int decimal
- hex hex 0x
# 二进制转十进制 v1 = '0b1101' result = int(v1,base=2) print(result) # 八进制转十进制 v1 = '0o1101' result = int(v1,base=8) print(result) # 十六进制转十进制 v1 = '0x1101' result = int(v1,base=16 ) print(result)
-
Outro 【tipo, len, intervalo, aberto, id】
-
Codificação relacionada
- chr () # Encontre o caractere correspondente na codificação Unicode com base no número decimal
- ord () # encontre o dígito decimal correspondente na codificação Unicode de acordo com o caractere
- Aplicação: Geração de código de verificação aleatória [Introduzir o módulo aleatório random.randint (10,50) para retornar números aleatoriamente]
-
Funções internas avançadas
- map (func, v1) [dados do processo]
& func é uma função, V1 é um tipo de dado iterável, função map () fazendo um loop de cada elemento do parâmetro V1, deixe que cada elemento execute a função func, a função func O resultado é adicionado a uma nova lista e retornado.
v1 = [11,22,33,44] result = map(lambda x: x+100,v1) print(list(result)) # 特殊 ,result是一个object对象
- filter (func, v1) [filtrar dados]
& Faça um loop em cada elemento no parâmetro v1 e dê-o à função func para execução.Se a função func retornar True, adicione o elemento a uma nova lista. - reduzir (func, v1) [dados integrados]
e fazer um loop de cada elemento do parâmetro v1 na função func para execução, retornando o resultado final da execução da função func; [função func requer dois parâmetros, o primeiro parâmetro é anterior à função Valor de retorno de uma execução]
& python3 precisa importar funções de importação de módulos
v1 = [1,2,3,4,5] result = reduce(lambda x,y: x+y,v1) print(result)
- map (func, v1) [dados do processo]
-
2. Função avançada
2.1 A função retorna o valor
- Encerramento
- Crie um espaço de memória para a função manter seus próprios dados (variáveis internas para seu próprio uso), para facilitar a execução posterior da função e chamar [cenário do aplicativo: decorator / código-fonte da Alquimia SQL]
- Quem criou a função, onde a função começa a executar
- Função de fechamento: Cada vez que a função é chamada, uma memória é aberta para esta chamada e a memória pode salvar o valor que você deseja usar no futuro
- Passando funções como parâmetros
- Tratar funções como valores de retorno
- Nota: Atribua a função
- Função executiva
- A função não é chamada, o código interno nunca será executado
- Quando a função é executada, uma parte da memória é criada para armazenar as informações sobre a execução da função [encerramento]
# O nome da memória aberta pela função não é usado, não é um fechamento
2.2 Recursão
- O número máximo padrão de recursão é 1000, que pode ser ajustado pelo método no módulo sys; a eficiência é baixa
def func(a):
if a ==5:
return 100000
result = func(a+1) + 10
return result
v = func(1) # 100050
2.3 Módulo de criptografia
- módulo hashlib
import hashlib
def get_md5(data):
obj = hashlib.md5("一套随机字符串",encode='utf-8')
obj.update(data.encode('utf-8')) #python3需要加编码指定
result = obj.hexdigest()
return result
- A senha não é exibida, módulo getpass
import getpass
pwd = getpass.getpass('请输入密码:') #密码隐藏不显示
#在终端输入运行(pycharm无法运行不行)
# getpass 在pycharm终端无法直接运行,如果需要请在命令行或者下方terminal窗口输入py文件运行
Seção XIII / Seção XIV
1. Decorador
- Função: Com base em não alterar o código original da função original, execute automaticamente uma função antes e depois da execução da função
- Escreva um decorador:
- A função de @x:
& 1. Execute a função x e passe a seguinte função func1 como parâmetro da função x.
& 2. Atribua o valor de retorno da execução da função x ao seguinte nome da função func1
- A função de @x:
#装饰器的编写
def x(func):
def y():
ret = func()
return ret
return y
#装饰器的应用
@x
def func1():
pass
@x
def func2():
pass
- Cenário de aplicativo: É usado para expansão de função pública para uma função ou funções.
- Formato do decorador:
def 外层函数(参数):
def 内层函数(*args,**kwargs):#注意万能参数传递
return 参数(*args,**kwargs)#注意万能参数传递
return 内层函数
@外层函数
def index():
pass
index()
2. Derivação
- Compreensão da lista
- Formato básico: variável = [variável de loop for; para loop um objeto iterável]
vals = [ i for i in 'alex' ]
v1 = [i+100 for i in range(10)]
v2 = [100 for i in range(10)]
v3 = [99 if i >5 else 66 for i in range(10)]
i = [lambda:100+i for i in range(10)]
v4[0]() #109
v = [i for i in range(10) if i > 5]
# 条件成立才append进去
- Definir derivação
& v1 = {i para i em 'alex'} # A diferença é definida com deduplicação - Derivação do dicionário
& v1 = {'k' + str (i): i para i no intervalo (10)}
3. Decorador com parâmetros
# 写一个带参数的装饰器,实现:参数是多少,被装饰的函数就要执行多少次。把每次结果添加到列表中返回
import random
def x(num):
def wrapper(func):
def inner(*args,**kwargs):
results = []
for i in range(num):
value = func(*args,**kwargs)
if value > num:
results.append(value)
return results
return inner
return wrapper
@x(5)
def index():
return random.randint(0,10)
r = index()
print(r)
4. Módulo
Módulo sys 4.1 [dados relacionados ao interpretador python]
- \ n Wrap
- tabulação
- \ r Voltar ao início da linha atual
##进度条
for i in range(1,101):
msg = "%s%%\r" %i
print(msg,end='')
- Escape
- Adicione a letra r na frente da string para remover os caracteres especiais no conteúdo da string, como \ n não tem mais o significado de nova linha.
s = r""D:\code\s21day14\n1.mp4"
- sys.argv é comumente usado; [Obter os parâmetros passados quando o usuário executa o script]
& Obter os parâmetros do script executado são armazenados em uma lista, o 0º parâmetro padrão é o nome do caminho completo do script executado
print(arg)
path = sys.argv[1]
print("删除",path)
- sys.exit (0); encerra o programa
4.2 módulo shutil [Excluir diretório / arquivo]
import shutil
# 删除目录
ret = shutil.rmtree("")
# 重命名
shutil.move("原文件名","新文件名")
#压缩文件
shutil.make_archive("压缩后的文件名称","压缩成什么格式","需要压缩的目录")
#解压文件
shutil.unpack_archive("需要解压的文件名",extract_dir="解压到哪个目录",format="解压格式")
4.3 módulo OS [dados relacionados ao sistema operacional]
- os.path.exists (path) # Retorno True se o caminho existir
- os.path.abspath () # Obter o caminho absoluto do arquivo
- os.path.dirname (arquivo) # Obter o diretório superior do arquivo
- os.path.join (caminho, arquivo) # caminho de emenda
- os.stas (file) .st_size # Obtenha o tamanho do arquivo
- os.listdir (caminho) # Lista todos os arquivos em um diretório [excluindo subdiretórios, primeiro nível]
- os.walk () #Lista todos os arquivos em um diretório (incluindo) subdiretórios [recursivamente]
#查看一个目录下所有的文件
import os
listdir = os.listdir("D:\wuhailuo\python_projects\code\python_jichu\模块作业")
# print(listdir)
# 查询显示指定目录下的所有文件,包括子目录下的所有文件
list_file = os.walk("D:\wuhailuo\python_projects\code\python_jichu\模块作业") #得到一个生成器对象,只有当对其循环是给出结果
for a,b,c in list_file: # a:正在查看的目录,b:此目录下的文件夹,c:此目录下的文件
for filename in c:
print(os.path.join(a,filename))
15 aulas / 16 aulas: conhecimento do módulo
Suplemento de conhecimento
- função range: python2 / 3 diferença:
- python2:
- range (10): Crie valores de sequência imediatamente na memória
- xrang (10): não será criado imediatamente na memória; somente quando estiver em loop, será criado enquanto estiver em loop.
- python3:
- intervalo (10) = xrang em p2 (10)
- python2:
1. Conhecimento básico de módulos
1.1 Módulo personalizado
1.1.1 Definir módulo
- O módulo de definição pode considerar um arquivo py ou uma pasta (pacote) como um módulo, para facilitar a chamada posterior de outros arquivos py.
- Para a definição do pacote: [a diferença entre python2 / 3]
py2: 文件夹中必须有 __init__.py
py3:不需要 __init__.py 【推荐写代码时,加上此文件】
1.1.2 Chamada de módulo
- módulo de importação module. function ()
- função de importação de módulo de formulário ()
- função de importação do módulo de formulário como alias alias ()
Sumário
- Quando o módulo e o arquivo a ser executado estão no mesmo diretório e são necessárias muitas funções no módulo, é recomendável usar import para importar o módulo
- Outras recomendações: from module import module module.
- Outras recomendações: from module Função de importação de módulo ()
1.1.3 Suplemento
-
importar
- módulo de importação 1 módulo 1. function ()
- módulo de importação 1. módulo 2. módulo 3 módulo 1. módulo 2. módulo 3. function ()
- Especial: init .py é carregado dentro da pasta de importação
-
de xxx import xxx
- Especial: do src import xxx [__init__.py que carrega internamente a pasta src]
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 导入模块,加载此模块中所有的值到内存
import os
# 导入模块中某个函数功能
from lizhongwei import func,show
from lizhongwei import * #导入这个模块的所有功能
from lizhongwei import func as f # 避免函数重复覆盖,取别名
1.2 Módulo embutido
1.2.1 os module import os
- os.mkdir ("") cria um diretório no diretório em que o script está sendo executado no momento (apenas um nível pode ser gerado)
- os.makedirs (r "dd \ xx \ aa") cria diretórios recursivamente
- renomear os.rename ("")
1.2.2 sys module import sys
- sys.path Por padrão, quando o Python importa módulos, ele pesquisará de acordo com esse caminho de valor.Quando o arquivo python for executado, o caminho do arquivo atual será carregado no sys.path
import sys
### 给Python添加查找模块的路径
sys.path.append('D:\\ ')
1.2.3 módulo json [comumente usado]
- json é uma string especial. [Lista longa de imagens, sequência, dicionário, números]
- A sequência contida em json deve estar entre aspas duplas
- A camada mais externa da string json deve ser um contêiner [lista / dicionário]
- As tuplas são serializadas em listas e as coleções não podem ser serializadas
- Serialização / desserialização de dados no formato json
- Serialização: Converta valores python em strings de formato json json.dumps ()
- Desserialização: Converta a sequência de formato json no tipo de dados Python json.loads ()
- Há chinês no dicionário ou na lista, a serialização deve manter a exibição em chinês [sure_ascii = False]
# 保留中文显示
val = json.dumps(v,ensure_ascii=False)
v = [12,3,4,{'k1':'v1'},True,'asdf']
import json
# 序列化,将python的值转换为json格式的字符串
v1 = json.dumps(v)
s = '["alex",123]'
#反序列化,将json格式的字符串转换为python的数据类型
s1 = json.loads(s)
- json suporta tipos de dados python
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
1.2.4 pickle module [semelhante ao módulo json]
- json Prós: comum a todos os idiomas; Desvantagens: só pode serializar tipos de dados básicos (strings, listas, dicionários, números)
- vantagem de pickle: tudo em python pode ser serializado por ele (objeto de soquete); desvantagem: o conteúdo da serialização só pode ser reconhecido por python.
- A impressão direta serializada de pickle.dumps (v) é um conteúdo binário, que pode ser exibido normalmente pelo processamento de pickle.loads (val). [Código de exemplo abaixo]
- O pickle do tipo de byte é um tipo de byte como b'xxxx 'após a serialização [código de exemplo abaixo]
v = {1,2,3,4,"abc"}
val = pickle.dumps(v)
print(val) # b'\x80\x03cbuiltins\nset\nq\x00]q\x01(K\x01K\x02K\x03K\x04X\x03\x00\x00\x00abcq\x02e\x85q\x03Rq\x04.'
******************************
file_obj = open("x.txt",mode='wb')
data = "abc".encode("utf-8")
print(data,type(data)) # b'abc' <class 'bytes'>
file_obj.write(data)
file_obj.close()
1.2.5 módulo de hora e data e hora
- UTC / GMT: Horário mundial
- Hora local: hora no fuso horário local
- módulo de hora 【Obter carimbo de data e hora】
- time.time (): timestamp: 1970-1-1 00:00 [valor aleatório pode ser usado]
- time.sleep (10) Tempo de sono / espera em segundos
- fuso horário time.timezone
- módulo datetime
from datetime import datetime,timezone,timedelta
vl = datetime.now() #当前本地时间
v2 = datetime.utcnow() # 当前UTC时间
tz = timezone(timedelta(hours=7)) # 当前东7区时间
v3 = datetime.now(tz)
- conversão de formato de data e hora
from datetime import datetime,timezone,timedelta
v1 = datetime.now()
# datetime时间格式转换字符串
v1.strftime('%Y-%m-%d %H-%M-%S')
#
v2 = datetime.strptime('2020-03-22','%Y-%m-%d')
- O relacionamento entre data e hora e carimbo de data / hora
ctime =time.time()
v1 = datetime.fromtimestamp(ctime) # 时间戳转datetime
v2 = datetime.now()
v2.timestamp() #datetime转时间戳
1.3 Módulos de terceiros [baixar / instalar / usar]
1.3.1 Pré-requisito para instalar a ferramenta de gerenciamento de pacotes pip, instale o módulo de terceiros através do pip
- Primeiro, é necessário instalar o pip e, em seguida, faça o download e instale o módulo de terceiros necessário através do pip https://pypi.org
- O padrão está no diretório de instalação do python \ Lib \ site-packages
# pip.exe所在目录添加到环境变量中
pip install 需要安装的模块名称
- Módulos de terceiros comumente usados [solicitações, xlrd]
1.3.2 Instalar módulos de terceiros a partir do código fonte
- Baixar arquivos de origem: arquivos compactados
- Descompacte o arquivo e digite este diretório via comando
- Executar python3 setup.py (nome do arquivo de instalação do módulo) build [Compile check]
- Executar python3 setup.py (nome do arquivo de instalação do módulo) install [install]
1.4 Módulo personalizado
1.4.1 Procedimento
- Criar arquivo xxx.py
def func1():
pass
def func2():
pass
- Importar módulos personalizados e chamar funções
import xxx
xxx.func1()
xxx.func2()
2. Tratamento de exceção
- Gramática básica
try:
程序处理
except exception as e:
print("异常处理")
- O código contido no try reportará um erro e capturará diretamente a exceção.O código no bloco try não continuará sendo executado. Portanto, tente e tente envolver o loop dentro do loop, o resultado da execução é diferente.
17 aulas / 18 aulas
1. Iterador
- Iterador: Obtenha os elementos no objeto iterável, um por um, e existe o método __next__.
- Objeto iterável: pode ser usado em um loop for ou ter um método __iter__ dentro e retornar um iterador.
# 列表转换成迭代器的两种方式:
v = [1,2,3,4]
#方式一
v1 = iter(v)
#方式二
v2 = v.__iter__()
# 迭代器逐一获取元素,反复调用__next__()方法
val = v1.__next__()
2. Gerador
2.1 Gerador
- Generator: A
palavra-chave yield dentro da função & é a função de gerador
e a função de gerador não é chamada quando a função é chamada.A função de chamada retorna um gerador. Somente quando o gerador é executado em loop, o código dentro da função de gerador é executado ,
Cada laço for obterá o valor retornado pelo rendimento
def func():
yield 1
print("f1")
yield 2
print("f2")
yield 3
print("f3")
v = func()
# item只拿函数中yield的值
for item in v:
print(item)
#输出结果:
# 1
# f1
# 2
# f2
# 3
# f3
- Objetos iteráveis: para loops e esses objetos, todos têm métodos de iter e retornam um iterador (também pode ser um gerador)
- Generator: pode ser para loop e possui o método __iter__, mas também o método __next__ (), portanto, o gerador também pode ser chamado de iterador especial ou objeto iterável especial
- Você pode visualizar os métodos pertencentes ao objeto de função através de div (objeto de função)
- Exemplo clássico do gerador, [simulando redis para ler dados em lotes]
#通过生成器读取大数据文件 [模拟redis数据读取]
import time
"""生成所需数据
with open("data.txt",mode='a+',encoding='utf-8') as fileobject:
for i in range(1,100):
fileobject.write("你领取到的号牌是:"+str(i)+"\n")
"""
"""生成器函数"""
"""分批去读取文件中的内容,将文件的内容返回给调用者"""
def func():
index=0
while True:
time.sleep(2)
with open("data.txt",mode='r',encoding='utf-8') as fileobject: #连接上redis
li = []
fileobject.seek(index)
for i in range(10):
line = fileobject.readline().strip()
if not line:
break
li.append(line)
index=fileobject.tell()
# fileobject.close()
for i in li:
yield i
v=func()
for l in v:
print(l)
2.2 Derivação do gerador
- A diferença entre compreensão de lista e compreensão de gerador
#列表推导式
v1 = [i for i in range(10)]
#生成器推导式
v2 = (i for i in range(10))
- A compreensão da lista é executada imediatamente, retornando uma lista de 0 a 9 no loop for.
- O v2 retornado pela derivação do gerador é um gerador.O loop for interno não é executado imediatamente. Somente quando existe um loop for que chama v2 para executar o loop, o loop for interno será executado e retornará de 0 a 9 elementos.
v1 = [lambda : i for i in range(10)] # 列表推导式
v1 = (lambda : i for i in range(10)) # 生成器推导式
# 两者区别
# 列表推导式
def func():
result = []
for i in range(10):
def f():
return i
result.append(f)
return result
v = func()
for item in v:
print(item()) # 9*9
#上面函数与下面推导式相等
v1 = [lambda : i for i in range(10)]
for item in v1:
print(item())
#########################################
# 生成器推导式,
def func():
for i in range(10):
def f():
return i
yield f
v = func()
for item in v:
print(item()) # 0~9
# 上面函数与下面推导式相等
v2 = (lambda : i for i in range(10))
for item in v2:
print(item)
2,3 rendimento de
- O valor após o rendimento da necessidade de retornar um gerador, [por exemplo, o valor de retorno na função test () abaixo não pode ser retornado]
- Consulte o código para obter detalhes
def test():
yield 1
yield 2
yield 3
def func():
yield "alex"
yield "enki"
yield from test()
v = func()
for item in v:
print(item)
# 执行结果
"alex"
"enki"
1
2
3
3. Suplemento de conhecimentos anteriores
A diferença entre py2 / py3 e suplemento
- tipo de string str e codificação relacionada
- No py3, tipo de string str [geralmente usado para operações de dados na memória, a codificação de armazenamento é unicode]
- Em py3, tipo de byte de bytes [geralmente usado para transmissão de rede e armazenamento de dados, a codificação específica é determinada pelo tipo de codificação do cabeçalho do arquivo que executa o arquivo py]
- O tipo unicode em py2 ---> é o tipo str em py3
- O tipo str em py2 ----> é o tipo de bytes em py3
- Diferenças nos valores de retorno no dicionário
- Itens
- Lista retornada por py2
- iterador py3 [não pode receber valor pelo índice]
- valores
- Lista retornada por py2
- iterador py3 [não pode receber valor pelo índice]
- chaves
- Lista retornada por py2
- iterador py3 [não pode receber valor pelo índice]
- O mesmo vale para mapa / filtro
- Itens
Conhecimento adicional
- Módulo de importação
- módulo de importação
- do módulo module module module
- do módulo módulo de módulo módulo de importação
- Importação relativa [O módulo deve ter um diretório pai, esta operação não pode ser executada no diretório raiz]
- a partir de .. módulo de importação
- do módulo de importação
- Nota: A nomeação de arquivos e pastas não pode ser igual ao nome do módulo importado, caso contrário, ela será pesquisada diretamente no diretório atual.
- Arquivo principal [função principal] (executando o arquivo py)
- Distinguir pelo nome do atributo , o valor do atributo __name__
__main__
significa arquivo principal
- Distinguir pelo nome do atributo , o valor do atributo __name__
#判断是否为主文件,如果是主文件则执行
if __name__ == '__main__':
run() #执行入口