zoukankan      html  css  js  c++  java
  • python基础学习——函数和方法的区别与联系

    以下是综合多家说法的个人理解总结,仅为做到理解它们的区别与联系,不保证严谨

    函数

      函数是封装了一些独立的功能,可以直接调用,python内置了许多函数,同时可以自建函数来使用。

      独立的函数是函数(像 python3 里print()),类里封装的一些可被直接使用或是被类直接调用的都可以叫做函数(如os.path.join(path, paths))。

    方法

      方法是对象可调用的函数。

    联系

      方法是与对象紧密相连的函数。通常像下面这样调用:

      object.method(arguments)

      所以,函数在面向不同角色的时候只是发生了身份的转变,这对实现它的功能并没什么影响。

    用 python 内置函数验证:

    In [6]: from types import FunctionType, MethodType

    In [7]: class Foo(object):
    ...: def func(self):
    ...: pass

    In [8]: obj = Foo()

    In [9]: obj.func()

    In [11]: Foo.func(123)

    In [12]: print(isinstance(obj.func,MethodType))
    True

    In [13]: print(isinstance(Foo.func,FunctionType))
    True

    或者用下面的方法验证

      In [21]: type(obj.func)
      Out[21]: method

      In [22]: type(Foo.func)
      Out[22]: function

    上面的例子很清晰的反映了函数与方法的区别与联系。

    补充一个概念,方便自己温故。

    关键字

      关键字是python内置的,具有特殊意义的标识符,自定义标识符命名时不可与之重复。可通过以下代码查看python内置的关键字内容

      import keyword

      In [16]: print(keyword.kwlist)
      ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 
      'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return',
      'try', 'while', 'with', 'yield']

    PS:

    验证函数和方法举例的时候,我使用类调用内置方法(这里把类作为函数的对象,所以我称它为内置方法),当未提供参数时,出现如下报错:

    In [10]: Foo.func()
    ---------------------------------------------------------------------------
    TypeError Traceback (most recent call last)
    <ipython-input-10-9c47b1c912d3> in <module>()
    ----> 1 Foo.func()

    TypeError: func() missing 1 required positional argument: 'self'

    这里可引出“静态方法”、“类方法”的概念,我在下一博文中总结了自己的理解。

    本文参考了HYESC博主的文章

  • 相关阅读:
    采用NAND Flash启动时出现Kernel panic not syncing: No init found错误
    ubuntu 11.10 安装小企鹅fcitx输入法
    UBoot中设定的bootdelay参数不起作用
    python 数据类型
    python运算符
    python符号//、%和/运算
    pytho 基本数据类型
    Python 开篇
    mmsplayer v2 java 之(mmsPlayer 播放类)
    mmsplayer v2 java 之(mmsTrack 音频类)
  • 原文地址:https://www.cnblogs.com/nimo97/p/9723526.html
Copyright © 2011-2022 走看看