Python मा स्ट्रक्ट संरचना अनुकरण | dataclass र struct प्रयोग

目次

1. Python मा संरचनाको आवश्यकता के हो

Python एक उच्च स्तरको प्रोग्रामिङ भाषा हो, जसमा C भाषाको जस्तै प्रत्यक्ष “संरचना” को कार्यक्षमता छैन। तर, यदि धेरै सम्बन्धित डेटा एकै साथ समेटेर प्रयोग गर्न चाहनुहुन्छ भने, C भाषाको संरचनाजस्तै डेटा संरचना चाहनु पर्न सक्छ। विशेष गरी, डेटाबेसबाट सूचना व्यवस्थापन, फाइल अपरेसन, वा नेटवर्क संचार जस्ता विभिन्न परिस्थितिहरूमा डेटा को प्रभावकारी प्रक्रिया आवश्यक पर्छ।

संरचनाको आवश्यकता महसुस हुने परिस्थितिहरू

तलका परिदृश्यहरूमा, Python मा संरचनासँग समान डेटा व्यवस्थापन विधि विशेष रूपमा उपयोगी हुन्छ।
  • धेरै सम्बन्धित डेटा व्यवस्थापन गर्ने अवस्थामा: उदाहरणका लागि, प्रयोगकर्ता जानकारी वा उत्पादन डेटा जस्ता, बहु गुणहरू भएको डेटा सेटलाई व्यवस्थापन गर्न आवश्यक पर्ने अवस्थामा।
  • फाइल प्रक्रिया वा नेटवर्क संचार: बाइनरी डेटा को प्याक र अनप्याक, वा विशेष ढाँचामा डेटा पठाउने/प्राप्त गर्ने बेला, C भाषाको संरचनाजस्तै डेटा व्यवस्थापन विधि प्रभावकारी हुन्छ।

2. Python dataclass प्रयोग गरेर संरचनाको अनुकरण

dataclass Python 3.7 मा परिचय गरिएको मोड्युल हो, जसले जटिल क्लासहरूलाई संक्षिप्त रूपमा परिभाषित गर्न, संरचनासँग मिल्दोजुल्दो डेटा संरचनालाई प्रभावकारी रूपमा ह्यान्डल गर्न शक्तिशाली उपकरण हो। dataclass C भाषाको संरचनाको तुलनामा, अधिक Python‑शैलीको लचिलो डेटा व्यवस्थापन प्रदान गर्दछ।

dataclassको मूलभूत प्रयोग र अनुप्रयोग उदाहरण

dataclass प्रयोग गर्दा, डेटा संरचनालाई संक्षिप्त रूपमा परिभाषित गर्न सकिन्छ, र म्यानुअल मेथड परिभाषा आवश्यक हुँदैन। अब, मूलभूत प्रयोग उदाहरण देखाइन्छ।
from dataclasses import dataclass

@dataclass
class Book:
    title: str
    author: str
    price: float
यस उदाहरणमा, Book नामक डेटा क्लास परिभाषित गरिएको छ। प्रत्येक फील्ड स्वचालित रूपमा __init__ मेथडद्वारा इनिशियलाइज हुन्छ, र वस्तुहरू सजिलै सिर्जना गर्न सकिन्छ।
book1 = Book("Python परिचय", "सातो", 2800)
print(book1)  # आउटपुट: Book(title='Python परिचय', author='सातो', price=2800)

dataclassको अनुप्रयोगात्मक सुविधाहरू

थप रूपमा, dataclass मा फील्डहरूमा डिफ़ॉल्ट मान सेट गर्न सकिन्छ, र वैकल्पिक फील्डहरू भए पनि, अझ संक्षिप्त रूपमा परिभाषित गर्न सम्भव छ।
@dataclass
class Product:
    name: str
    price: float = 0.0  # डिफ़ॉल्ट मान सेट गर्नुहोस्
यसरी, dataclass सरल संरचनासँग मिल्दोजुल्दो डेटा व्यवस्थापन आवश्यक पर्ने परिस्थितिहरूमा शक्तिशाली उपकरण हो, र डेटा व्यवस्थापनको लचिलोपन र पठनीयता बढाउँछ।
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. Python struct मोड्युल प्रयोग गरेर संरचना जस्तै डेटा संचालन

