12 2021 档案

摘要:一、问题 创建有额外功能的属性。 二、解决方案 描述器的定义: class Integer: def __init__(self, name): self.name = name def __get__(self, instance, owner): if instance is None: ret 阅读全文
posted @ 2021-12-22 10:00 做梦当财神 阅读(163) 评论(0) 推荐(0) 编辑
摘要:Python proprety() 基础 一、问题 管理对象的属性。 二、解决方案 定义为property。 实例:增加对属性的类型检查。 class Person: def __init__(self, first_name): self._first_name = first_name # Ge 阅读全文
posted @ 2021-12-21 10:11 做梦当财神 阅读(128) 评论(0) 推荐(0) 编辑
摘要:单前导下划线:_var 单末尾下划线:var_ 双前导下划线:__var 双前导和末尾下划线:__var__ 单下划线:_ 文章结尾有”速查表“。 一、单前导下划线_var 以单下划线开头的变量或方法理论上仅供内部使用,执行时不会强制执行。 class Test: def __init__(self 阅读全文
posted @ 2021-12-20 17:20 做梦当财神 阅读(115) 评论(0) 推荐(0) 编辑
摘要:Python format() 基础。 一、问题 通过format()函数和字符串方法使对象能支持自定义的格式化。 二、解决方案 为了自定义字符串的格式化,需要在类上面定义__format__()。 _formats = { 'ymd' : '{d.year}-{d.month}-{d.day}', 阅读全文
posted @ 2021-12-20 12:44 做梦当财神 阅读(64) 评论(0) 推荐(0) 编辑
摘要:一、问题 当代码要创建大量(上百万)对象,导致内存占用很大。 二、解决方案 给类添加__slots__属性减少实例占用内存。 class Date: __slots__ = ['year', 'month', 'day'] def __init__(self, year, month, day): 阅读全文
posted @ 2021-12-17 15:38 做梦当财神 阅读(38) 评论(0) 推荐(0) 编辑
摘要:一、问题 求复杂序列中的最大、最小值。 二、解决问题 operator.itemgetter() 解析 from operator import itemgetter info = [ {'name': 'wangke', 'age': 30, 'weight': 65}, {'name': 'wa 阅读全文
posted @ 2021-12-16 15:45 做梦当财神 阅读(179) 评论(0) 推荐(0) 编辑
摘要:一、问题 求复杂序列中的最大、最小N个元素。 二、解决问题 heapq 模块有两个函数:nsmallest、nlargest()。 import heapq # 堆排序 nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2] print(heapq.nlarge 阅读全文
posted @ 2021-12-16 14:47 做梦当财神 阅读(151) 评论(0) 推荐(0) 编辑
摘要:一、问题 保留最后几个元素。 二、解决方案 deque(maxlen=N)会新建一个固定大小的队列。 当新元素加入已满的队列,最老的元素会被移除。 from collections import deque q = deque(maxlen=3) q.append(1) print(q) q.app 阅读全文
posted @ 2021-12-15 16:55 做梦当财神 阅读(346) 评论(0) 推荐(0) 编辑
摘要:一、问题 检查字符串的开头或结尾。 二、解决方案 startswith()、endswith()。 filename = 'test.txt' print(filename.endswith('.txt')) print(filename.startswith('file.')) 输出: True 阅读全文
posted @ 2021-12-15 10:21 做梦当财神 阅读(237) 评论(0) 推荐(0) 编辑
摘要:一、描述 os.listdir() 用于返回指定文件夹包含的文件或文件夹的名字列表。 不包括.和..即使在文件夹中。 只支持Unix、Windows。 Python2针对目录中的中文,需要unicode()转换,Python3没有该方法,不需要。 二、语法 os.listdir(path) path 阅读全文
posted @ 2021-12-15 09:50 做梦当财神 阅读(989) 评论(0) 推荐(0) 编辑
摘要:一、del 1. del List lst = ['wangke', 'wangyan', 'wangying', 'qinlu'] del lst[3] print(lst) 输出: ['wangke', 'wangyan', 'wangying'] 删除变量。 lst = ['wangke', 阅读全文
posted @ 2021-12-14 13:53 做梦当财神 阅读(288) 评论(0) 推荐(0) 编辑
摘要:一、问题 print(0.1+0.2) print(0.1+0.1+0.1-0.2) print(0.1+0.1+0.1-0.3) 输出: 0.30000000000000004 0.10000000000000003 5.551115123125783e-17 出现这种精度问题:因为十进制与二进制 阅读全文
posted @ 2021-12-14 09:40 做梦当财神 阅读(383) 评论(0) 推荐(0) 编辑
摘要:一、eval() 1. 描述 eval()执行一个字符串,返回表达式的值。 2. 语法 eval(expression[, globals[, locals]]) expression:表达式 globals:变量作用域,全局命名空间(存放全局变量),如果被提供,必须是字典。 locals:变量作用 阅读全文
posted @ 2021-12-13 10:35 做梦当财神 阅读(223) 评论(0) 推荐(0) 编辑
摘要:一、问题 你想要扩展函数中的某个闭包,允许它能访问和修改函数的内部变量。 二、解决方案 通常,闭包的内部变量对外界是完全隐藏的。但可以编写访问函数,将其作为函数属性绑定到闭包上来实现访问。 def sample(): n = 0 # 闭包函数 def func(): print('n=', n) # 阅读全文
posted @ 2021-12-12 15:11 做梦当财神 阅读(187) 评论(0) 推荐(0) 编辑
摘要:一、描述 fromkeys() 用于创建一个新字典。 以序列seq中元素做字典的键,value为值。 二、语法、参数 dict.fromkeys(seq[, value]) seq:字典键值列表。 value:字典的值。 返回值:新字典。 三、实例 seq = ('wangke', 'wangyan 阅读全文
posted @ 2021-12-12 12:37 做梦当财神 阅读(101) 评论(0) 推荐(0) 编辑
摘要:一、无处不在的__dict__ 类的__dict__、类对象的__dict__。 class A(): a = 0 b = 1 def __init__(self): self.a = 2 self.b = 3 def test(self): print('a normal func.') @sta 阅读全文
posted @ 2021-12-10 16:07 做梦当财神 阅读(15) 评论(0) 推荐(0) 编辑
摘要:一、单继承 在单继承中,主要用来调用父类的方法。 class A: def __init__(self, n): self.n = 2 def add(self, m): print('self is {0} @A.add'.format(self)) self.n += m class B(A): 阅读全文
posted @ 2021-12-10 14:35 做梦当财神 阅读(972) 评论(0) 推荐(0) 编辑
摘要:一、问题 lambda 函数在定义时绑定值。 二、解决方案 lambda 表达式的 x 是一个自由变量,在运行时绑定值,不是定义时绑定值,这跟函数的默认值参数定义是不同的。 **实例:**a(10) 和 b(10) 的结果是 20 和 30吗? x = 10 a = lambda y: x+y x 阅读全文
posted @ 2021-12-08 15:52 做梦当财神 阅读(193) 评论(0) 推荐(0) 编辑
摘要:一、问题 定义有默认参数的函数。 二、解决方案 直接在函数定义中给参数指定默认值。 def test(a, b=2): print(a, b) test(1) test(1, 3) 输出: 1 2 1 3 默认参数是可修改的容器,如:列表、字典、集合,可以用 None 作为默认值。 def test 阅读全文
posted @ 2021-12-08 14:13 做梦当财神 阅读(1684) 评论(0) 推荐(0) 编辑
摘要:输出类的实例化对象: class Name: name = 'wangke' name = Name() print(name) 结果: <__main__.Name object at 0x0000026D9B2BF508> print(name),等同于执行 print(name.__repr_ 阅读全文
posted @ 2021-12-06 13:25 做梦当财神 阅读(166) 评论(0) 推荐(0) 编辑
摘要:一、问题 如果不使用for循环遍历可迭代对象的元素,可用 next() 代替。 二、解决方案 1. 描述 next() :返回迭代器的下一个项目。 next() 要和生成迭代器的 iter() 一起使用。 2. 语法 next(iterable[, default]) 参数: iterable:可迭 阅读全文
posted @ 2021-12-06 10:39 做梦当财神 阅读(502) 评论(0) 推荐(0) 编辑
摘要:一、问题 通过名字访问元组。 二、解决方案 collections.nametuple :nametuple(名称+元组),命名元组,使元组除了使用索引访问还可以使用名称访问。 两个参数:第一个是类名,第二个是类的各个字段名。 from collections import namedtuple P 阅读全文
posted @ 2021-12-03 14:26 做梦当财神 阅读(109) 评论(0) 推荐(0) 编辑
摘要:一、问题 合并多个字典或映射。 二、解决方案 在两个字典执行查找操作(先从 a 中找,找不到再从 b 中找)。 from collections import ChainMap a = {'x': 1, 'z': 3} b = {'y': 2, 'z': 4} c = ChainMap(a, b) 阅读全文
posted @ 2021-12-02 22:16 做梦当财神 阅读(145) 评论(0) 推荐(0) 编辑
摘要:一、问题 从字典中提取子集。 二、解决方案 字典推导。 age = {'wangke': 30, 'wangyan': 18, 'wangying': 18, 'qinlu': 28, 'hongxia': 58} d1 = {key: value for key, value in age.ite 阅读全文
posted @ 2021-12-02 15:29 做梦当财神 阅读(451) 评论(0) 推荐(0) 编辑
摘要:一、问题 过滤序列元素 二、解决方案 1. 列表推到 lst = [1, 4, -5, 10, -7, 2, 3, -1] print([n for n in lst if n > 0]) # [1, 4, 10, 2, 3] 列表推到占用内存,可以用生成器表达式代替。 2. 生成器表达式 pos 阅读全文
posted @ 2021-12-02 14:53 做梦当财神 阅读(62) 评论(0) 推荐(0) 编辑
摘要:一、问题 对列表、元组、字典或(字典、元组组成的列表),根据属性值排序。 二、解决方案 1. 列表、元组、字典 operator.itemgetter() 获取的不是值,而是定义一个函数,通过该函数作用到对象上才能获取值。 from operator import itemgetter a = [1 阅读全文
posted @ 2021-12-02 10:28 做梦当财神 阅读(1214) 评论(0) 推荐(0) 编辑
摘要:1、问题 找出一个序列中出现次数最多的元素。 2、解决方案 collections.Counter 类中的 most_commom() 方法直接给出答案。 from collections import Counter words = ['look', 'into', 'my', 'look', ' 阅读全文
posted @ 2021-12-01 11:17 做梦当财神 阅读(128) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示