किसी अन्य फ़ाइल से चर आयात करना?


134

मैं चर को एक फ़ाइल से दूसरी फ़ाइल में कैसे आयात कर सकता हूं?

उदाहरण: file1चर x1और x2उन्हें कैसे पास करना है file2?

मैं कैसे आयात कर सकते हैं सब एक से दूसरे चर का?

जवाबों:


146
from file1 import *  

फ़ाइल 1 में सभी ऑब्जेक्ट्स और विधियों को आयात करेगा


54
ध्यान दें, हालांकि, यह आमतौर पर कुछ ऐसा है जो आपको नहीं करना चाहिए
डेविड कैन

7
डेविड नोट के रूप में, यह नामस्थान को प्रदूषित करता है और मानक डिस्ट्रो में शामिल अन्य मॉड्यूलों से वस्तुओं और कार्यों को
मास्क

11
मैं इसे करने की कोशिश की है, लेकिन यह नहीं मिल सकता है अजगर की तरह लगता है file1 , क्योंकि मैं इस त्रुटि हो रही है:ImportError: No module named file1
Hilder Vitor लीमा परेरा

4
क्या आपके पास __init__.pyफाइल थी? अधिक जानकारी के लिए यहां देखें ।
J0ANMM

76

file1अंदर आयात करें file2:

File1 के सभी वेरिएबल्स को फाइल 2 के नेमस्पेस में बाढ़ के बिना आयात करने के लिए उपयोग करें:

import file1

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

फ़ाइल 1 से फ़ाइल 2 के नाम स्थान (अनुशंसित नहीं) के लिए सभी चर आयात करने के लिए:

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

से डॉक्स :

हालांकि यह from module import *मॉड्यूल स्तर पर उपयोग करने के लिए मान्य है, यह आमतौर पर एक बुरा विचार है। एक के लिए, यह अन्यथा एक महत्वपूर्ण संपत्ति पायथन खो देता है - आप जान सकते हैं कि प्रत्येक टॉपवेल नाम को आपके पसंदीदा संपादक में एक सरल "खोज" फ़ंक्शन द्वारा कैसे परिभाषित किया गया है। आप भविष्य में परेशानी के लिए खुद को भी खोलते हैं, अगर कुछ मॉड्यूल अतिरिक्त कार्यों या कक्षाओं में बढ़ता है।


1
और अगर मेरे पास पास होने के लिए 1000 चर हैं?
तोक

1
@Ofek बस import file1 तब का उपयोग करें ।
अश्विनी चौधरी

1
यह चर का आयात नहीं करता है: \
ofek

7
यह चर आयात करता है, हालांकि आपको file1.varXप्रत्येक फ़ाइल के लिए तैयार करना होगा ।
zmo

43

स्पष्ट रूप से X1 और x2 आयात करने के लिए सर्वश्रेष्ठ :

from file1 import x1, x2

यह आपको file1काम करते समय से चर और कार्यों के साथ अनावश्यक नाम स्थान संघर्ष से बचने की अनुमति देता है file2

लेकिन अगर आप वास्तव में चाहते हैं, तो आप सभी चर आयात कर सकते हैं :

from file1 import * 

11

वास्तव में यह वास्तव में चर के साथ आयात करने के लिए समान नहीं है:

from file1 import x1
print(x1)

तथा

import file1
print(file1.x1)

आयात समय पर X1 और file1.x1 का समान मूल्य है, वे समान चर नहीं हैं। उदाहरण के लिए, file1 में एक फ़ंक्शन को कॉल करें जो X1 को संशोधित करता है और फिर मुख्य फ़ाइल से चर को प्रिंट करने का प्रयास करें: आप संशोधित मूल्य नहीं देखेंगे।


5

मार्क की प्रतिक्रिया सही है। दरअसल, आप चर के लिए मेमोरी एड्रेस प्रिंट print(hex(id(libvar))कर सकते हैं और आप देख सकते हैं कि पते अलग हैं।

# 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)))

3

script1.py

title="Hello world"

script2.py हम स्क्रिप्ट 1 चर का उपयोग कर रहे हैं

विधि 1:

import script1
print(script1.title)

विधि 2:

from script1 import title
print(title)

1

में Pythonआप के रूप में यदि वे जैसे अन्य फ़ाइलों की सामग्री का उपयोग कर सकते
एक पुस्तकालय के कुछ प्रकार के होते हैं, जावा या किसी OOP आधार भाषाओं की तरह अन्य भाषाओं की तुलना में, यह वास्तव में शांत है;

यह फ़ाइल की सामग्री तक पहुंच बनाता है या इसे संसाधित करने या इसके साथ कुछ भी करने के लिए आयात करता है; और यही मुख्य कारण है कि Pythonडेटा साइंस और मशीन लर्निंग आदि के लिए अत्यधिक पसंदीदा भाषा;

और यह तस्वीर है project structure यह

मैं कहाँ से चर पहुँचा रहा हूँ .env fileजहाँ API linksऔर गुप्त कुंजी रहते हैं।

सामान्य संरचना:

from <File-Name> import *

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.