2016-05-23 7 views
16

मैं अपने पायथन प्रोग्राम में टाइप संकेतों का उपयोग करना चाहता हूं। मैं तार मैं एक प्रकार का संकेत कैसे बना सकता हूं कि मेरी लौटाई गई सूची में तार हैं?

  • पूर्णांकों लौटने एक जनरेटर के साथ

    • सूचियों की तरह जटिल डेटा संरचनाओं के लिए प्रकार संकेत कैसे बना सकते हैं?

    उदाहरण

    def names() -> list: 
        # I would like to specify that the list contains strings? 
        return ['Amelie', 'John', 'Carmen'] 
    
    def numbers(): 
        # Which type should I specify for `numbers()`? 
        for num in range(100): 
         yield num  
    
  • उत्तर

    19

    typing module का उपयोग करें; यह प्रकार वस्तुओं आप उनकी सामग्री पर बाधाओं के साथ कंटेनर निर्दिष्ट करने के लिए उपयोग कर सकते हैं जेनरिक होता है,: कैसे आप अपने कोड के लिए डिजाइन और कैसे आप names() की वापसी मान का उपयोग करना चाहते पर निर्भर करता है

    import typing 
    
    def names() -> typing.List[str]: # list object with strings 
        return ['Amelie', 'John', 'Carmen'] 
    
    def numbers() -> typing.Iterator[int]: # iterator yielding integers 
        for num in range(100): 
         yield num 
    

    , आप भी इस्तेमाल कर सकते हैं गीलेर के आधार पर types.Sequence और types.MutableSequence प्रकार यहां हैं, न कि आप परिणाम को म्यूटेट करने में सक्षम होने की उम्मीद करते हैं।

    एक जनरेटर इटरेटर का एक विशिष्ट प्रकार है, इसलिए typing.Iterator यहां उचित है। अपने जनरेटर भी send() मान स्वीकार करता है और return का उपयोग करता है एक StopIteration मान सेट करने हैं, तो आप typing.Generator object भी उपयोग कर सकते हैं:

    def filtered_numbers(filter) -> typing.Generator[int, int, float]: 
        # contrived generator that filters numbers; returns percentage filtered. 
        # first send a limit! 
        matched = 0 
        limit = yield 
        yield # one more yield to pause after sending 
        for num in range(limit): 
         if filter(num): 
          yield num 
          matched += 1 
        return (matched/limit) * 100 
    

    यदि आप इशारा टाइप करने के लिए नए हैं, तो PEP 483 – The Theory of Type Hints सहायक हो सकता है।

    संबंधित मुद्दे

     संबंधित मुद्दे