นำเข้าโมดูลเข้า Python ด้วยตัวอย่าง

มีโมดูลอะไรบ้าง Python?

โมดูลคือไฟล์ที่มีรหัสหลาม รหัสสามารถอยู่ในรูปแบบของตัวแปร ฟังก์ชัน หรือคลาสที่กำหนด ชื่อไฟล์จะกลายเป็นชื่อโมดูล

ตัวอย่างเช่น หากชื่อไฟล์ของคุณคือ guru99.py ชื่อโมดูลก็จะเป็น guru99- ด้วยฟังก์ชันการทำงานของโมดูล คุณสามารถแบ่งโค้ดของคุณออกเป็นไฟล์ต่างๆ แทนที่จะเขียนทุกอย่างไว้ในไฟล์เดียว

เป็นสิ่งที่ Python นำเข้าโมดูล?

ไฟล์ถือเป็นโมดูลในหลาม หากต้องการใช้โมดูล คุณต้องนำเข้าโดยใช้ การนำเข้า คำหลัก ฟังก์ชั่นหรือตัวแปรที่อยู่ในไฟล์สามารถใช้ในไฟล์อื่นได้โดยการนำเข้าโมดูล ฟังก์ชันนี้มีให้บริการในภาษาอื่น เช่น typescript Javaสคริปต์, java, ruby ​​ฯลฯ

วิธีสร้างและนำเข้าโมดูลมา Python?

ตอนนี้เราจะสร้างโมดูลและนำเข้าไปยังไฟล์อื่น

นี่คือขั้นตอนการสร้างและนำเข้าโมดูลตามที่แสดงในภาพหน้าจอ:

สร้างและนำเข้าโมดูลเข้า Python

ทำตามขั้นตอนที่กำหนดเพื่อสร้างโมดูลในหลาม

โครงสร้างโฟลเดอร์ที่ใช้ในการทดสอบโค้ดมีดังนี้:

modtest/
	test.py
	display.py	

ขั้นตอน 1) สร้างไฟล์และตั้งชื่อว่า test.py

ขั้นตอน 2) ภายใน test.py ให้สร้างฟังก์ชันชื่อ display_message()

Def display_message():
    return "Welcome to Guru99 Tutorials!"

ขั้นตอน 3) ตอนนี้สร้างไฟล์อื่น display.py

ขั้นตอน 4) ภายใน display.py นำเข้าไฟล์ moduletest.py ดังแสดงด้านล่าง:

import test

ขณะนำเข้า คุณไม่จำเป็นต้องพูดถึง test.py แต่ระบุแค่ชื่อไฟล์เท่านั้น

ขั้นตอน 5) จากนั้นคุณสามารถเรียกใช้ฟังก์ชัน display_message() จาก test.py ภายใน display.py คุณต้องใช้ module_name.function_name

ตัวอย่างเช่น test.display_message()

Import test
print(test.display_message())

ขั้นตอน 6) เมื่อคุณรัน display.py คุณจะได้รับสิ่งต่อไปนี้ Output:

Welcome to Guru99 Tutorials!

การนำเข้าคลาสเข้า Python

ก่อนหน้านี้ เราได้เห็นโมดูลธรรมดาๆ ที่มีฟังก์ชันแล้ว ที่นี่จะสร้างคลาสและอ้างอิงคลาสภายในไฟล์อื่น

โครงสร้างโฟลเดอร์เพื่อทดสอบโค้ดมีดังนี้:

myproj/
	Car.py
	display.py

สร้างไฟล์ชื่อ Car.py โดยมีโค้ดต่อไปนี้:

ชื่อไฟล์ : Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

ในไฟล์ Car.py มีแอตทริบิวต์ brand_name, model และ manu_year ฟังก์ชันที่กำหนดไว้ภายในคลาสคือ car_details(), get_Car_brand(), get_Car_model()

ตอนนี้ให้เราใช้ไฟล์ Car.py เป็นโมดูลในไฟล์อื่นที่เรียกว่า display.py

ชื่อไฟล์ : display.py