अर्कोतर्फ, Python को struct मोड्युल C भाषाको संरचनासँग धेरै नजिकको सञ्चालन विधि प्रदान गर्दछ। विशेष गरी बाइनरी डेटा प्याक र अनप्याक सम्बन्धी कार्यहरू धनी छन्, र नेटवर्क संचार तथा फाइल प्रोसेसिङमा प्रभावकारी छन्।

struct मोड्युलको आधारभूत प्रयोग

तलको कोड पूर्णांक र फ्लोटिङ पोइन्ट संख्यालाई बाइट स्ट्रिङमा प्याक गरी, पुनः अनप्याक गर्ने उदाहरण हो।
import struct

# पूर्णांक र फ्लोटिङ पोइन्ट संख्यालाई बाइट स्ट्रिङमा प्याक गर्नुहोस्
packed_data = struct.pack('if', 1024, 3.14)
print(packed_data)  # आउटपुट: b'x00x04x00x00xc3xf5H@'

# बाइट स्ट्रिङलाई अनप्याक गर्नुहोस्
unpacked_data = struct.unpack('if', packed_data)
print(unpacked_data)  # आउटपुट: (1024, 3.140000104904175)
यस उदाहरणले डेटा बाइनरी स्वरूपमा सुरक्षित गर्दा वा नेटवर्क संचारमा बाइट स्ट्रिङमा रूपान्तरण गर्दा उपयोगी विधि देखाउँछ। विशेष गरी struct मोड्युलले डेटा प्रकार निर्दिष्ट गर्ने फर्म्याट स्ट्रिङ (उदाहरण: i पूर्णांक हो, f फ्लोटिङ पोइन्ट हो) प्रयोग गरेर डेटा प्रभावकारी रूपमा व्यवस्थापन गर्न सक्छ।

अधिक जटिल डेटा प्रकारको ह्यान्डलिङ

साथै, बहु डेटा प्रकारलाई एकै साथ ह्यान्डल गर्दा पनि struct उपयोगी हुन्छ। अब, स्ट्रिङ, पूर्णांक, फ्लोटिङ पोइन्टलाई प्याक र अनप्याक गर्ने तरिका देखाइन्छ।
packed_data = struct.pack('i4sf', 1, b'test', 2.7)
print(packed_data)  # आउटपुट: b'x01x00x00x00testxcdxcc,@'

unpacked_data = struct.unpack('i4sf', packed_data)
print(unpacked_data)  # आउटपुट: (1, b'test', 2.700000047683716)
यसरी, struct मोड्युल बाइनरी डेटा प्याक‑अनप्याकमा विशेषीकृत अत्यन्त प्रभावकारी उपकरण हो।

4. Python dataclassstruct को प्रयोग विभाजन

dataclassstruct ले डेटा व्यवस्थापनमा प्रत्येक अलग विशेषताहरू छन्। यहाँ, कुन परिस्थितिमा प्रत्येकलाई प्रयोग गर्नुपर्छ भन्ने बारेमा व्याख्या गर्छौं।

dataclass प्रयोग गर्ने परिस्थितिहरू

  • हल्का डेटा व्यवस्थापन आवश्यक परेमा: dataclass संरचनात्मक डेटा जस्तै डेटा प्रभावकारी रूपमा ह्यान्डल गर्न उपयुक्त छ। उदाहरणका लागि, वेब अनुप्रयोगमा प्रयोगकर्ता जानकारी व्यवस्थापन गर्दा, धेरै फील्डहरू भएको डेटा सरल रूपमा ह्यान्डल गर्न चाहिने परिस्थितिमा उपयोगी हुन्छ।
  • पढ्न सजिलो र लचिलोपनलाई महत्व दिने परिस्थितिहरू: Python कोडको पढ्न सजिलोपनलाई महत्व दिने प्रोजेक्टमा, विकास गति बढाउन चाहिने अवस्थामा उपयुक्त छ।

struct प्रयोग गर्ने परिस्थितिहरू

  • बाइनरी डेटा समावेश भएको अवस्थामा: नेटवर्क संचार वा बाइनरी फाइलको अपरेशन आवश्यक परेमा, struct मोड्युलले डेटा प्रभावकारी रूपमा बाइट स्ट्रिङमा रूपान्तरण गर्न सक्छ।
  • मेमोरी दक्षता अधिकतम प्रयोग गर्न चाहिने अवस्थामा: ठूलो मात्रामा डेटा बाइट स्ट्रिङको रूपमा प्रभावकारी रूपमा व्यवस्थापन गर्न चाहिने अवस्थामा, struct उत्कृष्ट विकल्प हो।

