Python3基础 函数 无return、return 空或None 的效果相同

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

code

coder@ubuntu:~$ source activate py37
(py37) coder@ubuntu:~$ ipython
Python 3.7.3 (default, Mar 27 2019, 22:11:17)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: def fun_no_return():
   ...:     pass
   ...:

In [2]: def fun_return_none():
   ...:     return None
   ...:

In [3]: def fun_return_empty():
   ...:     return
   ...:

In [4]: import dis

In [5]: dis.dis(fun_no_return)
  2           0 LOAD_CONST               0 (None)
              2 RETURN_VALUE

In [6]: dis.dis(fun_return_empty)
  2           0 LOAD_CONST               0 (None)
              2 RETURN_VALUE

In [7]: dis.dis(fun_return_none)
  2           0 LOAD_CONST               0 (None)
              2 RETURN_VALUE

In [8]: exit
(py37) coder@ubuntu:~$ conda deactivate
coder@ubuntu:~$

source_code

def dis(x=None, *, file=None, depth=None):
    """Disassemble classes, methods, functions, and other compiled objects.

    With no argument, disassemble the last traceback.

    Compiled objects currently include generator objects, async generator
    objects, and coroutine objects, all of which store their code object
    in a special attribute.

"""
    if x is None:
        distb(file=file)
        return
    # Extract functions from methods.

    if hasattr(x, '__func__'):
        x = x.__func__
    # Extract compiled code objects from...

    if hasattr(x, '__code__'):  # ...a function, or
        x = x.__code__
    elif hasattr(x, 'gi_code'):  #...a generator object, or
        x = x.gi_code
    elif hasattr(x, 'ag_code'):  #...an asynchronous generator object, or
        x = x.ag_code
    elif hasattr(x, 'cr_code'):  #...a coroutine.

        x = x.cr_code
    # Perform the disassembly.

    if hasattr(x, '__dict__'):  # Class or module
        items = sorted(x.__dict__.items())
        for name, x1 in items:
            if isinstance(x1, _have_code):
                print("Disassembly of %s:" % name, file=file)
                try:
                    dis(x1, file=file, depth=depth)
                except TypeError as msg:
                    print("Sorry:", msg, file=file)
                print(file=file)
    elif hasattr(x, 'co_code'): # Code object
        _disassemble_recursive(x, file=file, depth=depth)
    elif isinstance(x, (bytes, bytearray)): # Raw bytecode
        _disassemble_bytes(x, file=file)
    elif isinstance(x, str):    # Source code
        _disassemble_str(x, file=file, depth=depth)
    else:
        raise TypeError("don't know how to disassemble %s objects" %
                        type(x).__name__)

reference

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的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。
代码的书写要遵守规范,这样有助于沟通和理解。
每种语言都有自己独特的思维,初学者需要转变思维、练习思维、坚持积累。

[En]

Each language has its own unique thinking, and beginners need to change their thinking, practice it and persist in accumulation.

Original: https://www.cnblogs.com/xingchuxin/p/11142066.html
Author: 行初心
Title: Python3基础 函数 无return、return 空或None 的效果相同

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/9987/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部