import Car
car_det = Car.Car("BMW","Z5", 2020)
print(car_det.brand_name)
print(car_det.car_details())
print(car_det.get_Car_brand())
print(car_det.get_Car_model())

Output:

BMW
Car brand is  BMW
Car model is  Z5
Car manufacture year is  2020
Car brand is  BMW
Car model is  Z5

ดังนั้นเราจึงสามารถเข้าถึงตัวแปรและฟังก์ชันทั้งหมดจาก Car.py โดยใช้โมดูล Car

การใช้โมดูล from to import

คุณสามารถนำเข้าเพียงส่วนเล็กๆ ของโมดูล เช่น เฉพาะฟังก์ชันที่จำเป็นและชื่อตัวแปรจากโมดูล แทนที่จะนำเข้าโค้ดแบบเต็ม

เมื่อคุณต้องการนำเข้าเฉพาะสิ่งที่เฉพาะเจาะจง คุณสามารถใช้คำสำคัญ "จาก" เพื่อนำเข้าสิ่งที่คุณต้องการได้

ดังนั้นไวยากรณ์คือ

from  module import your function_name , variables,... etc.

โครงสร้างโฟลเดอร์ที่ใช้ในการทดสอบโค้ดมีดังนี้:

modtest/
	test.py
	display.py	

ใน test.py มี 2 ฟังก์ชันดังรูป:

ชื่อไฟล์ : test.py

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
def display_message1():
	return "All about Python!"

ตอนนี้คุณต้องการฟังก์ชัน display_message() สามารถเข้าถึงฟังก์ชันหรือตัวแปรที่คุณกำลังนำเข้าได้โดยตรงดังที่แสดงด้านล่าง:

ชื่อไฟล์ : display.py

from test import display_message
print(display_message())

Output:

Welcome to Guru99 Tutorials!

ตอนนี้หากคุณใช้ฟังก์ชัน display_message1() มันจะเกิดข้อผิดพลาดว่าฟังก์ชันไม่ได้ถูกกำหนดไว้ดังที่แสดงด้านล่าง:

from test import display_message
print(display_message1())

Output:

Traceback (most recent call last):
File "display.py", line 3, in <module>
print(display_message1())
Name Error: name 'display_message1' is not defined

การนำเข้าทุกอย่างจากโมดูล

การนำเข้าช่วยให้คุณสามารถนำเข้าโมดูลทั้งหมดได้โดยใช้การนำเข้าตามด้วยชื่อโมดูล เช่น ชื่อไฟล์หรือไลบรารีที่จะใช้

ไวยากรณ์:

Import module

หรือโดยการใช้

from module import *

โครงสร้างโฟลเดอร์ที่ใช้ในการทดสอบโค้ดมีดังนี้:

modtest/
	test.py
	display.py	

ต่อไปนี้เป็นรายละเอียดโค้ดภายใน test.py

my_name = "Guru99"
my_address = "Mumbai"

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
	
def display_message1():
	return "All about Python!"

การใช้โมดูลนำเข้า

การใช้เพียงชื่อโมดูลนำเข้าเพื่ออ้างอิงถึงตัวแปรและฟังก์ชันภายในโมดูลนั้นจะต้องนำหน้าด้วยชื่อโมดูล

ตัวอย่าง

ชื่อไฟล์ : display.py

Import test
print(test.display_message())
print(test.display_message1())
print(test.my_name)
print(test.my_address)

การทดสอบชื่อโมดูลใช้เพื่ออ้างถึงฟังก์ชันและตัวแปรภายในการทดสอบโมดูล

Output:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

ใช้การนำเข้า *

เรามาดูตัวอย่างการใช้งานกัน นำเข้า *. การใช้ นำเข้า *สามารถเข้าถึงฟังก์ชันและตัวแปรได้โดยตรง ดังตัวอย่างด้านล่าง:

from test import *

print(display_message())
print(display_message1())
print(my_name)
print(my_address)

Output:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

ฟังก์ชัน dir( )

