Python之类方法,lambda,闭包简谈
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python之类方法,lambda,闭包简谈,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2283字,纯文字阅读大概需要4分钟。
内容图文
![Python之类方法,lambda,闭包简谈](/upload/InfoBanner/zyjiaocheng/842/908df88f718f48819fc4284944151b1c.jpg)
类方法,lambda,闭包
类方法
类方法
类方法,通过装饰器@classmethod
来标明,可以通过实例对象或类对象直接调用的方法。
class MyClass(object):
def __init__(self):
pass
def imethod(self):
pass
@classmethod
def cmethod(cls):
pass
__init__
方法是实例方法,其只在实例化对象的时候才会调用。而类方法cmethod()
则是在实例对象时可以调用,直接用类调用也可以调用。
m = MyClass() # __init__ 初始化方法调用
MyClass.cmethod() # 通过类即可调用 类方法
m.cmethod() # 实例对象也可以调用 类方法
m.imethod() # 实例方法仅能对象实例对象调用
实例方法
实例方法相比于类方法,因为其仅能在通过实例对象来调用,无法直接通过类对象调用,即不加@classmethod
和@staticmethod
的方法
class Myclass(object):
def __init__(self):
pass
def test1(self):
pass
def test2(self):
pass
上面demo中__init__
、test1
、test2
都是实例方法,仅能通过实例对象来调用
静态方法
静态方法如同普通的函数,其调用可以直接通过类、实例对象来调用,不可以直接调用,即直接使用方法名来调用是不可以的。
# coding: utf-8
class MyClass(object):
def __init__(self):
pass
@staticmethod
def smethod1():
pass
def test():
self.smethod1()
if __name__ == '__main__':
MyClass.smethod1() # 通过类对象来调用
m = MyClass()
m.smethod1() # 通过实例对象来调用
m.test() # 另一种通过实例对象来调用静态方法
类方法,实例方法和静态方法的调用区别
- 类方法:通过 实例对象和类调用
- 实例方法: 仅能通过实例对象调用
- 静态方法:通过类或实例对象调用,不可以直接调用
lambda
from functools import reduce
def myadd(x, y):
return x+y
mlist = list(map(lambda x: x**2, [i for i in range(20)]))
flist = list(filter(lambda x: (x%3) == 0, [i for i in range(20)]))
r = reduce(myadd, [i for i in range(20)])
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]
print(mlist)
# [0, 3, 6, 9, 12, 15, 18]
print(flist)
# 190
print(r)
lambda
匿名函数,其短小精悍,现写现用,不用另外编写一个函数。如上所示
map
返回是一个迭代器,list
负责将生成器转变为列表
filter
返回的是一个生成迭代器,其将函数里荷合条件的数据拿出来,换成map
执行以上代码,将返回bool
值
reduce
返回也是一个迭代器,在这个例子中,数据在myadd
不断迭代相加,得到数值190
。python2
是可以直接使用,python3
其在functools
中。
闭包
理解:后面会补充
参考资料
# coding: utf-8
def close(mss):
def hello(name):
print(mss, name)
return hello
h = close("你好!")
h("小伟")
h("小小伟")
"""
你好! 小伟
你好! 小小伟
"""
内容总结
以上是互联网集市为您收集整理的Python之类方法,lambda,闭包简谈全部内容,希望文章能够帮你解决Python之类方法,lambda,闭包简谈所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。