proyecto frasco conocimiento paquete de guía

A: ¿Qué paquete

Apreciada: un archivo __init__.py se llama el paquete, el paquete y el paquete dentro del archivo, en general, no se llevará a cabo de forma manual, se hace referencia, y luego ejecutado por la entrada de la función unificada.

test1.py

def add1 ():
     print ( " add1 " )

test2.py test3.py test4.py y test1 función, los nombres de las funciones son ADD2, add3, add4, __ ini__.py está vacía

A: test2.py utilizado en test1 y ADD2 () Función

de test2 importación ADD2 

def add1 ():
     print ( " add1 " ) 
    ADD2 () 


si  __name__ == ' __main__ ' : 
    add1 () 

# 结果
add1 
ADD2

II: Uso test3.py en test1 y ADD3 (función)

de test3 importación add3 

def add1 ():
     print ( " add1 " ) 
    add3 () 


si  __name__ == ' __main__ ' : 
    add1 () 

# 报错 
ModuleNotFoundError: Sin módulo denominado ' test3 '

La razón es que el proceso de la ejecución test3 importación add3 es tal que, bajo el directorio actual a test1 dónde encontrar test3, después de encontrar en el uso de la función add3 interior (), pero no pudo encontrar, ya que sólo tres de directorio donde test1 archivo, tes1.py, test2.py, demo carpeta.

de demo.test3 importación add3 

def add1 ():
     print ( " add1 " ) 
    add3 () 


si  __name__ == ' __main__ ' : 
    add1 () 

#   结果
add1 
add3

 

Las razones del éxito son: en primer lugar encontrar una demo en el directorio actual, y luego encontrar un test3 en el directorio demo, y finalmente encontró add3, el punto de partida del grupo de cabeza, es el directorio en el paquete de ejecución principal de este archivo, se busca encontrar no en el error.

a partir de demostración importación test3 

def add1 ():
     print ( " add1 " ) 
    test3.add3 () 


si  __name__ == ' __main__ ' : 
    add1 () 

# 结果
add1 
add3

 

Este formulario también puede ir a la primera demo, demo encontrado por test3, finalmente encontró add3 () 

3: Uso en test4 test3 dentro ADD4 (función)

de test4 importación add4 # add4 Sin embargo test4 y línea ondulada son de color rojo 

DEF ADD3 ():
     Imprimir ( " ADD3 " ) 
    add4 () 

SI  el __name__ == ' __main__ ' : 
    ADD3 () 

# consecuencia 
ADD3 
add4

 

Aunque tienen éxito, pero todavía hay algunos problemas, cuando se realiza manualmente test3.py tiempo, no hay problema, que pueda salir, sino también a ser otra persona al test3 paquete cuando se usa, será un problema, no cambie test3.py

Deje test1 test3 utilizados en el interior add3 uso

a partir de demostración importación test3 

def add1) (:
     print ( " add1 " ) 
    test3.add3 () 


si  __name__ == ' __main__ ' : 
    add1 () 

# 报错
Rastreo (llamada más reciente pasado): 
  archivo " C: / Users / Administrador / PycharmProjects / Sin título / test1.py "línea 1, en <módulo>
     de demostración importación test3 
  archivo " C: \ Users \ Administrator \ PycharmProjects \ sin título \ demo \ test3.py " , línea 1,en <módulo>
     de test4 importación add4 
ModuleNotFoundError: Sin módulo denominado ' test4 '

 

Debido a que en este momento del paquete de guía de entrada es la carpeta en la test1 archivo, se encontró por primera vez por test3 de demostración, y luego realizar test3 dentro de la primera línea de código, desde test4 add4 importación aquí en el problema, esta vez de un archivo o carpeta en la test1 test4 encontrar, por lo que es incorrecto.

Si desea ejecutar correctamente, se puede añadir en este momento, es necesario modificar test3.py

de .test4 importación add4
 def add3 ():
     print ( " add3 " ) 
    add4 () 

si  __name__ == ' __main__ ' : 
    add3 ()

 

A continuación, ejecute test1.py

a partir de demostración importación test3 

def add1 ():
     print ( " add1 " ) 
    test3.add3 () 


si  __name__ == ' __main__ ' : 
    add1 () 

# 结果

add1 
add3 
add4

 

Las razones del éxito son: Después de introducir test3.py, la primera frase del tiempo de ejecución de código, desde add4 importación .test4, esto juega un papel muy importante, representa la carpeta de archivo actual, donde la primera lectura para encontrar test3 ... donde la carpeta de archivos py, de demostración, de demostración y luego encontrar test4 desde el interior, seguro que será un éxito.

IV: guía de paquetes __all__

__all__Lista es una cadena, se utiliza para definir el módulo de from XXX import *excusa para el símbolo de exportación externo, es decir, estar expuestos, pero sólo para import *actuar sobre la from XXX import XXXineficaz.

Por ejemplo, para aumentar el interior __init__.py __all__ = [test3.py], a continuación, realizar test1.py

de demostración de importación * def add1 ():
     print ( " add1 " ) 
    test3.add3 () si __name__ == ' __main__ ' : 
    add1 () # 结果add1 
add3 
add4




 


de demostración de importación * def add1 ():
     print ( " add1 " ) 
    test4.add4 () si __name__ == ' __main__ ' : 
    add1 () # 结果add1 
Rastreo (llamada más reciente pasado): 
  archivo " C: / Users / Administrador /PycharmProjects/untitled/test1.py "línea 9, en <módulo> 
    add1 () 
  del archivo " C: /Users/Administrator/PycharmProjects/untitled/test1.py " , línea 5, en 
    test4.add4 ()




 


 add1
NameError: nombre ' test4 '  es  no definido

 

__all__ es proteger el paquete, evite el contacto con todas las cosas, una lista de las cuales sólo nombres de los métodos especificados, se permiten los nombres de variables para ser utilizado

__Init__.py Para modificar __all __ = [ "test3", "test4"]

continuar test1.py

de demostración de importación * def add1 ():
     print ( " add1 " ) 
    test4.add4 () si __name__ == ' __main__ ' : 
    add1 () # 结果add1 
add4




 


 

 

 

 

# TODO

Supongo que te gusta

Origin www.cnblogs.com/meloncodezhang/p/12633226.html
Recomendado
Clasificación