dir() เป็นฟังก์ชันในตัวในหลาม dir() ส่งคืนคุณสมบัติและวิธีการทั้งหมด รวมถึงคุณสมบัติในตัวของวัตถุที่กำหนด

ดังนั้นเมื่อใช้ dir() กับโมดูล มันจะให้ตัวแปรและฟังก์ชันต่างๆ ที่มีอยู่ในโมดูล

นี่คือตัวอย่างการทำงานของ dir() บนโมดูล เรามีคลาสชื่อ Car.py ให้เรานำเข้า Car และกำหนดให้ dir() เพื่อดูผลลัพธ์

โครงสร้างโฟลเดอร์ที่จะทดสอบโค้ดจะเป็นดังนี้:

test prop/
	Car.py
	test.py	

ชื่อไฟล์: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

ชื่อไฟล์: test.py

import Car

class_contents = dir(Car)
print(class_contents)

ผลลัพธ์จะให้ชื่อของคลาสและฟังก์ชันทั้งหมดที่กำหนดไว้ใน Car.py

คุณยังสามารถลองใช้ dir() กับโมดูลในตัวที่มีอยู่ Python- ให้เราลองเหมือนกัน JSON โมดูลดังแสดงในตัวอย่างด้านล่าง มันจะแสดงคุณสมบัติและวิธีการทั้งหมดที่มีอยู่ใน JSON โมดูล.

Import json
json_details = dir(json)
print(json_details)

Output:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu
iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac
kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en
coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa
d', 'loads', 'scanner']

แบบรวดเร็ว

แพ็คเกจคือไดเร็กทอรีที่มีโมดูลทั้งหมดกำหนดอยู่ภายใน เพื่อทำก Python ล่ามถือว่ามันเป็นแพ็คเกจ ไดเร็กทอรีของคุณควรมีไฟล์ init.py init.py ทำให้ไดเร็กทอรีเป็นแพ็คเกจ นี่คือเค้าโครงของแพ็คเกจที่เรากำลังจะดำเนินการ

แพ็คเกจใน Python

ชื่อแพ็คเกจคือ แพ็คเกจของฉันหากต้องการเริ่มทำงานกับแพ็คเกจ ให้สร้างไดเรกทอรีชื่อ package/ จากนั้นสร้างไฟล์ว่างชื่อ __init__.py ภายในไดเรกทอรี สร้างไฟล์เพิ่มอีก 3 ไฟล์ ได้แก่ module1.py, module2.py และ module3.py และกำหนดฟังก์ชันตามที่แสดงในภาพหน้าจอ ต่อไปนี้คือรายละเอียดของ module1.py, module2.py และ module3.py

module1.py

def mod1_func1():
print("Welcome to Module1 function1")

def mod1_func2():
print("Welcome to Module1 function2")

def mod1_func3():
print("Welcome to Module1 function3")

module2.py

def mod2_func1():
print("Welcome to Module2 function1")

def mod2_func2():
print("Welcome to Module2 function2")

def mod2_func3():
print("Welcome to Module2 function3")

module3.py

def mod3_func1():
print("Welcome to Module3 function1")

def mod3_func2():
print("Welcome to Module3 function2")

def mod3_func3():
print("Welcome to Module3 function3")

การขอ แพ็คเกจพร้อมใช้งานแล้ว ตอนนี้เรียกแพ็คเกจภายในไฟล์ใด ๆ ของคุณดังที่แสดงด้านล่าง :test.py:

ที่นี่ mypackage.module1 จะถูกนำเข้าและตั้งชื่อนามแฝงเป็น รุ่น1. ในทำนองเดียวกัน คุณสามารถใช้โมดูลอื่น module2.py และ module3.py จากแพ็คเกจของฉันได้

import mypackage.module1 as mod1

print(mod1.mod1_func1())
print(mod1.mod1_func2())
print(mod1.mod1_func2())

Output:

Welcome to Module1 function1
None
Welcome to Module1 function2
None
Welcome to Module1 function2
None

