Python प्रकार संकेतहरू: पूर्ण मार्गदर्शिका, आधारभूतदेखि उन्नतसम्म

目次

१. परिचय

Python विकासकर्ताहरूबीच यसको लचिलोपन र प्रयोगको सजिलोपनका कारण लोकप्रिय छ। विशेष गरी, गतिशील रूपमा टाइप गरिने भाषा भएकोले, चलहरू वा कार्य (function) तर्कहरूका लागि स्पष्ट टाइप एनोटेशन आवश्यक पर्दैन। तर, परियोजनाहरू ठूलो हुँदै जाँदा र टोली विकास अघि बढ्दा, कोडको पढ्नयोग्यता र मर्मतसम्भार सुधार्न “टाइप एनोटेशन” को महत्व बढ्छ। यस लेखले Python टाइप एनोटेशनलाई आधारभूतदेखि उन्नत विषयहरू सम्म व्याख्या गरी व्यावहारिक प्रयोगका तरिकाहरू प्रस्तुत गर्दछ।

२. टाइप हिंट्स के हुन्

Python 3.5 बाट “टाइप हिंट्स (Type Hints)” परिचय गराइयो, जसले प्रकारहरू निर्दिष्ट गर्न मद्दत गर्छ। टाइप हिंट्सले रनटाइममा कोडलाई असर गर्दैन, तर विकासकर्ता, IDE, र स्थिर विश्लेषण उपकरणहरूलाई चलहरू, कार्य तर्कहरू, र रिटर्न मानहरूको अपेक्षित प्रकारको जानकारी प्रदान गर्छ। यसले कोडको पढ्नयोग्यता सुधार्छ र बगहरू चाँडै पत्ता लगाउन तथा विकास कार्यक्षमता बढाउन सहयोग पुर्‍याउँछ।

侍エンジニア塾

३. आधारभूत प्रकारहरू कसरी निर्दिष्ट गर्ने

चलहरूका लागि टाइप एनोटेशन

चलको प्रकार निर्दिष्ट गर्न, चलको नामपछि कोलन (:) राखी त्यसपछि प्रकारको नाम लेख्नुहोस्। यसले चलले कस्तो डेटा प्रकार धारण गर्नुपर्छ भन्ने स्पष्ट पार्छ।

कार्य (फङ्सन)का तर्कहरू र रिटर्न मानहरूका लागि टाइप एनोटेशन

कार्यका तर्कहरू र रिटर्न मानहरूका लागि प्रकारहरू निर्दिष्ट गरेर, कार्यलाई कसरी प्रयोग गर्नुपर्छ भन्ने स्पष्ट हुन्छ।

४. जटिल डेटा संरचनाहरूका लागि टाइप एनोटेशन

सूचीहरू र ट्युपलहरू

सूचीहरू र ट्युपलजस्ता संग्रह प्रकारहरूमा पनि टाइप एनोटेशन लागू गर्न सकिन्छ। typing मोड्युल प्रयोग गरेर सूचीको तत्वहरूको प्रकार निर्दिष्ट गर्न सकिन्छ।

from typing import List, Tuple

numbers: List[int] = [1, 2, 3]
coordinates: Tuple[float, float] = (1.5, 2.3)

Optional र Union

यदि कुनै तर्कले None स्वीकार गर्न सक्छ वा बहु प्रकारहरू लिन सक्छ भने, Optional वा Union प्रयोग गर्नुहोस्।

from typing import Optional, Union

def greet(name: Optional[str] = None) -> str:
    if name:
        return f"Hello, {name}!"
    return "Hello, World!"

def process(value: Union[int, float]) -> float:
    return float(value * 2)
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

५. कस्टम क्लासहरूका लागि टाइप एनोटेशन

प्रयोगकर्ता-परिभाषित क्लासहरूमा पनि टाइप एनोटेशन थप्न सकिन्छ। यसले क्लासका गुणहरू, विधि (method) तर्कहरू, र रिटर्न मानहरूको अपेक्षित प्रकार स्पष्ट रूपमा देखाउन मद्दत गर्छ।

class Person:
    def __init__(self, name: str, age: int):
        self.name: str = name
        self.age: int = age

def introduce(person: Person) -> str:
    return f"{person.name} is {person.age} years old."

६. टाइप-चेकिङ टूलहरू प्रयोग गर्ने

