python函数与方法表,基于Python 函数和方法的区别说明
简单总结:
1、与类和实例无绑定关系的function都属于函数(function);
2、与类和实例有绑定关系的function都属于方法(method)。
首先摒弃错误认知:并不是类中的调用都叫方法
函数(FunctionType)
函数是封装了一些独立的功能,可以直接调用,能将一些数据(参数)传递进去进行处理,然后返回一些数据(返回值),也可以没有返回值。可以直接在模块中进行定义使用。 所有传递给函数的数据都是显式传递的。
方法(MethodType)
方法和函数类似,同样封装了独立的功能,但是方法是只能依靠类或者对象来调用的,表示针对性的操作。
方法中的数据self和cls是隐式传递的,即方法的调用者;
方法可以操作类内部的数据
简单的说,函数在python中独立存在,可直接使用的,而方法是必须被别人调用才能实现的。
静态方法除外(与类和对象均无关,通过类名和对象名均可被调用,属函数)
在模块中实现的函数只要导入这个模块的这个函数既可以任意使用了,但是在类中声明的必须导入这个类之后然后再通过创建实例或者类名来调用。可以说直接在模块中声明的是更普遍广泛性的函数,而在类中声明的方法一般是专属于一类事物特有的
from types import MethodType,FunctionType
class Foo(object):
def __init__(self):
self.name="haiyan"
def func(self):
print(self.name)
obj = Foo()
print(isinstance(obj.func,FunctionType)) #False
print(isinstance(obj.func,MethodType)) #True #说明这是一个方法
print(isinstance(Foo.func,FunctionType)) #True #说明这是一个函数。
print(isinstance(Foo.func,MethodType)) #False
是的!例子中很明确,类对象调用func是方法,类调用func是函数,并且是自己传递参数123!
注意,这只是在 python3 中才有的区分,python2 中全部称为方法。
最大的区别是参数的传递参数,方法是自动传参self,函数是主动传参
那么以后我们就可以直接看参数是如何传递的来判断,
如果还不确定可以打印类型看看
from types import FunctionType,MethodType
print(isinstance(obj.func,MethodType)) ---># True
print(isinstance(Foo.func,FunctionType)) ---># True
表面区别:
区别一所处的位置:函数是直接写文件中而不是class中,方法是只能写在class中。
区别二定义的方式:
1.函数定义的方式 def关键字 然后接函数名 再是括号 括号里面写形参也可以省略不写形参
def functionName():
"""这里是函数的注释"""
print("这一块写函数的内容"
2.方法定义的方式 首先方法是定义在类中的其他他大体和函数定义差不多,这里需要注意的一点就是方法必须带一个默认参数(相当于this),静态方法除外
class className(super):
def methodName(self):
"""这里是方法的注释
self相当于this;
"""
print("这里是方法的内容")
区别三调用的方式:
1.函数的调用:函数的调用是直接写 函数名(函数参数1,函数参数2,......)
def functionName():
print("这是一个函数")
#调用
functionName()
2.方法的调用:方法是通过对象点方法调用的(这里是指对象方法)
class className:
def method(self):
print("这是一个方法")
#调用---------------------
#实例化对象
c=className()
c.method()
python类的实例方法、静态方法和类方法区别及其应用场景
一、先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法。
ps.python中self,cls的区别
普通实例方法,第一个参数需要是self,它表示一个具体的实例本身。
如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用。
而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身。
# coding:utf-8
class Foo(object):
"""类三种方法语法形式"""
def instance_method(self):
print("是类{}的实例方法,只能被实例对象调用".format(Foo))
@staticmethod
def static_method():
print("是静态方法")
@classmethod
def class_method(cls):
print("是类方法")
foo = Foo()
foo.instance_method()
foo.static_method()
foo.class_method()
print('----------------')
Foo.static_method()
Foo.class_method()
运行结果如下
是类的实例方法,只能被实例对象调用
是静态方法
是类方法
----------------
是静态方法
是类方法
说明:
实例方法只能被实例对象调用,静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。
实例方法,第一个参数必须要默认传实例对象,一般习惯用self。
静态方法,参数没有要求。
类方法,第一个参数必须要默认传类,一般习惯用cls。
补充:python方法和函数集锦
方法的使用: 变量.方法名(参数)
函数的使用: 函数名(参数)
字符串
1、删除空白
rstrip(): 返回去掉尾部的空格后的字符串。(不改变原字符串)
lstrip(): 去掉首部空格
strip(): 去掉两端的空格
2、修改字符串大小写
title(): 以首字母大写的方式显示每个单词
upper(): 将字符串转换为全部大写
lower(): 将字符串转换为全部小写
name = "ada lovelace"
print(name.title())
# => Ada Lovelace
print(name.upper())
# => ADA LOVELACE
print(name.lower())
# => ada lovelace
数字、浮点数
1、类型转换
str():将数字类型用作字符串
列表
1、添加元素
append(): 在列表末尾添加元素 insert(index, value): 在列表索引位置添加新元素
2、删除元素
del语句
pop(): 删除列表末尾元素
pop(index): 删除指定索引位置的元素
remove(value): 删除指定值的元素(第一次出现值)
3、排序
列举的方法只适用于所有元素都是小写字母的列表,如果是大写字母和小写字母混合的情况,因为解读大写字母的方式有多种,所以需要进一步指定准确的排列方法才行。
(1) 永久性修改
sort(): 按列表元素首字母排序。(直接修改原列表)
sort(reverse = True): 按列表元素首字母倒序排序。
使用:arr.sort()
(2) 临时排序(返回排序后的列表,不改变原列表)
sorted():按列表元素首字母排序。 sorted(arr, reverse = True): 按列表元素首字母倒序排序使用:sorted(arr)
4、倒着打印列表
reverse()
反转列表元素的顺序,但并不进行排序处理。永久性修改列表元素的排列顺序。但是可再次使用reverse()方法反转恢复
5、确定列表的长度
len(arr)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
python函数与方法表,基于Python 函数和方法的区别说明相关推荐
- 让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud)
让你的作品更出色-- 词云Word Cloud的制作方法(基于python) 本文目录: 一.词云的简介 二. 实现原理和流程 1.制作词云流程图 2.词云实现原理 三. 实现词云的方式 1.安装词云 ...
- python 赋值方法_基于Python List的赋值方法
Python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...
- python服务器稳定性,一种基于Python服务器稳定性测试的方法技术
[技术实现步骤摘要] 本专利技术涉及一种服务器稳定性测试的方法,具体地说是. 技术介绍 随着服务器行业的快速发展,越来越多的客户开始偏向于购买大批量的服务器作为自己的核心应用.所以对服务器的稳定性也提 ...
- python安装pyecharts清华_基于Python安装pyecharts所遇的问题及解决方法
最近学习到数据可视化内容,老师推荐安装pyecharts,于是pip install 了一下,结果...掉坑了,下面是我的跳坑经验,如果你有类似问题,希望对你有所帮助. 第一个坑: 这个不难理解,缺少 ...
- python人脸深度识别_基于Python的深度学习人脸识别方法
基于 Python 的深度学习人脸识别方法 薛同来 ; 赵冬晖 ; 张华方 ; 郭玉 ; 刘旭春 [期刊名称] <工业控制计算机> [年 ( 卷 ), 期] 2019(032)002 [摘 ...
- python os模块安装方法_基于python中pygame模块的Linux下安装过程(详解)
一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...
- python深度神经网络量化_基于Python建立深度神经网络!你学会了嘛?
原标题:基于Python建立深度神经网络!你学会了嘛? 图1 神经网络构造的例子(符号说明:上标[l]表示与第l层:上标(i)表示第i个例子:下标i表示矢量第i项) 单层神经网络 图2 单层神经网络示 ...
- python appium自动化测试框架unittest_Appium基于Python unittest自动化测试 自动化测试框架 -- PO并生成html测试报告...
基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...
- autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术
AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...
最新文章
- 查看python 3.x 关键字 (保留字)(预留字)
- 一个简单的MVC模式练习
- res.status === 200含义
- testflight进行用户的beta测试
- JDBC简单连接MySQL
- 成都至柬埔寨金边定期直飞航线开通
- OpenShift 4 之 GitOps(1)通过OpenShift GitOps Operator安装ArgoCD
- python怎么查看安装了哪些库_如何查看Python 安装位置以及已经安装的库
- 艺术字体图标设计软件Art Text 4 for Mac
- 个人查阅资料-Sql语句
- GB28181协议RTP传输
- 实现国标GB28181视频流媒服务平台EasyGBS-公安部国标35114(GB35114)A级检测说明
- c# RestSharp(http请求)
- 如何使用pyodbc
- 硬盘分区表故障和丢失的原因
- “All in 2B”,信用算力是认真的?
- 网络架构及其演变过程
- 有一个类似”abbc,d d.eeffgg,59.30ABDFR ”这样的包含大小写字母,数字,空格,逗号和句号的字符串,求各字符的数量。(设计一个一个函数,传入字符串,返回各字符数量的数据)
- python爬取网页返回响应中出现百度安全验证的解决办法
- 在一起计时器_设计作品|最佳倒数计时器设计分析「附原型实例」
热门文章
- 独家揭秘!阿里大规模数据中心的性能分析 1
- 浅谈中大型企业CMDB的建设
- 集成 jpush-react-native 常见问题汇总 ( iOS 篇)
- 由设置body线性背景色引发的问题-----当声明文档类型时,对body设置线性背景色,页面背景色无法整体线性过渡...
- MySQL性能优化的最佳21条经验
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- addListener添加事件监听器,第三个参数useCapture (Boolean) 的作用
- Outlook 获取联系人名片对象为空
- arcgis数据文件使用
- POJ-1655 Balancing Act 树的重心