![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
解忧杂货铺-程序员分店
这个作者很懒,什么都没留下…
展开
-
python 迭代时删除列表元素
错误的删除方式del var_namelist_a = [1, 2, 3, 4]for index, item in enumerate(list_a): del itemprint(list_a) # [1, 2, 3, 4]del删除的只是变量,而不是数据,因此数组list_a内容不变remove & poplist_a = [1, 2, 3, 4]for index, item in enumerate(list_a): list_a.remov原创 2020-07-02 21:51:46 · 3199 阅读 · 0 评论 -
python del释放内存
说明del语句作用在变量上,而不是数据对象上del删除的是变量,而不是数据__del__是个特殊方法,它不会销毁实例无论手动del还是等Python自动GC,都会调用到__del__例子class A: def __init__(self): print("__init__() ") def __del__(self): print("__del__()")a = A()b = adel aprint("***********")原创 2020-07-01 22:34:30 · 3200 阅读 · 1 评论 -
python 子类关系
说明python为所有类提供一个__bases__属性,通过该属性可以查看该类的所有直接父类,该属性返回所有直接父类组成的元组python为所有类提供了一个__subclasses__()方法,通过该方法可以查看该类的所有直接子类,该方法返回该类的所有子类组成的列表子类继承父类的私有方法重写无效,公有方法可以重写,引用父类方法可用super()实现来个特别的例子from collections import Hashableprint(issubclass(list, object))原创 2020-06-30 22:22:40 · 197 阅读 · 0 评论 -
python tuple和list区别
说明list和tuple是一种有序的集合list可以随意添加和删除元素,tuple一旦初始化就不能修改对于tuple, 如果对象包含对其他对象的引用,则这些其他对象可能是可变的并且可能会被修改; 但是,由不可变对象直接引用的对象集合不能更改tuple是静态的固定大小的,而list是动态分配存储空间,自动扩容的a_tuple = ("apple", "pear", "banana")b_tuple = ([1, 2], [3, 4], [5, 6])a_tuple[1] = 'purpos原创 2020-06-29 22:19:21 · 355 阅读 · 0 评论 -
python 类属性和实例属性
说明类属性是类所特有的,所有实例共享这个类属性,类属性经常定义在类的开头,方法的外面实例属性是一个类的实例所特有的,定义在__init__()里面来一个栗子Aclass A: x = 1 #类属性class B(A): passclass C(A): passB.x = 2A.x = 3print(A.x, B.x, C.x)#3 2 3为什么C.x=3, 而不是等于1?类变量和实例变量在内部是通过类对象的字典( __dict__ 属性)原创 2020-06-22 22:29:55 · 143 阅读 · 0 评论 -
python bool布尔值你不知道的事!
看个栗子先mixed_list = [False, 1, 3, True, 5]integer_sum = 0bool_sum = 0for item in mixed_list: if isinstance(item, int): integer_sum += 1 elif isinstance(item, bool): bool_sum += 1print(integer_sum) # 5print(bool_sum) # 0为什原创 2020-06-22 21:26:39 · 292 阅读 · 0 评论 -
python 闭包,你必须知道的坑!
funcs = []result_list = []for x in range(3): def do_some(): return x funcs.append(do_some) result_list.append(do_some()) # 注意这里函数被执行了funcs_result_list = [func() for func in funcs]很多人以为result_list和funcs_result_list的结果是一样的,都是[0, 1,原创 2020-06-21 23:00:16 · 308 阅读 · 0 评论 -
python is 和 == 区别
直接上个栗子>>>a = 256>>>b = 256>>>a is b True >>>a == bTrue>>>a=257>>>b=257>>>a is bFalse>>>a == bTrue两次执行结果,为什么不相同?is 运算符检查两个运算对象是否引用自同一对象 (即, 它检查两个对象的内存地址是否相同).== 运算符比较两原创 2020-06-21 21:54:58 · 137 阅读 · 0 评论 -
python for in循环踩坑录
坑 A首先来个例子a = [2, 5, 7]b = (x for x in a if a.count(x) > 0)print(list(b))#[2, 5, 7]改动一下,加一行代码a = [2, 8, 9]a = [2, 5, 7]b = (x for x in a if a.count(x) > 0)a = [2, 8, 9]print(list(b))#[2] 为什么两次执行结果不一样?在生成器表达式中, in 子句在声明时执行, 而条件子句则是在原创 2020-06-20 22:57:44 · 575 阅读 · 0 评论 -
python id()和 is 大揭秘
说明id(object)具有不重叠生命周期的两个对象可能具有相同的id不重叠的生命周期: 当对象被创建时,python内部机制会为其分配内存空间。如果在对象占用内存期间,创建另一个对象,系统又会为新的对象分配新的内存空间,那么它们的生命周期就是重叠的(因为同一时间里它们都占用着内存空间——占用内存的时间即为生命周期)x is y: 当且仅当x和y是同一对象时才为true 。使用该功能确定对象的身份id(object) 和is 比较的都是内存地址实例 aclass A: pass原创 2020-06-20 00:51:44 · 228 阅读 · 0 评论 -
python try catch finally原来是这样的?!
函数的返回值由最后执行的 return 语句决定. 由于 finally 子句一定会执行, 所以 finally 子句中的 return 将始终是最后执行的语句 ''' 1.try块中包含break、continue或者return语句的,在离开try块之前,finally中的语句也会被执行 2. 实际应用中,不推荐在finally中使用return返回 3. 由于finally无论如何都会被执行, 一般用来做一些资源释放操作 ''' def func(): try:原创 2020-06-19 22:51:41 · 597 阅读 · 0 评论 -
python标准库: hash(object)
说明Python 字典通过检查键值是否相等和比较哈希值来确定两个键是否相同.具有相同值的不可变对象在Python中始终具有相同的哈希值具有不同值的对象也可能具有相同的哈希值(哈希冲突).'''相同的数值,不同类型,哈希值是一样的, 所以a[5.0]会覆盖a[5]'''a = {}a[5] = 'java'a[2] = 'js'a[5.0] = 'python'print(a[5]) # python...原创 2020-06-19 22:35:33 · 215 阅读 · 0 评论 -
python 定时任务APScheduler
APScheduler四个组件triggers触发器包含调度逻辑,每一个job有它自己的触发器,用于决定job下一次运行时间。除了初始配置外,触发器完全是无状态的。job stores作业存储存储被调度的job,默认的job存储是简单地把job存储在内存中,其他的job存储是保存在数据库中。Job的数据在保存到持久化存储时被序列化,并在加载时进行反序列化。job存储(默认存储除外)不将job数据保存在内存中,而是充当后台保存、加载、更新和搜索job的中间人。job存储永远不能在调度程序之间共享。.原创 2020-06-10 14:10:05 · 572 阅读 · 0 评论 -
python list排序详解
说明对List进行排序,Python提供了两个方法: list.sort() 和sorted(list)sorted(list)返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。list.sort() 不会返回对象,改变原有的list用List的内建函数list.sort进行排序sort(self, key=None, reverse=False)reverse: True 倒叙排序普通数组排序my_list = [1, 2, 5, 6, 3]my原创 2020-06-12 21:42:37 · 204 阅读 · 0 评论 -
Python 类反射机制,类名路径实例化对象
说明反射就是通过字符串的形式,导入模块;通过字符串的形式,去模块寻找指定函数,并执行。利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动。反射功能的实现,由这4个内置函数来实现(hasattr, getattr, setattr, delattr)。函数名说明getattr(object, attr[, default])获取指定字符串名称的对象属性或方法,如果对象有该属性则返回属性值,如果有该方法则返回该方法的内存地址hasatt原创 2020-06-15 17:43:56 · 1656 阅读 · 0 评论 -
python 字符串的驻留机制
说明字符串驻留是一种仅保存一份相同且不可变字符串的方法。不同的值被存放在字符串驻留池中,发生驻留之后, 许多变量可能指向内存中的相同字符串对象, 从而节省内存.原理系统维护interned字典,记录已被驻留的字符串对象当字符串对象a需要驻留时,先在interned检测是否存在,若存在则指向存在的字符串对象,a的引用计数减1若不存在,则记录a到interned中驻留时机所有长度为 0 和长度为 1 的字符串都被驻留字符串只在编译时进行驻留,而非运行时a = 'hi' # a变量被原创 2020-06-18 23:34:22 · 375 阅读 · 0 评论