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

函数

  函数是封装了一些独立的功能,可以直接调用,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博主的文章

转载于:https://www.cnblogs.com/nimo97/p/9723526.html

python基础学习——函数和方法的区别与联系相关推荐

  1. python函数和方法概念_python基础学习——函数和方法的区别与联系

    以下是综合多家说法的个人理解总结,仅为做到理解它们的区别与联系,不保证严谨. 函数 函数是封装了一些独立的功能,可以直接调用,python内置了许多函数,同时可以自建函数来使用. 独立的函数是函数(像 ...

  2. python中函数和方法的区别

    本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别: 首先,从分类的角度来分析. (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函 ...

  3. Python基础学习-方法

    Python基础学习-方法 方法的重载 方法的动态性 私有属性和私有方法(实现封装) 私有方法 @property装饰器 面向对象的三大特征介绍 继承 语法格式 类成员的继承和重写 查看类的继承层次结 ...

  4. Python基础学习-Python中最常见括号()、[]、{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho

    Python基础学习-Python中最常见括号().[].{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho ...

  5. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  6. python | 基础学习(一)了解Bug、pycharm、变量、程序的三大流程(顺序、if、while)、运算符、快捷键

    文章目录 一.引言 1.python的起源 2.解释器 3.python的设计目标 4.python的特点 二.python 1.了解BUG 2.python的三种运行方式 ①解释器python/py ...

  7. Python 基础学习笔记 03

    Python基础系列 Python 基础学习笔记 01 Python 基础学习笔记 02 Python 基础学习笔记 03 Python 基础学习笔记 04 Python 基础学习笔记 05 文章目录 ...

  8. 8.Python基础学习笔记day8-正则表达式、网络编程、进程与线程

    8.Python基础学习笔记day8-正则表达式.网络编程.进程与线程 一.正则表达式 ''' 1. [1,2,3,4]中任意取3个元素排列: A43 = 4x3x2 = 24itertools.pe ...

  9. python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识

    1.1Python的对象 python的内置对象类型有很多,包括数字,字符串,列表,集合,元组,字典等等,在Python中,一切皆对象 pickle腌制--在Python中,如果有一些对象需要持久性存 ...

最新文章

  1. loadrunner基础知识问答(转)
  2. Spring注解编程基石(二)
  3. html5贝塞尔,使用HTML5画布绘制贝塞尔曲线
  4. 胶囊网络与计算机视觉教程 @CVPR 2019
  5. jquery animate自定义动画
  6. Launcher3桌面Icon的文字size的 修改
  7. 中国捆矛行业市场供需与战略研究报告
  8. Wannafly挑战赛19:B. 矩阵(单调栈)
  9. 转载:面向站长和网站管理员的Web缓存加速指南
  10. checkbox全选
  11. Request的getParameter和getAttribute方法的区别
  12. 实习成长之路: 重新认识IOC,你可能对IoC有些误会?
  13. java 8 64_java8离线安装包64位
  14. 速存,懒人福音!联想修复工具大全 Lenovo Quick Fix 联想智能解决工具
  15. 在虚拟机centos7中使用docker安装nginx后,本地浏览器无法访问?
  16. 各个地区2.4G及5G信道一览表
  17. ubuntu安装firefox flash插件
  18. Qt编写安防视频监控系统53-串口配置
  19. echarts世界地图
  20. 虚拟服务器不能打字,光遇修理服务器,玩家无法打字聊天,如何用“光语”说我爱你?...

热门文章

  1. 陶哲轩实分析 命题 8.2.6 证明
  2. OSChina_IOS版客户端笔记(四)_程序数据、缓存的管理
  3. 复方丙酸氯倍他索软膏購買技巧
  4. ubuntu18.10下面安装nodejs和npm和cnpm
  5. torchvision中Transform的normalize
  6. 地址已经被使用——Address already in use(来自《后台开发:核心技术于应用实践》)
  7. opengl glad.h和 glu.h
  8. elisa标准曲线怎么做_如何合理绘制ELISA标准曲线要点
  9. java.lang.ExceptionInInitializerError的原因
  10. Centos7下python2.x 和python3.x共存