![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
python基础
PY相关的技术笔记
CY3761
这个作者很懒,什么都没留下…
展开
-
PY基础 | print 打印 tab的特点
这是在IDE测试的# CY3761 | 2021-10-31 15:37# IDLE \t 占8个空格 2个汉字位置# 真实长度def realLen(_a): _b = 0 for _ in _a: _b += 2 if u'\u4e00' <= _ <= u'\u9fff' else 1 return _b# 空格的个数def spaceNum(_a): _b = 8 _c = abs(_a - _b) %原创 2022-01-09 19:08:28 · 492 阅读 · 0 评论 -
垃圾收集 (PY高级编程系列)
垃圾收集-引用计数机制python采用的是引用计数机制为主,隔代回收机制为辅的策略栈内存与堆内存栈内存 存放变量名 里面有个变量可以指向堆内存的值位置(内存地址)堆内存 对象(值) 在Python中,每个对象都有指向该对象的引用总数—引用计数当使用某个引用作为参数, 传递给 getrefcount() 时, 参数实际上创建了一个临时的引用因此, getrefcount() 所得到的结果, 会比期望的多1import sysclass Test(object): def __in原创 2021-11-26 14:36:48 · 445 阅读 · 0 评论 -
对象池 (需要交互模式) (PY高级编程系列)
对象池 (需要交互模式)小整数池Python为了优化速度, 使用了小整数对象池, 避免为整数频繁申请和销毁内存空间Python 对小整数的定义是 [-5, 256] ,这些整数对象是提前建立好的, 不会被垃圾回收在一个 Python 的程序中, 无论这个整数处于LEGB (局部变量, 闭包, 全局, 内建模块) 中的哪个位置, 所有位于这个范围内的整数使用的都是同一个对象for k, _ in enumerate(range(-5, 256+1)): if k % 10 == 0:原创 2021-11-26 11:18:32 · 544 阅读 · 1 评论 -
正则表达式(PY高级编程系列)
正则表达式需要引入re模块思考题一判断多行字符串, 判断哪一行是符合手机号码import recont = '''aesdf17811011234aa1a3hi233rhi387156340affa124564531346546afa19454132135'''cont = '17811011234abc'# 判断多行字符串, 判断哪一行是符合手机号码# 编译一个正则表达式# r 元字符串 内部有转义字符等不进行转换pattern = re.compile(r'1[原创 2021-11-25 20:16:24 · 179 阅读 · 0 评论 -
面向对象进阶-元类(PY高级编程系列)
面向对象进阶-元类一般的通过引入进行创建一个类from urllib.request import Request # 引入模块之后 动态创建了一个 Request 类from fake_useragent import UserAgentr = Request('https://www.baidu.com', headers={ 'User-Agent': UserAgent().random}) # 创建一个 Request类的实例# <urllib.request.R原创 2021-11-25 00:10:11 · 269 阅读 · 0 评论 -
面向对象进阶-枚举类(PY高级编程系列)
面向对象进阶-枚举类当我们需要定义常量时, 一个办法是用大写变量通过整数来定义, 例如月份但是这样的定义的类型是int, 并且仍然是变量, 并且在运算中, 无法时时创建对应的值, 当然这种指代是以更好的方式去使用变量数值这里存在更好的方法是为这样的枚举类型定义一个class类型, 然后, 每个常量都是class的一个唯一实例Python 提供了Enum 类来实现这个功能# 月份 值是不变的, 都是1~12Jan = 1 # JanuaryFeb = 2 # FebruaryMar = 3原创 2021-11-24 21:07:17 · 319 阅读 · 0 评论 -
面向对象进阶-多继承和定制对象(PY高级编程系列)
面向对象进阶-多继承和定制对象多重继承class Father(object): def work(self): print('父亲在工作')class Mather(object): def work(self): print('母亲在工作')class Child(Father, Mather): # 多继承 | 在多继承中, 调用Child的work究竟是继承父类哪一个呢 def __init__(self, name):原创 2021-11-24 18:17:09 · 225 阅读 · 0 评论 -
面向对象进阶-property装饰器的用法 (PY高级编程系列)
面向对象进阶-property装饰器的用法对属性的值进行限制之前可以使用 set和get方法class Person: # age 属性的值限制 0~88 | 以前可以使用 set 和 get方法 def getAge(self): return self._age # 下划线表示私有属性 # 如果用户不使用 set 那就不能进行阻止 当然写入的也不是 self._age def setAge(self, value): if原创 2021-11-24 12:05:15 · 77 阅读 · 0 评论 -
面向对象进阶-slots属性的限制((PY高级编程系列))
面向对象进阶-slots属性的限制引入与复习import typesclass Person: def __init__(self, name, age): self.name = name self.age = ageif __name__ == '__main__': # 能否动态的给对象p赋予一个新的属性?? | 可以 # 能否动态的给对象p赋予一个新的方法(对象成员方法)?? | 可以 # 能否动态的给类p赋予一个新原创 2021-11-23 21:19:42 · 53 阅读 · 0 评论 -
装饰器与偏函数(PY高级编程系列)
装饰器在定义类时候, 使用静态方法 @staticmethod, 类方法 @classmethod 上面的 @就是装饰器之一引入装饰器不想做饭和洗碗def eat(): print('我正在吃饭')def a1(b1): # b1是函数 def c1(): print('把饭做好了') b1() print('把碗洗好') return c1d1 = a1(eat) # 传入函数d1()装饰器本原创 2021-11-23 17:07:12 · 340 阅读 · 0 评论 -
闭包(PY高级编程系列)
闭包简单例子引出闭包概念在函数内部再定义⼀个函数, 并且这个内部函数⽤到了外部的变量, 这个函数以及⽤到外部函数的变量及参数叫闭包闭包外部的函数是高阶函数def a1(b1): def c1(d1): # 这就是闭包 print('内嵌函数c1, 内嵌函数参数: %s, 外部函数参数: %s' % (d1, b1)) return b1 + d1 return c1e1 = a1(10)print(e1) # <functi原创 2021-11-23 11:12:12 · 140 阅读 · 0 评论 -
高阶函数(PY高级编程系列)
高阶函数函数式编程函数是PY内置的一种封装, 把大段代码封装成一个个函数, 然后再一层层调用面向过程的程序设计而函数式编程,其思想更接近抽象的计算函数式编程特点: 允许把函数作为参数传入另一个函数中或返回一个函数 (类似回调)而计算则指数学意义上的计算, 越是抽象的计算, 离计算机硬件越远越低级的语言, 越贴近计算机, 抽象程度低, 执行效率高, 比如C语言越高级的语言, 越贴近计算, 抽象程度高, 执行效率低, 比如PY语言高阶函数高阶函数英文叫Higher-order functio原创 2021-11-22 22:21:53 · 600 阅读 · 0 评论 -
生成器与迭代器(PY高级编程系列)
列表⽣成式使用列表⽣成式, 可以创建列表; 但如果一个包含元素很多的列表, 占据的内存就很大;而且这么多元素也不一定都完全使用, 这就浪费空间generator生成器generator生成器 (⼀边循环⼀边计算的机制), 元素都是有规律的, 是通过算法进行不断推算的, 只是使用时候会进行处理类型 range保存了产生元素的算法 同时记录了当前游标位置(当前拿了第几个元素)当生成器没有数据 再进行 next 会抛出StopIteration异常列表⽣成式转为generator生成器 (第一种方法原创 2021-11-22 15:13:29 · 279 阅读 · 0 评论