zoukankan      html  css  js  c++  java
  • Python3基础 yield send 变量名= yield i

    •        Python : 3.7.3
    •          OS : Ubuntu 18.04.2 LTS
    •         IDE : pycharm-community-2019.1.3
    •       Conda : 4.7.5
    •    typesetting : Markdown

    code

    """
    @Author : 行初心
    @Date   : 2019/7/6
    @Blog   : www.cnblogs.com/xingchuxin
    @Gitee  : gitee.com/zhichengjiu
    """
    
    
    def yield_test():
        # next() 遇到yield会停止,保存数据并返回后面的数值
        a = 1
        send_value = yield a
        print(send_value)
    
        a += 1
        send_value = yield a
        print(send_value)
    
        a += 1
        send_value = yield a
        print(send_value)
    
        a += 1
        send_value = yield a
        print(send_value)
    
        a += 1
        send_value = yield a
        print(send_value)
    
    
    def main():
        generator = yield_test()
    
        # print后面的 
     可加的有意义
        # 想理解好 send 的功能,建议使用 Debug - Step Into(F7)。一步一步地跟下来
        print(generator.__next__(), "
    ")
    
        # send(None) <-> __next__()
        print(generator.send(None), "
    ")
        print(generator.__next__(), "
    ")
    
        # 主要看,send 传值啦
        print(generator.send("pythoneer"), "
    ")
        print(generator.send("hello world"), "
    ")
    
    
    if __name__ == '__main__':
        main()
    
    

    result

    /home/coder/anaconda3/envs/py37/bin/python /home/coder/PycharmProjects/NumericalComputation/demo.py
    1 
    
    None
    2 
    
    None
    3 
    
    pythoneer
    4 
    
    hello world
    5 
    
    
    Process finished with exit code 0
    
    

    source_code

    class Generator(Iterator[_T_co], Generic[_T_co, _T_contra, _V_co]):
        @abstractmethod
        def __next__(self) -> _T_co: ...
    
        @abstractmethod
        def send(self, value: _T_contra) -> _T_co: ...
    
        @abstractmethod
        def throw(self, typ: Type[BaseException], val: Optional[BaseException] = ...,
                  tb: Optional[TracebackType] = ...) -> _T_co: ...
    
        @abstractmethod
        def close(self) -> None: ...
    
        @abstractmethod
        def __iter__(self) -> Generator[_T_co, _T_contra, _V_co]: ...
    
        @property
        def gi_code(self) -> CodeType: ...
        @property
        def gi_frame(self) -> FrameType: ...
        @property
        def gi_running(self) -> bool: ...
        @property
        def gi_yieldfrom(self) -> Optional[Generator]: ...
    

    resource

    • [文档 - English] docs.python.org/3
    • [文档 - 中文] docs.python.org/zh-cn/3
    • [规范] www.python.org/dev/peps/pep-0008
    • [规范] zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_language_rules
    • [源码] www.python.org/downloads/source
    • [ PEP ] www.python.org/dev/peps
    • [平台] www.cnblogs.com
    • [平台] gitee.com


    Python具有开源、跨平台、解释型、交互式等特性,值得学习。
    Python的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。
    代码的书写要遵守规范,这样有助于沟通和理解。
    每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。

  • 相关阅读:
    MVC ORM 架构
    Kubernetes 第八章 Pod 控制器
    Kubernetes 第七章 Configure Liveness and Readiness Probes
    Kubernetes 第六章 pod 资源对象
    Kubernetes 第五章 YAML
    Kubernetes 核心组件
    Kubernetes 架构原理
    Kubernetes 第四章 kubectl
    Kubernetes 第三章 kubeadm
    yum 配置及yum 源配置
  • 原文地址:https://www.cnblogs.com/xingchuxin/p/11142677.html
Copyright © 2011-2022 走看看