| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python之路~~~~~高级知识 -> 正文阅读 |
|
[Python知识库]Python之路~~~~~高级知识 |
包和模块什么是包
什么是模块
常见导包方式
is 和 == 区别is是比较两个引用是否指向了同一个对象(地址引用比较)。 ==是比较两个对象是否相等。(比较的数值) 深浅拷贝赋值(基本数据类型) ? 主要的操作,栈内存的复制 浅拷贝 ? 如果是一个列表:ls2 = ls.copy () ? 浅拷贝对象,并不是把对象完整的拷贝,而是仅仅拷贝了第一层对象, ? 如果对象中存储子对象,那么子对象还是藕断丝连 深拷贝 ? 深拷贝使用的递归的方式完成的拷贝,这样的,两个对象之间将没有任何关系 ? 拷贝对象,而对象是存储在堆中的,拷贝堆内存 ? 需要得到第二个一样的对象,复制拷贝对象的效率最高 ? python为了提供对象拷贝,专门为大家提供了一个copy模块 ? copy. copy#浅拷贝,相当于列表中copy方法 最佳实践: 1、需要将当前对象拷贝的时候,一般建议拷贝为浅拷贝,(效率高,内存占有少) 2、如果说,就是需要完全分离,请使用深拷贝 结论: ? 元组、字符串、数值这些不可变类型,所有深浅拷贝后,永远只有一份内存 ? 注意特殊情况,如元组中的存在可变类型的元素 闭包闭包是一种现象,是若数据类型编程语言所特有的现象。 Javascript (js)时时刻刻在使用闭包 概念:能够在函数内部调用其他函数变量的现象就闭包 ? 函数包裹函数的现象,就叫做闭包 作用:让外层函数常驻内存,有可能垃圾无法回收 ? 让局部变量全局化 生成器(generator)什么是生成器? 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。 在 Python中,这种一边循环一边计算的机制,称为生成器:generator。 列表推导式(生成式)
这个功能很强大 ,可以快速得到需要的列表 缺点:如果一个列表特别的庞大,这样所有的元素直接初始化到内存中,这样所有的元素直接初始化到内存中,引起大量无用元素占有内存问题 列表生成器(list generator)列表推导式 —> 生成器 [列表推导式] —> (列表推导式) #就会变成一个列表推导式 使用全局函数next,没调用一次next,返回下一个值,直到最后抛出异常也可以使用循环迭代generator 生成器对象也存在一个 next 魔方方法,等价于next全局函数 好处:节约内存 函数转化为列表生成器(关键字yield)当列表生成时,需要大量代码来完成时,不可能使用列表推导式,一般使用函数完成, 斐波那契数列: ? 从第三个元素开始,每一个元素是前两个元素之和 ? #如果函数中使用yield关键字,那么这个函数的返回值就是一个生成器
yield作用: 1、具有return的功能,能够返回一个函数的值 2、当一个函数出现yield,那么这个函数就不会调用执行,而是返回值是一个生成器, ? next它的返回值,不断地返回被yield的值 3、yield值之后,会记住昂前位置,下一次next函数调用生成器的时候,会在记住的位置继续执行 send方法(自学)略 协程应对高并发的一种很不错的方案 迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 可迭代对象(Iterable)以后需要迭代一个对象
from collections.abc import Iterable, Iterator(其中Iterable可迭代对象模块,Iterator迭代器模块) 迭代器对象? 在python,能够被全局函数next调用,并且返回下一个值的对象,就是迭代器。 ? 可迭代对象不一定是迭代器,迭代器都是可迭代对象 凡是可作用于for循环的对象都是Iterable类型; 凡是可作用于next()函数的对象都是Iterator类型 可迭代对象不一定是迭代器,迭代器都是可迭代对象 iter的全局函数
装饰器(decorator)什么是装饰器装饰器就是一个闭包函数,它能够@闭包名称装饰一个原有的函数,使得原有函数的功能更加强大 装饰器,功能就是在运行原来功能基础上,加上一些其它功能,比如权限的验证,比如日志的记录等等。不修改原 来的代码,进行功能的扩展。 比如java中的动态代理,python的注解装饰器 其实python的装饰器,是修改了代码。 OCP原则(open close protocol):对已有运行(稳定的)代码,不应该修改它,如果你增加新的功能,添加新的功能即可 如何定义装饰器1、定义一个闭包,闭包有一个默认的参数,是一个引用,该引用就是需要装饰的函数 2、一个需要在里面函数里面调用引用(函数),在调用之前写的代码就会被装饰在原函数之前,调用之后的代码会,会被装饰在原函数之后 装饰器的功能1.引入日志 2.函数执行时间统计 3.执行函数前预备处理 4.执行函数后清理功能 5.权限校验等场景 6.异常的处理 7.缓存 装饰器的原理使用了断点调试,追踪了下代码的运行流程,发现装饰器的运行原理 动态语言特性动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。它是一类 垃圾回收机制原理:以引用计数为主,以分代收集和标记清除为辅 正则表达式什么是正则表达式正则表达式也叫做匹配模式(Pattern),它由一组具有特定含义的字符串组成,通常用于匹配和替换文本。 正则表达式,是一个独立的技术,很多编程语言支持正则表达式处理。
常见的方法:[‘compile’, ‘copyreg’, ‘enum’, ‘error’, ‘escape’, ‘findall’, ‘finditer’, ‘fullmatch’, ‘functools’, ‘match’, ‘purge’, ‘search’, ‘split’, ‘sre_compile’, ‘sre_parse’, ‘sub’, ‘subn’, ‘template’] compile #编译,可以改变正则表达式的规则 findall #查找所有,返回列表 finditer #查找所有,返回迭代器 match #以什么什么开头 匹配 search #查找,只能查一次 spilt #分割 sub #替换,类似于replace 元字符
反义符
注意:1 和 [^] 的区别 前者表示:开头只能是[ ]内的字符,后者表示 :不取括号内的字符 转义符在python的字符串中 \ 是有特殊含义的,如果要正常表示一个\,需要用两个 \ \ 来表示 在正则中,\是具有特殊含义的,要正常表示一个,则需要两个 \ \ 来表示 re.match(r" ",) 其中r表示只关心正则转义,不关心字符串转义 因此,建议大家以后再 写正则的时候,一定要在正则表达式前加上 r 位数
分组(group)在正则表达式中,使用圆括号()将正则中包裹起来,会形成正则匹配后的二次筛选 分组的最大好处,就是能够进行二次筛选
贪婪模式 和 非贪婪模式 (懒惰模式)在Python中正则默认是贪婪模式(个别语言中也可能是非贪婪模式),贪婪模式就是总会尝试匹配更多的字符。 非贪婪模式则反之,总是尝试匹配尽可能少的字符。 在*、? 、+、{m,n}后面加上?,可以将贪婪模式变成非贪婪模式。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 23:45:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |