অন্য ফাইল থেকে ভেরিয়েবল আমদানি করছেন?


134

আমি কীভাবে এক ফাইল থেকে অন্য ফাইলগুলিতে ভেরিয়েবল আমদানি করতে পারি?

উদাহরণ: file1ভেরিয়েবল আছে x1এবং x2কিভাবে তাদের পাস file2?

আমি কীভাবে সমস্ত ভেরিয়েবলগুলি এক থেকে অন্যটিতে আমদানি করতে পারি ?

উত্তর:


146
from file1 import *  

ফাইল 1 এ সমস্ত অবজেক্ট এবং পদ্ধতি আমদানি করবে


54
মনে রাখবেন, তবে এটি সাধারণত এমন কিছু যা আপনার করা উচিত নয়
ডেভিড কেইন

7
ডেভিড নোট হিসাবে, এটি নাম স্থানটিকে দূষিত করে এবং স্ট্যান্ডার্ড ডিস্ট্রোতে অন্তর্ভুক্ত অন্যান্য মডিউলগুলি থেকে জিনিসগুলি এবং ফাংশনগুলি মাস্কিং দ্বারা বিপর্যয়কর পরিণতি হতে পারে
এন্নুয়াইকিলার

11
আমি এটি করার চেষ্টা করেছি, তবে মনে হচ্ছে অজগর ফাইলটি খুঁজে পাচ্ছে না, কারণ আমি এই ত্রুটিটি পেয়েছি:ImportError: No module named file1
হিল্ডার ভিটার লিমা পেরেইরা

4
আপনার একটি __init__.pyফাইল আছে? দেখুন এখানে আরো বিস্তারিত জানার জন্য।
J0ANMM

76

file1ভিতরে আমদানি করুন file2:

ফাইল 2 এর নামস্থান প্লাবিত না করে ফাইল 1 থেকে সমস্ত ভেরিয়েবল আমদানি করতে, ব্যবহার করুন:

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
@ ওফেক ঠিক import file1 তখনই ব্যবহার করুন ।
অশ্বিনী চৌধুরী চৌধুরী

1
এটি ভেরিয়েবলগুলি আমদানি করে না: \
ওফেক

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 এ একই মান রয়েছে, তারা একই ভেরিয়েবল নয়। উদাহরণস্বরূপ, ফাইল 1 এ এমন কোনও ফাংশন কল করুন যা এক্স 1 সংশোধন করে এবং তারপরে মূল ফাইলটি থেকে ভেরিয়েবলটি মুদ্রণের চেষ্টা করুন: আপনি পরিবর্তিত মানটি দেখতে পাবেন না।


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"

স্ক্রিপ্ট 2.py যেখানে আমরা স্ক্রিপ্ট 1 ভেরিয়েবল ব্যবহার করি

পদ্ধতি 1:

import script1
print(script1.title)

পদ্ধতি 2:

from script1 import title
print(title)

1

ইন Pythonআপনি যদি তারা মত অন্যান্য ফাইলের সামগ্রী অ্যাক্সেস করতে পারেন
একটি লাইব্রেরি কিছু হয়, জাভা বা যে কোন গলি বেস ভাষার মত অন্যান্য ভাষায় তুলনায় এই সত্যিই শীতল হয়;

এটি ফাইলের বিষয়বস্তুগুলিতে অ্যাক্সেস করতে বা এটি প্রক্রিয়া করতে বা এর সাথে কিছু করার জন্য আমদানি করে; Pythonডেটা সায়েন্স এবং মেশিন লার্নিং ইত্যাদির জন্য ভাষাটিকেই বেশি প্রাধান্য দেওয়ার মূল কারণ হ'ল;

আর এটিই ছবি project structure এই

আমি .env fileযেখানে API linksগোপনীয় কীগুলি বাস করি সেখান থেকে পরিবর্তনগুলি অ্যাক্সেস করছি ।

সাধারণ কাঠামো:

from <File-Name> import *

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.