作家
登录

Python中的函数与方法 以及Bound Method和Unbound Method

作者: 来源: 2017-05-15 15:07:28 阅读 我要评论

  •              45 LOAD_ATTR                3 (f) 
  •              48 CALL_FUNCTION            0 
  •              51 PRINT_ITEM           
  •              52 PRINT_NEWLINE       
  •              53 LOAD_CONST               2 (None) 
  •              56 RETURN_VALUE  
  • 函数与办法的差别

    跟着我们越来越频繁应用Python, 我们不免会接触到类, 接触到类属性和办法.然则很多新手包含我, 不知道办法 和 函数 的差别,此次简单来评论辩论下, 如不雅有哪里熟悉不精确, 欲望大年夜神提点指教!

    先来看两个定义吧:

    function(函数) —— A series of statements which returns some value toa caller. It can also be passed zero or more arguments which may beused in the execution of the body.

    method(办法) —— A function which is defined inside a class body. Ifcalled as an attribute of an instance of that class, the methodwill get the instance object as its first argument (which isusually called self).

    dis输出解释: 第一列是代码的函数, 第二列是指令的偏移量, 第三列是可视化指令, 第四列是参数, 第五列是指令根据参数计算或者查找的结不雅

    大年夜膳绫擎可以看出, 其余编程说话一样, Function也是包含一个函数头和一个函数体, 也同样支撑0到n个形参,而Method则是在function的基本上, 多了一层类的关系, 正因为这一层类, 所以区分了function 和 method.而这个过程是经由过程 PyMethod_New实现的

    1. PyObject * 
    2. PyMethod_New(PyObject *func, PyObject *self, PyObject *klass) 
    3.     register PyMethodObject *im;   // 定义办法构造体 
    4.     im = free_list; 
    5.     if (im != NULL) { 
    6.         free_list = (PyMethodObject *)(im->im_self); 
    7.         PyObject_INIT(im, &PyMethod_Type);  // 初始化 
    8.         numfree--; 
    9.     } 
    10.     else { 
    11.         im = PyObject_GC_New(PyMethodObject, &PyMethod_Type); 
    12.         if (im == NULL
    13.             return NULL
    14.     } 
    15.     im->im_weakreflist = NULL
    16.     Py_INCREF(func); 
    17.      
    18.     /* 往下开端经由过程 func 设备 method*/ 
    19.     im->im_func = func; 
    20.     Py_XINCREF(self); 
    21.     im->im_self = self; 
    22.     Py_XINCREF(klass); 
    23.     im->im_class = klass; 
    24.     _PyObject_GC_TRACK(im); 
    25.     return

        推荐阅读

        “视”创未来,首届家庭实时视频产业联盟论坛呼吁共建产业生态

      5月11日下昼,以“视”创将来为主题的首届家庭及时视频家当联盟论坛在深圳福田隆重召开。华为云核心>>>详细阅读


      本文标题:Python中的函数与方法 以及Bound Method和Unbound Method

      地址:http://www.17bianji.com/lsqh/35218.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)