เราเพิ่งสาธิตแพ็คเกจด้วยโมดูลธรรมดาที่มีฟังก์ชันอยู่ข้างใน ตามโปรเจ็กต์ของคุณ คุณยังสามารถจัดแพ็คเกจโดยมีแพ็คเกจย่อยได้ด้วย โฟลเดอร์ย่อย/ มีโมดูลที่มีคลาสกำหนดไว้

Python เส้นทางการค้นหาโมดูล

ระหว่างการประหารชีวิต เมื่อเจอกับหลาม ชื่อโมดูลนำเข้าล่ามพยายามค้นหาโมดูล ค้นหาโมดูลในรายการโมดูลบิวด์อิน Later โดยรวมแล้วไดเร็กทอรีที่กำหนดไว้ภายใน sys.path

สรุปแล้วล่ามจะทำการค้นหาต่อไปนี้เพื่อค้นหาโมดูล:

  1. ในไดเร็กทอรีปัจจุบันของคุณ
  2. ในในรายการโมดูลบิวด์อิน
  3. ภายในไดเร็กทอรี sys.path

คุณสามารถรับรายละเอียดของ sys.path ได้โดยการนำเข้าโมดูล sys และพิมพ์ sys.path จากนั้นจะแสดงรายชื่อไดเรกทอรีดังแสดงด้านล่าง:

importsys
print(sys.path)

Output:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\
\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P
ython37\\DLLs']

คุณยังสามารถแก้ไขเส้นทางและเก็บไดเร็กทอรีตามความต้องการของคุณ

การใช้นามแฝงโมดูลในการนำเข้า

คุณยังสามารถแปลงชื่อโมดูลให้เป็นรูปแบบที่สั้นลงได้ด้วยการตั้งชื่อนามแฝง นามแฝงสามารถทำได้โดยใช้คำหลัก

ไวยากรณ์:

import filename as alias name

โครงสร้างโฟลเดอร์ที่จะทดสอบโค้ดจะเป็นดังนี้:

Mod test/
	test.py
	display.py	

ต่อไปนี้เป็นโค้ดภายใน test.py

my_name = "Guru99"
my_address = "Mumbai"

def display_message():
	return "Welcome to Guru99 Tutorials!"	
	
def display_message1():
	return "All about Python!"

ตอนนี้จะใช้นามแฝงสำหรับ test.py ใน display.py

Import test as t

print(t.display_message())
print(t.display_message1())
print(t.my_name)
print(t.my_address)

นามแฝงที่ใช้สำหรับโมดูลทดสอบคือ t ดังนั้นฟังก์ชันและตัวแปรจาก test.py จึงสามารถอ้างอิงได้โดยใช้นามแฝง t

Output:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

การนำเข้าแบบสัมบูรณ์และแบบสัมพัทธ์ใน Python

ตอนนี้คุณรู้วิธีนำเข้าไฟล์เป็นโมดูลภายในไฟล์อื่นแล้ว ให้เราดูวิธีจัดการไฟล์ที่มีอยู่ในโฟลเดอร์ ไฟล์ในโฟลเดอร์สามารถนำเข้าได้โดยใช้การนำเข้าแบบสัมบูรณ์หรือการนำเข้าแบบสัมพันธ์

พิจารณาว่าคุณมีโครงสร้างโฟลเดอร์โครงการของคุณ ดังที่แสดงด้านล่าง:

การนำเข้าแบบสัมบูรณ์และแบบสัมพัทธ์ใน Python

โฟลเดอร์รูทคือโปรเจ็กต์ของฉัน / . มีสองโฟลเดอร์ย่อย package1 และ package2

โฟลเดอร์ package1 มีสองโมดูล ได้แก่ module1.py และ module2.py

โฟลเดอร์ package2 มีหนึ่งคลาส myclass.py, sub-package subpkg พร้อม module3.py และ module4.py สุดท้าย

  • ใน module1.py มีฟังก์ชันที่เรียกว่า myfunc1
  • ใน module2.py มีฟังก์ชันที่เรียกว่า myfunc2
  • ใน module3.py มีฟังก์ชันที่เรียกว่า myfunc3
  • ใน module4.py มีฟังก์ชันที่เรียกว่า myfunc4