टाइप हिंट्सको प्रभावकारी प्रयोगका लागि स्थिर विश्लेषण टूलहरू अपनाउनु उपयोगी हुन्छ। सामान्य टूलहरूमा mypyPyright समावेश छन्।

mypy इन्स्टल र प्रयोग गर्ने

mypy एक स्थिर विश्लेषण टूल हो, जसले Python कोडको टाइप जाँच गर्दछ। तलका चरणहरू पालना गरेर यसलाई इन्स्टल र प्रयोग गर्न सकिन्छ।

pip install mypy

इन्स्टल पछि, आफ्नो कोडमा टाइप जाँच गर्न निम्न आदेश चलाउनुहोस्।

mypy your_script.py

Pyright परिचय

Pyright माइक्रोसफ्टले विकास गरेको द्रुत टाइप-चेकिङ टूल हो, जसको Visual Studio Code सँग बलियो एकीकरण छ। यसले वास्तविक‑समय टाइप जाँच समर्थन गर्दछ र विकास कार्यक्षमता सुधार्छ।

७. टाइप एनोटेशनका फाइदाहरू र विचारहरू

टाइप एनोटेशनका फाइदाहरू

  • कोडको पढ्नयोग्यता सुधार : प्रकारको जानकारी स्पष्ट रूपमा देखिएमा, कोडको उद्देश्य बुझ्न सजिलो हुन्छ।
  • पहिले बग पत्ता लगाउने : स्थिर विश्लेषण टूलहरू प्रयोग गर्दा, प्रकार असंगतिहरू अग्रिम रूपमा पत्ता लाग्छ।
  • विकास कार्यक्षमता वृद्धि : IDE को ऑटो‑कम्प्लिट सुविधा बलियो हुन्छ, जसले कोड लेख्न सहज बनाउँछ।

टाइप एनोटेशनका विचारहरू

टाइप हिंट्स अनिवार्य छैनन्, र अत्यधिक टाइप एनोटेशनले कोडलाई लम्बा र बोझिलो बनाइदिन सक्छ। विशेष गरी छोटो स्क्रिप्टहरू वा प्रोटोटाइप कोडका लागि लचिलोपन कायम राख्न टाइप एनोटेशनलाई वैकल्पिक राख्न उपयुक्त हुन सक्छ।

८. अक्सर सोधिने प्रश्नहरू (Q&A)

Q1. के टाइप हिंटहरू आवश्यक छन्?
होइन। टाइप हिंटहरू पायथनको सिन्ट्याक्सद्वारा आवश्यक छैनन्। तर, ती सिफारिस गरिन्छ, विशेष गरी ठूला परियोजनाहरूमा वा टिम‑आधारित विकासमा, कोडको पढ्नयोग्यता र मर्मतसम्भार सुधार्न।

Q2. के टाइप हिंटहरूले प्रदर्शनलाई असर गर्छ?
टाइप हिंटहरू आफैँमा रनटाइमलाई असर गर्दैनन्। पायथनका टाइप हिंटहरू स्थिर जानकारी हुन् र रनटाइममा बेवास्ता गरिन्छ। त्यसैले, तिनीहरूले प्रदर्शनमा प्रत्यक्ष प्रभाव पार्दैन।

Q3. टाइप हिंट र टाइप कमेन्टहरू बीच के फरक छ?
टाइप हिंटहरू पायथन कोडभित्र सिधै भेरिएबल र फङ्सनका प्रकारहरू निर्दिष्ट गर्ने तरिका हो, जबकि टाइप कमेन्टहरू प्रकारहरूलाई कमेन्टको रूपमा रेकर्ड गर्छन्। टाइप कमेन्टहरू पायथन 2.x मा वा जहाँ इनलाइन टाइप एनोटेशन सम्भव छैन (जस्तै, डिक्शनरीको कुञ्जीहरू वा सूचीका तत्वहरू) प्रयोग गरिन्छ।

# Type hint
age: int = 25

# Type comment (used for Python 2.x, etc.)
age = 25  # type: int