5. संरचनाहरू प्रयोग गरेर व्यावहारिक उदाहरणहरू

dataclassको व्यावहारिक उदाहरण: उत्पादन डेटा व्यवस्थापन प्रणाली

अगाडि, dataclass प्रयोग गरेर उत्पादनको जानकारी व्यवस्थापन गर्ने उदाहरण प्रस्तुत गर्दछौं। तलको कोड EC साइटको उत्पादन व्यवस्थापन प्रणालीको एक भागलाई दर्शाउँछ।
from dataclasses import dataclass

@dataclass
class Product:
    name: str
    price: float
    stock: int

# उत्पादन डेटा निर्माण
product1 = Product("ノートPC", 150000, 30)
product2 = Product("スマートフォン", 80000, 50)

print(product1)  # आउटपुट: Product(name='ノートPC', price=150000, stock=30)
यसरी, dataclass प्रयोग गरेर जटिल उत्पादन डेटा सजिलै व्यवस्थापन गर्न सकिन्छ, र स्टक व्यवस्थापन प्रणालीजस्ता अन्य प्रणालीहरूमा पनि लचिलो रूपमा प्रयोग गर्न सकिन्छ।

structको व्यावहारिक उदाहरण: नेटवर्क सञ्चारमा बाइनरी डेटा पठाउने र प्राप्त गर्ने

साथै, struct नेटवर्क सञ्चारमा बाइनरी डेटा पठाउँदा अत्यन्त उपयोगी हुन्छ। उदाहरणका लागि, सर्भरहरू बीच डेटा पठाउँदा र प्राप्त गर्दा, डेटा बाइट श्रृंखलामा रूपान्तरण गरी प्रभावकारी रूपमा पठाउन सकिन्छ।
import struct

# डेटा प्याक गरेर पठाउने (सर्भरलाई पठाउने डेटा उदाहरण)
data_to_send = struct.pack('i4sf', 42, b'data', 7.5)
print(data_to_send)  # आउटपुट: b'x2ax00x00x00datax00x00x00x00x00x00x00'

# प्राप्त पक्षमा अनप्याक
received_data = struct.unpack('i4sf', data_to_send)
print(received_data)  # आउटपुट: (42, b'data', 7.5)
यो कोडले पूर्णांक मान (42), 4 बाइटको स्ट्रिङ (data), र फ्लोटिङ‑प्वाइन्ट संख्या (7.5) लाई बाइट श्रृंखलामा प्याक गरेर पठाउने, र प्राप्त पक्षमा अनप्याक गरेर मूल डेटा पुनः निर्माण गर्ने प्रक्रिया देखाउँछ। struct प्रयोग गरेर, डेटा सानो मेमोरी आकारमा प्रभावकारी रूपमा प्रक्रिया गर्न सम्भव हुन्छ।

6. सारांश

Python मा संरचना (struct) को भूमिका निभाउने उपायको रूपमा, dataclassstruct मोड्युलहरूलाई प्रयोग गरेर विभिन्न परिस्थितिहरूमा डेटा व्यवस्थापनको लचिलोपन र कार्यक्षमता अधिकतम गर्न सकिन्छ।
  • dataclass हल्का डेटा संरचना सरल रूपमा परिभाषित गर्न, पढ्न सजिलो र मर्मतसम्भार सुधार गर्नको लागि उपकरण हो। मुख्यतया अनुप्रयोग विकास र डेटा प्रशोधनको अवस्थामा प्रयोग गरिन्छ, र वर्गको परिभाषा धेरै सरल बनाउँछ।
  • struct विशेष गरी बाइनरी डेटा ह्यान्डल गर्दा प्रभावकारी हुन्छ, र मेमोरी कार्यक्षमता प्राथमिकता दिने परिस्थितिहरूमा शक्तिशाली उपाय हो। नेटवर्क संचार वा बाइनरी स्वरूपको फाइल अपरेसनमा प्रदर्शन अधिकतम गर्न प्रयोग गरिन्छ।
प्रत्येक उपकरणलाई परिस्थितिअनुसार प्रयोग गरेर, Python मा डेटा अपरेसनलाई अझ प्रभावकारी बनाइनेछ। डेटा प्रकार र अपरेसनको उद्देश्य अनुसार उपयुक्त उपकरण चयन गरी, Python को शक्तिशाली सुविधाहरूलाई उपयोग गर्नुहोस्।
侍エンジニア塾