Variabelen importeren uit een ander bestand?

Hoe kan ik variabelen van het ene bestand naar de andere importeren?

Voorbeeld: file1Heeft de variabelen x1en x2hoe u deze doorgeeft aan file2?

Hoe kan ik alle van de variabelen van de ene naar de andere importeren?


Antwoord 1, Autoriteit 100%

from file1 import *  

importeert alle objecten en methoden in bestand1


Antwoord 2, Autoriteit 52%

Importeer file1Binnen file2:

Om alle variabelen uit Bestand1 te importeren zonder de naamruimte van File2 te overstromingen, gebruikt u:

import file1
#now use file1.x1, file2.x2, ... to access those variables

Om alle variabelen te importeren van Bestand1 naar FILE2’s NameSpace (niet aanbevolen):

from file1 import *
#now use x1, x2..

Vanaf de docs :

Hoewel het geldig is om from module import *op module-niveau te gebruiken, is het
Meestal een slecht idee. Voor één verliest dit een belangrijk python
Anders heeft u – u kunt weten waar elke naam van het Toplevel wordt gedefinieerd door een
Eenvoudige “Zoeken” -functie in uw favoriete editor. Je bent ook open
jezelf tot problemen in de toekomst, als sommige module extra groeit
functies of klassen.


Antwoord 3, Autoriteit 28%

het beste om x1 en x2 expliciet te importeren:

from file1 import x1, x2

Hierdoor kunt u onnodige naamruimteconflicten met variabelen en functies uit file1vermijden terwijl u in file2werkt.

Maar als je echt wilt, kun je allevariabelen importeren:

from file1 import * 

Antwoord 4, autoriteit 11%

Eigenlijk is dit niet hetzelfde om een variabele te importeren met:

from file1 import x1
print(x1)

en

import file1
print(file1.x1)

Hoewel op het moment van importeren x1 en file1.x1 dezelfde waarde hebben, zijn het niet dezelfde variabelen. Roep bijvoorbeeld een functie in file1 aan die x1 wijzigt en probeer vervolgens de variabele uit het hoofdbestand af te drukken: u zult de gewijzigde waarde niet zien.


Antwoord 5, autoriteit 4%

Marc antwoordis correct. Eigenlijk kun je het geheugenadres voor de variabelen print(hex(id(libvar))afdrukken en je kunt zien dat de adressen anders zijn.

# mylib.py
libvar = None
def lib_method():
    global libvar
    print(hex(id(libvar)))
# myapp.py
from mylib import libvar, lib_method
import mylib
lib_method()
print(hex(id(libvar)))
print(hex(id(mylib.libvar)))

Antwoord 6, autoriteit 4%

script1.py

title="Hello world"

script2.pyis waar we script1 variabele gebruiken

Methode 1:

import script1
print(script1.title)

Methode 2:

from script1 import title
print(title)

Antwoord 7, autoriteit 2%

first.py:

a=5

second.py:

import first
print(first.a)

Het resultaat is 5.

Other episodes