Explicación detallada de la importación de Python

Explicación detallada de la importación de Python

1. Hay cuatro casos de importación de paquetes de importación

(1) Importar dentro del directorio actual
(2) Importar desde el directorio de nivel superior al directorio de nivel inferior
(3) Importar desde el directorio de nivel inferior al directorio de nivel superior
(4) Importar entre directorios del mismo nivel

La diferencia entre importar y desde importar en python:

La declaración de importación importa todos los miembros (incluyendo variables, funciones, clases, etc.) dentro de todo el módulo.
from import importa solo los miembros especificados por esta declaración.
from xxx import * Al importar módulos, es equivalente a import.
Cuando from xxx import * importa un módulo, el valor predeterminado es importar todas las unidades de programa en el módulo que no comiencen con un guión bajo.

2. Estructura del directorio

.
├── pack1
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   ├── run1.cpython-37.pyc
│   │   └── run2.cpython-37.pyc
│   ├── run1.py
│   ├── run2.py
│   ├── samedir.py
│   └── upper.py
├── pack2
│   ├── __init__.py
│   ├── parallel.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   └── run3.cpython-37.pyc
│   ├── run3.py
│   └── run4.py
├── __pycache__
│   └── root_pack.cpython-37.pyc
├── root_pack.py
└── root.py

3. Importar en este directorio de nivel

Puede importar directamente los archivos en este directorio. samedir.py importa run1.py.
run1.py es el siguiente:

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

def run1():
   print ("I'm running package 1")

def test_run1():
   print ("I'm running package test_run1")

Esta llamada de directorio, samedir.py

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

import run1 
run1.run1()
run1.test_run1()

import run1 as r1
r1.run1()
r1.test_run1()

Resultados de la:

# python samedir.py 
I'm running package 1
I'm running package test_run1
I'm running package 1
I'm running package test_run1

importar run1 como r1
simplifica la entrada y usa r1 para llamar a dos funciones

4. El directorio de nivel superior importa el directorio de nivel inferior

Para importar un archivo en un directorio de nivel inferior desde un directorio de nivel superior, debe crear un nuevo archivo __init__.py en el nivel inferior y ejecutar el archivo init primero al importar.

Por lo general, el archivo __init__.py está vacío, pero puede agregarle otras funciones. Cuando importa un paquete, en realidad importa su archivo __init__.py. De esta forma, podemos importar por lotes los módulos requeridos por el programa en el archivo __init__.py, en lugar de importarlos uno por uno.

import sys
sys.path.append("..") 

Es para importar el directorio de nivel superior desde el nivel inferior.

if name == ' main ':
para probar el efecto de ejecución de la importación

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
sys.path.append("..") 

if __name__ == '__main__':
    print ('main is running')
else:
    print ('package 1 init')

root_pack.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 导入 Python 包
import pack1.run1 as t1
import pack2.run3 as t3

t1.run1()
t1.test_run1()

t3.run3()
t3.test_run3()

El efecto de ejecución es el siguiente:

# python root.py
package 1 init
package 2 init
I'm running package 1
I'm running package test_run1
I'm running package 3
I'm running package test_run3

ilustrar:

Cuando se importa paquete 1 init
paquete 2 init , primero se ejecuta el archivo init.py Para el mismo paquete, si se importa varias veces, init.py solo se ejecuta una vez.

5. El directorio de nivel inferior importa el directorio de nivel superior

Importe root_pack.py del directorio de nivel superior desde la parte superior en el directorio pack1.

root_pack.py:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
def root_pack():
   print ("I'm running package root")

def root_run():
   print ("I'm running package root_run")

Es necesario importar los módulos en el directorio de nivel superior, usar sys.path y agregar la ruta.  
superior.py:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys 
sys.path.append("..") 
 
import root_pack

root_pack.root_pack()
root_pack.root_run()

Efecto de ejecución:

# python upper.py 
I'm running package root
I'm running package root_run

6. Importar entre directorios al mismo nivel

paralelo.py está en el directorio pack2, llamando al programa en el directorio pack1.
paralelo.py también necesita aumentar el directorio principal

import sys 
sys.path.append("..") 

paralelo.py es el siguiente:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys 
sys.path.append("..") 
 
from pack1 import run1
from pack1 import run2 as r2

run1.run1()

r2.run2()
r2.test_run2()

Resultados de la:

# python parallel.py 
package 1 init
I'm running package 1
I'm running package 2
I'm running package test_run2

Supongo que te gusta

Origin blog.csdn.net/qq_39065491/article/details/131436489
Recomendado
Clasificación