ใช้การนำเข้าแบบสัมบูรณ์

สำหรับการนำเข้าแบบสัมบูรณ์ คุณจะต้องเพิ่มเส้นทางทั้งหมดของโมดูลจากโฟลเดอร์รูทโปรเจ็กต์โดยตรง

ตอนนี้เรามาดูวิธีการใช้การนำเข้าแบบสัมบูรณ์เพื่ออ้างถึงฟังก์ชันที่มีอยู่ในแต่ละโมดูล

หากต้องการทำงานกับ functionmyfunc1 คุณจะต้องนำเข้าดังนี้:

from package1.module1  import  myfunc1
or
from package1 import module1
module1.myfunc1()  

ในการทำงานกับฟังก์ชัน myfunc3 คุณจะต้องนำเข้าดังนี้:

from package1.subpkg.module3  import  myfunc3
or
from package1.subpkg import module3
module3.myfunc3()  

ข้อดีและข้อเสียของการใช้การนำเข้าแบบสัมบูรณ์

ข้อดีของการใช้การนำเข้าแบบสัมบูรณ์มีดังนี้

  • ง่ายต่อการติดตามโมดูลเพื่อตรวจสอบโค้ด
  • ใช้งานง่ายและตรงไปตรงมามาก
  • หากโปรเจ็กต์ถูกย้ายไปยังเส้นทางอื่น การนำเข้าจะยังคงเหมือนเดิม

ข้อเสียของการใช้การนำเข้าแบบสัมบูรณ์

นี่คือข้อเสียของการใช้การนำเข้าแบบสัมบูรณ์:

ข้อเสีย:

  • เส้นทางการนำเข้าอาจยาวมากในกรณีที่โมดูลซ้อนกัน และหากชื่อของโมดูลยาว

การใช้การนำเข้าแบบสัมพันธ์

เมื่อพิจารณาถึงโครงสร้างโฟลเดอร์เดียวกันที่กล่าวถึงด้านล่าง เราจะดูวิธีการนำเข้าโครงสร้างเดียวกันโดยใช้การนำเข้าแบบสัมพันธ์

ในการนำเข้าแบบสัมพันธ์ โมดูลที่จะนำเข้าจะสัมพันธ์กับตำแหน่งปัจจุบันซึ่งเป็นตำแหน่งที่มีคำสั่งการนำเข้าอยู่

วากยสัมพันธ์

ในการนำเข้าแบบสัมพันธ์ คุณต้องเพิ่มจุด (.) ก่อนชื่อโมดูลเมื่อนำเข้าโดยใช้ จาก.

มันจะเป็น 2 จุด (..) ก่อนชื่อโมดูลหากโมดูลอยู่ในระดับหนึ่งขึ้นไปจากตำแหน่งปัจจุบัน

เมื่ออ้างอิงจากรูปโครงสร้างโฟลเดอร์ที่กล่าวไว้ข้างต้น เรามีโมดูลพร้อมฟังก์ชันที่เราจำเป็นต้องอ้างอิงถึงดังต่อไปนี้

  • ใน module1.py มีฟังก์ชันที่เรียกว่า myfunc1
  • ใน module2.py มีฟังก์ชันที่เรียกว่า myfunc2
  • ใน module3.py มีฟังก์ชันที่เรียกว่า myfunc3
  • ใน module4.py มีฟังก์ชันที่เรียกว่า myfunc4

หากต้องการทำงานกับ functionmyfunc1 คุณจะต้องนำเข้าดังนี้:

from  .module1  import  myfunc1

หากต้องการทำงานกับฟังก์ชัน myfunc3 คุณจะต้องนำเข้าดังนี้:

from  .subpkg.module3  import  myfunc3

ข้อดีของการนำเข้าแบบสัมพันธ์

ข้อดี:

  • มันง่ายที่จะทำงานกับการนำเข้าแบบสัมพันธ์
  • จากตำแหน่งปัจจุบัน การนำเข้าสามารถย่อให้สั้นลงเมื่อเปรียบเทียบกับการนำเข้าแบบสัมบูรณ์

