Set_up: saya punya .py file untuk masing-masing fungsi yang saya butuhkan untuk digunakan dalam program.
Dalam program ini, saya perlu memanggil fungsi dari file eksternal.
I've mencoba:
from file.py import function(a,b)
Tapi saya mendapatkan error:
ImportError: No module named 'file.py'; file tidak satu paket
Bagaimana cara memperbaiki masalah ini?
Ada isn't perlu menambahkan file.py
saat mengimpor. Hanya menulis dari file impor fungsi
, dan kemudian memanggil fungsi dengan menggunakan fungsi(a, b). Alasan mengapa hal ini mungkin tidak bekerja, ini karena
file` adalah salah satu dari Python's modul inti, jadi saya sarankan anda mengubah nama file anda.
Perhatikan bahwa jika anda're mencoba untuk mengimpor fungsi dari a.py
ke sebuah file yang bernama b.py
, anda akan perlu untuk memastikan bahwa.py
dan b.py
berada di direktori yang sama.
Pertama-tama anda tidak perlu .py
.
Jika anda memiliki file a.py
dan di dalam anda memiliki beberapa fungsi:
def b():
# Something
return 1
def c():
# Something
return 2
Dan yang ingin anda impor mereka di z.py
anda harus menulis
from a import b, c
Anda dapat melakukan ini dengan 2 cara. Pertama adalah hanya untuk mengimpor fungsi tertentu yang anda inginkan dari file.py. Untuk melakukan ini, gunakan
from file import function
Cara lain adalah dengan mengimpor seluruh file
import file as fl
Kemudian anda dapat memanggil fungsi di dalam file.py menggunakan
fl.function(a,b)
Anda dapat memanggil fungsi dari direktori yang berbeda juga, dalam kasus anda tidak dapat atau tidak ingin memiliki fungsi dalam direktori yang sama di mana anda bekerja. Anda dapat melakukan ini dalam dua cara (mungkin ada lebih banyak alternatif, tetapi ini adalah orang-orang yang telah bekerja untuk saya).
Alternatif 1 Sementara mengubah direktori kerja anda
import os
os.chdir("**Put here the directory where you have the file with your function**")
from file import function
os.chdir("**Put here the directory where you were working**")
Alternatif 2 Tambahkan direktori di mana anda memiliki fungsi untuk sys.jalan
import sys
sys.path.append("**Put here the directory where you have the file with your function**")
from file import function
Datang di fitur yang sama tapi aku harus melakukan hal berikut ini untuk membuatnya bekerja.
Jika anda melihat 'ModuleNotFoundError: Tidak ada modul yang bernama', anda mungkin perlu dot(.) di depan nama file seperti di bawah ini;
dari .file impor funtion
Jika file anda dalam paket yang berbeda struktur dan anda ingin menyebutnya dari paket yang berbeda, maka anda dapat menyebutnya dalam fashion:
Let's mengatakan anda memiliki paket berikut struktur di proyek python:
di - com.saya.func.DifferentFunction
file python anda memiliki beberapa fungsi, seperti:
def add(arg1, arg2):
return arg1 + arg2
def sub(arg1, arg2) :
return arg1 - arg2
def mul(arg1, arg2) :
return arg1 * arg2
Dan anda ingin memanggil fungsi yang berbeda dari Example3.py
, maka berikut ini cara yang dapat anda lakukan:
Menentukan pernyataan impor di Example3.py
- file untuk mengimpor semua fungsi
from com.my.func.DifferentFunction import *
atau menentukan fungsi masing-masing nama yang ingin anda impor
from com.my.func.DifferentFunction import add, sub, mul
Kemudian dalam Example3.py
anda dapat memanggil fungsi untuk melaksanakan:
num1 = 20
num2 = 10
print("\n add : ", add(num1,num2))
print("\n sub : ", sub(num1,num2))
print("\n mul : ", mul(num1,num2))
Output:
add : 30
sub : 10
mul : 200
Pertama menyimpan file di .py format (misalnya, my_example.py
).
Dan jika file yang memiliki fungsi,
def xyz():
--------
--------
def abc():
--------
--------
Dalam pemanggilan fungsi anda hanya perlu mengetikkan baris di bawah ini.
file_name: my_example2.py
============================
import my_example.py
a = my_example.xyz()
b = my_example.abc()
============================
Rename modul ke sesuatu yang lain dari 'file'.
Kemudian juga pastikan ketika anda memanggil fungsi yang:
1)jika anda mengimpor seluruh modul, anda mengulangi nama modul ketika menyebutnya:
import module
module.function_name()
atau
import pizza
pizza.pizza_function()
2)atau jika anda mengimpor fungsi tertentu, fungsi-fungsi dengan nama samaran, atau semua fungsi-fungsi yang menggunakan *, anda don't mengulangi nama modul:
from pizza import pizza_function
pizza_function()
atau
from pizza import pizza_function as pf
pf()
atau
from pizza import *
pizza_function()
tambahkan titik(.) di depan nama file jika anda ingin mengimpor file yang berada di direktori yang sama di mana anda menjalankan kode anda.
Sebagai contoh, saya'm menjalankan sebuah file yang bernama.py dan saya ingin mengimpor sebuah metode bernama addFun yang tertulis di b.py, dan b.py ada dalam direktori yang sama
dari .b import addFun
Misalkan file yang anda inginkan untuk panggilan anotherfile.py dan metode yang ingin anda panggil adalah cara pemesanan1, kemudian impor file dan kemudian metode
from anotherfile import method1
jika cara pemesanan1 adalah bagian dari sebuah kelas, biarkan class class1, maka
from anotherfile import class1
kemudian membuat sebuah objek dari kelas 1, misalkan nama objek adalah ob1, maka
ob1 = class1()
ob1.method1()