অন্যান্য ফাইলগুলিতে বহিরাগত পাইথন কোডটি কীভাবে অন্তর্ভুক্ত করবেন?


117

আপনার যদি কোনও ফাইলে পদ্ধতির সংগ্রহ থাকে তবে সেই ফাইলগুলিকে অন্য কোনও ফাইলে অন্তর্ভুক্ত করার কোনও উপায় আছে, তবে কোনও উপসর্গ ছাড়াই তাদের কল করুন (অর্থাত্ ফাইল উপসর্গ)?

সুতরাং আমি যদি:

[Math.py]
def Calculate ( num )

আমি এটিকে কীভাবে বলব:

[Tool.py]
using Math.py

for i in range ( 5 ) :
    Calculate ( i )

উত্তর:


154

আপনাকে অন্য ফাইলটি মডিউল হিসাবে এইভাবে আমদানি করতে হবে:

import Math

আপনি যদি Calculateমডিউল নামের সাথে আপনার ফাংশনটি উপস্থাপন করতে না চান তবে এটি করুন:

from Math import Calculate

আপনি যদি কোনও মডিউলটির সমস্ত সদস্য আমদানি করতে চান তবে এটি করুন:

from Math import *

সম্পাদনা করুন: ডাইভ ইন্ট পাইথন থেকে এখানে একটি ভাল অধ্যায় এখানে দেওয়া হয়েছে যা এই বিষয়টির আরও গভীরতায়।


9
মূল্যবান যে সুপারিশ করাfrom Math import * হয় না
nnot101

1
আপনি আকর্ষণীয় impমডিউল এবং যাদু কল করতে পারেন __import__
ভিটল্ড এস

কেউ তাদের ডোমেনটি পুনর্নবীকরণ করতে ভুলে গেছেন: \
স্পেশাল

48

কেবল "অন্তর্ভুক্ত" কমান্ডটি লিখুন:

import os

def include(filename):
    if os.path.exists(filename): 
        execfile(filename)


include('myfile.py')

@ ডেলিট:

অজগর 2 এবং 3 সামঞ্জস্যের জন্য @ ব্লগ মন্তব্যটি সঠিক, আপনার প্রয়োজন হয়:

পাইথন 2 এবং 3: বিকল্প 1

from past.builtins import execfile

execfile('myfile.py')

পাইথন 2 এবং 3: বিকল্প 2

exec(compile(open('myfile.py').read()))

3
এটি করার কোনও কারণ আছে from module import *? এছাড়াও, আপনি যে ফাইলটি কল করছেন তার শরীরে কোড থাকলে সেই কোডটি চালানো হবে, আপনি যদি এটি করেন তবে।
naught101

4
@ নট 101: এটি লক্ষ্য: কোডটি চালানো, যা কোনও আমদানির সাথে ঘটে না। সাধারণত এটি কেবল ভেরিয়েবলগুলি সংজ্ঞায়িত করে।
লুই

2
@ ডেলিট অজগর 3 নেইexecfile
বিফাইক

7
প্রকৃতপক্ষে অজগর 3 এর compile()উল্লিখিত চেয়ে আরও একটি স্বাক্ষর রয়েছে । সুতরাং সঠিক পাইথন 2 এবং 3: বিকল্প 2 হবে:exec(compile(source=open('myfile.py').read(), filename='myfile.py', mode='exec'))
TriAnMan

3
'অন্তর্ভুক্ত' সাহায্যকারী ফাংশনটি কাজ করে না যদি আপনি 'অন্তর্ভুক্ত' এর
কলারে স্কুলে

35

আপনি যদি ব্যবহার করেন:

import Math

তারপরে এটি আপনাকে ম্যাথের ফাংশনগুলি ব্যবহার করার অনুমতি দেবে, তবে আপনাকে অবশ্যই ম্যাথ.ক্যালকুলেট করতে হবে, যাতে আপনি যা চান না তা স্পষ্টভাবে এটি।

আপনি যদি কোনও মডিউলটির ফাংশনগুলি পূর্বনির্ধারিত না করে আমদানি করতে চান তবে আপনাকে অবশ্যই তাদের নাম অবশ্যই স্পষ্ট করে দিতে হবে:

from Math import Calculate, Add, Subtract

এখন, আপনি কেবল তাদের নাম অনুসারে গণনা, যুক্ত এবং বিয়োগ করতে পারেন। আপনি যদি ম্যাথ থেকে সমস্ত ফাংশন আমদানি করতে চান তবে করুন:

from Math import *

যাইহোক, মডিউলগুলির সাথে আপনি যখন অনিশ্চিত হন তাদের সাথে এটি করার সময় আপনার খুব সতর্ক হওয়া উচিত। আপনি যদি একই ফাংশন নামের জন্য সংজ্ঞাযুক্ত দুটি মডিউল আমদানি করেন তবে একটি ফাংশন অন্যটিকে ওভাররাইট করে দেবে, আপনার সাথে বুদ্ধিমান কেউ নয়।


1

পাইথন পরিদর্শন মডিউলটি খুব দরকারী বলে খুঁজে পেয়েছি

উদাহরণস্বরূপ টেস্টস্টফ.পি সহ

import inspect

def dostuff():
    return __name__

DOSTUFF_SOURCE = inspect.getsource(dostuff)

if __name__ == "__main__":

    dostuff()

এবং অন্য স্ক্রিপ্ট বা পাইথন কনসোল থেকে

import teststuff

exec(DOSTUFF_SOURCE)

dostuff()

এবং এখন dostuff লোকাল স্কোপে থাকা উচিত এবং dostuff () কনসোল বা স্ক্রিপ্টগুলি _ নাম _ ফিরিয়ে দেবে যদিও টেস্ট.ডোস্টফ () এক্সিকিউট করে পাইথন মডিউলগুলির নাম ফিরিয়ে দেবে।

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