ข้อเสียของการนำเข้าแบบสัมพัทธ์

ข้อเสีย:

  • การใช้การนำเข้าแบบสัมพันธ์ทำให้ยากต่อการสืบย้อนว่าโค้ดนั้นอยู่ที่ใด

สรุป

  • นำเข้ามา Python ช่วยให้คุณอ้างอิงถึงโค้ด เช่น .functions/objects ที่เขียนในไฟล์อื่น นอกจากนี้ยังใช้เพื่อนำเข้าไลบรารี/แพ็กเกจ Python ที่ติดตั้งโดยใช้ pip(ตัวจัดการแพ็กเกจ Python) และคุณจำเป็นต้องใช้ในโค้ดของคุณ
  • ฟังก์ชันการนำเข้ามีให้บริการในภาษาอื่นๆ เช่น typescript Javaสคริปต์, java, ruby ​​ฯลฯ
  • โมดูลคือ python คือโค้ดที่เขียนอยู่ภายในไฟล์ เช่น (test.py) ภายในไฟล์ของคุณ คุณสามารถกำหนดตัวแปร ฟังก์ชัน หรือคลาสของคุณได้ ไฟล์ทั้งหมดกลายเป็นโมดูลและสามารถนำเข้าภายในไฟล์อื่นเพื่ออ้างอิงถึงโค้ดได้
  • ด้วยฟังก์ชันการทำงานของโมดูล คุณสามารถแบ่งโค้ดของคุณออกเป็นไฟล์ต่างๆ แทนที่จะเขียนทุกอย่างไว้ในไฟล์เดียว Laterเมื่อใช้การนำเข้า คุณสามารถอ้างอิงถึงโค้ดภายในไฟล์ที่คุณต้องการได้
  • Python มีโมดูลในตัวและยังมีไลบรารี/แพ็คเกจภายนอกที่ติดตั้งโดยใช้ไฟล์ ตัวจัดการแพ็คเกจหลาม (pip) เช่น pandas, NumPy ฯลฯ เรียกว่าโมดูล
  • คุณสามารถนำเข้าเพียงส่วนเล็กๆ ของโมดูล เช่น เฉพาะฟังก์ชันที่จำเป็นและชื่อตัวแปรจากโมดูล แทนที่จะนำเข้าโค้ดแบบเต็ม
  • คุณยังสามารถแปลงชื่อโมดูลให้เป็นรูปแบบที่สั้นลงได้ด้วยการตั้งชื่อนามแฝง นามแฝงสามารถทำได้โดยใช้คำหลัก
  • แพ็คเกจคือไดเร็กทอรีที่มีโมดูลทั้งหมดกำหนดอยู่ภายใน เพื่อทำก Python ล่ามถือว่ามันเป็นแพ็คเกจ ไดเร็กทอรีของคุณควรมี __init.pyfile init.py ทำให้ไดเร็กทอรีเป็นแพ็คเกจ นี่คือเค้าโครงของแพ็คเกจที่เรากำลังจะดำเนินการ
  • ระหว่างการประหารชีวิต เมื่อเจอกับหลาม ชื่อโมดูลนำเข้าล่ามพยายามค้นหาโมดูล ค้นหาโมดูลในรายการโมดูลบิวด์อิน Later โดยรวมแล้วไดเร็กทอรีที่กำหนดไว้ภายใน sys.path
  • สำหรับการนำเข้าแบบสัมบูรณ์ คุณจะต้องเพิ่มเส้นทางทั้งหมดของโมดูลจากโฟลเดอร์รูทโปรเจ็กต์โดยตรง
  • ในการนำเข้าแบบสัมพันธ์ โมดูลที่จะนำเข้าจะสัมพันธ์กับตำแหน่งปัจจุบันซึ่งเป็นตำแหน่งที่มีคำสั่งการนำเข้าอยู่

สรุปโพสต์นี้ด้วย: