Python的函数和方法如何区分呢?
结论>>>:无论是函数还是方法都用def关键字来定义
方法:只要是自动传值都是方法、由谁来调用、会把自身传入
函数:有几个值就传几个值否则会报错
一、详细介绍函数和方法
1. 函数
Python中的函数其实就是我们没有学面向对象编程之前一直在用的编程思想
有几个参数就要传几个参数,否则会报错
2. 方法
绑定给类的方法:对象可以调用,会自动把类传入
绑定给对象的方法:类可调用但是会变成普通函数
二、用几个关键字来判断
MethodType # 判断检查对象是不是方法
FunctionType # 判断检查对象是不是函数
isinstance # 判断检查对象是不是一个类的对象
issubclass # 判断检查对象是不是另一个类的子类
三、通过代码小案例验证
from types import MethodType, FunctionType
# 名字为Foo的类
class Foo(object):
# 绑定给对象的方法
def fetch(self):
pass
# 绑定给类的方法
@classmethod
def test(cls):
pass
# 绑定给类的静态方法
@staticmethod
def test1():
pass
# 类名加括号实例化对象
obj = Foo()
# 普通函数
def add():
pass
print(isinstance(Foo.fetch, MethodType)) # False 类来调用对象的绑定方法,该方法就变成了普通函数
print(isinstance(obj.fetch, MethodType)) # True 对象来调用自己的绑定方法,fetch就是方法
print(isinstance(Foo.fetch, FunctionType)) # True 类来调用对象的绑定方法,该方法就变成了普通函数
print(isinstance(add, FunctionType)) # True 就是个普通函数
print(isinstance(add, MethodType)) # False 就是个普通函数
print(isinstance(Foo.test, MethodType)) # True test 是绑定给类的方法,类来调用,就是方法
print(isinstance(obj.test, MethodType)) # True 对象调用类的绑定方法,还是方法
print(isinstance(Foo.test1, MethodType)) # False 是普通函数
print(isinstance(obj.test1, MethodType)) # False 是普通函数
print(isinstance(obj.test1, FunctionType)) # True 静态方法,就是普通函数,对象和类都可以调用,有几个值就传几个值
Python的函数和方法如何区分呢?的更多相关文章
- python requests函数封装方法
python requests函数封装方法 上代码 import requests import json """ 封装request请求, 1.post:my_pos ...
- python基础函数、方法
python的函数和方法,通过def 定义: 函数的特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 函数和方法的区别:函数有返回值.方法没有 语法定义: def sayhi():#函数名 p ...
- Python列表函数和方法
Python列表函数和方法: 函数: len(列表名): 返回列表长度 # len(列表名): # 返回列表长度 lst = [1,2,3,'a','b','c'] print("lst 列 ...
- python常用函数和方法 - 备忘
语法语句篇 除法运算(精确运算和截断运算) 在python2中,除法运算通常是截断除法.什么是截断除法: >>> 3/4 0 # 自动忽略小数项 要是想 得到正确结果 怎么办呢? m ...
- python中函数与方法的区别
在python中,其实函数和方法的区别取决于其调用者,在普通的函数定义中就叫做函数 例如: def func(): print('这是一个函数') 而在一个类中定义时,就将其分为两种情况 第一种:被称 ...
- Python | Python常用函数、方法示例总结(API)
目录 前言 1. 运算相关 2. Sring与数字 3. 列表相关 4. 集合相关 5. 序列化类型 6. 字典相关 7. 输入输出 8. 文件相关 9. json模块 10. unittest测试模 ...
- Python中函数和方法的区别
方法是一种特殊的函数属于某个类的的函数叫方法不属于某个类的函数叫函数 转自csdn https://blog.csdn.net/weixin_40380298/article/details/7825 ...
- Python 中函数和方法
函数与方法 class Foo(object): def __init__(self): self.name = 'lcg' def func(self): print(self.name) obj ...
- Python常用函数、方法、模块记录
常用函数: 1.pow():乘方 2.abs():绝对值 3.round():四舍五入 4.int():转换为整数 5.input():键盘输入(会根据用户的输入来做类型的转换) raw_input( ...
- python中函数和方法区别,以及如何给python类动态绑定方法和属性(涉及types.MethodType()和__slots__)
网上有很多同义但不同方式的说法,下面的这个说法比较让你容易理解和接受 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(meth ...
随机推荐
- 项目:口令保管箱,批处理文件配置.bat
#! python3 import sys import pyperclip PASSWORDS = {'email': 'F7minlBDDuvMJuxESSKHFhTxFtjVB6', 'blog ...
- Linux 中最常用 150 个命令汇总
- django_应用及分布式路由
一.应用的定义 1.应用在Django中是一个独立的业务模块,可以包含自己的路由.视图.模板.模型. 例如如下图所示,一个资讯类网站中会有不同的模块,如果所有的模块共用一个views.py文件,则会导 ...
- nodejs mongo数据库连接、查询、显示
初学nodejs,涉及内容太多,总找不到如何能处理数据之间的交换.提取,显示.查找众多资料,终于调试成功,为免遗忘,特记录如下: 安装nodejs,mongo数据库在这里不做记录了. 1.编写serv ...
- CentOS DNS 安裝步驟
yum install bind bind-utils bind-devel bind-chroot [root@nw-centos-dns-01 ~]# rpm -qa | grep bind bi ...
- 使用EFCode First模式
1.添加EntityFrameworkCoreg和EntityFrameworkCore.Design这两个包 2.添加EF上下文类 例如下图如下: 1 using EntityModel; 2 us ...
- 1.HTML中的标签
1.HTML的基础标签 <!-- --> 表示注释 1) html语言是解释型语言,不是编译型 浏览器是容错的2) html页面中由一对标签组成:<html> ...
- Apache Ranger系列六:Submarine Spark Security Plugin安装(0.6.0版本)
参考 https://submarine.apache.org/zh-cn/docs/0.6.0/userDocs/submarine-security/spark-security/ 从ranger ...
- unity 开发小技巧之C#篇 ----持续更新
1.ToString()方法是可以重写的 2.Start()方法可以主动调用 3.接口可以直接使用 jiekou?.Invoke() 来调用所有继承该接口的方法 4.Json 列表和服务器需要的数据不 ...
- Adams:导出动画
1 首先模型在adams里能正常运动,点击start simulation仿真一遍. 2 然后在界面上按F8进入Plotting界面. 3 在左上角把Plotting换成Animation. 4 然后 ...