Q4. पायथन टाइप एनोटेशनहरू कडा हुनुपर्छ?
पायथन एक गतिशील रूपमा टाइप गरिएको भाषा भएको कारण, टाइप एनोटेशनहरूलाई “हिन्ट” जस्तै मानिन्छ र कडा रूपमा प्रकारहरू लागू गर्दैन। तपाईं अझै विभिन्न प्रकारका मानहरू पास गर्न सक्नुहुन्छ, तर स्थिर विश्लेषण उपकरणहरू प्रयोग गर्दा असंगत प्रकार प्रयोग गर्दा चेतावनीहरू उत्पन्न हुन सक्छ। यो लचिलोपनले तपाईंलाई तपाईंको परियोजना वा टिमको नीतिहरूअनुसार टाइपिङ अभ्यास अपनाउन अनुमति दिन्छ।

Q5. पायथनमा टाइप एनोटेशन कहिले प्रयोग गर्नु पर्छ?
टाइप एनोटेशनहरू आवश्यक छैनन्, तर तिनीहरू विशेष गरी तलका केसहरूमा उपयोगी हुन्छन्।

  • ठूला परियोजनाहरू : जब विकासमा धेरै व्यक्तिहरू संलग्न हुन्छन् वा कोड मर्मत आवश्यक हुन्छ, टाइप एनोटेशनहरूले कोड बुझ्न मद्दत गर्छ।
  • फङ्सन इन्टरफेस डिजाइन : अपेक्षित आर्गुमेन्टहरू र रिटर्न मानहरू स्पष्ट रूपमा निर्दिष्ट गरेर, प्रयोगकर्ताहरूले फङ्सनलाई सही तरिकाले प्रयोग गर्न सक्छन्।
  • दीर्घकालीन मर्मत आवश्यक कोड : प्रकारको जानकारीले कोड मर्मत गर्दा परिवर्तनको दायरा बुझ्न सजिलो बनाउँछ।

9. टाइप एनोटेशनका व्यावहारिक प्रयोग केसहरू

यहाँ हामी टाइप एनोटेशनका व्यावहारिक उदाहरणहरू प्रस्तुत गर्छौं। हाम्रा concrete परिस्थितिहरूमा टाइप हिंटहरू कसरि उपयोगी हुन सक्छन् हेर्नुहोस्।

डेटा प्रोसेसिङमा प्रयोग केसहरू

उदाहरणका लागि, डेटा‑प्रोसेसिङ फङ्सनहरू बनाउँदा, इनपुट डेटा प्रायः सूची, डिक्शनरी, वा जटिल डेटा संरचना हुन्छ। टाइप एनोटेशन प्रयोग गरेर तपाईं डेटा संरचनालाई स्पष्ट रूपमा व्यक्त गर्न र गलत डेटा चाँडै पत्ता लगाउन सक्नुहुन्छ।

from typing import List, Dict

def process_data(data: List[Dict[str, float]]) -> float:
    total = 0.0
    for item in data:
        total += item["value"]
    return total

# Example usage
data = [{"value": 10.5}, {"value": 20.3}, {"value": 30.0}]
print(process_data(data))  # Correct usage example

यस उदाहरणमा, process_data फङ्सनलाई पास गरिएको data लाई सूचीको रूपमा निर्दिष्ट गरिएको छ जसका तत्वहरू स्ट्रिङ कुञ्जी र फ्लोट मानहरू भएको डिक्शनरी हुन्। यसले कोड मात्र पढेर डेटा संरचना स्पष्ट बनाउँछ।

क्लास डिजाइनमा प्रयोग केसहरू

टाइप हिंटहरू क्लास डिजाइनमा पनि प्रभावकारी हुन्छन्। क्लासका एट्रिब्युटहरूमा टाइप हिंटहरू प्रयोग गरेर, तपाईं क्लासको संरचना सजिलै बुझ्न सक्नुहुन्छ र इन्स्ट्यान्स बनाउँदा गलत डेटा पास हुनबाट रोक्न सक्नुहुन्छ।

class Product:
    def __init__(self, name: str, price: float, in_stock: bool):
        self.name: str = name
        self.price: float = price
        self.in_stock: bool = in_stock

    def update_stock(self, amount: int) -> None:
        self.in_stock = amount > 0

यस उदाहरणमा, Product क्लासमा name, price, र in_stock जस्ता एट्रिब्युटहरू छन्, जहाँ प्रत्येक डेटा प्रकार स्पष्ट रूपमा निर्दिष्ट गरिएको छ। यी टाइप एनोटेशनहरूले update_stock मेथडका आर्गुमेन्टहरूका लागि पनि स्पष्ट प्रकारहरू आवश्यक पर्छ।

年収訴求