python核心编程速记【笔记迁移】

笔记速记

1.python非常注重缩进,这是它的显著特征之一。

2.import相当于头文件声明模块。

3.利用type函数 type(a)可以查看当前变量类型。 isinstance可以比较两个数据类型并返回一个布尔值。

4.这里面的可直接使用and和or作为一个函数

5.python的算法比较贴合实际,其除法‘/ ’可以直接进行分数运算,要使用整除整舍小数的除法可以用‘// ’同时提供了‘**’ 如 3**2就表示3的平方。

6.python可以直接表达 if 5>=a>3: 不用像c一样5>=a&&a>3 并且它简化了 else if 的表达,可利用elif代替

7.python是直接使用变量,在使用时就要进行赋值,变量名不可以数字开头。

*7.python的文件名有时会与系统有些冲突,这是一个小细节,如命名为random.py就会出现bug

*7.另一个小细节是,想在print中引入’ 如想写出let’s go就要使用转义字符,即print(“let’s go”)

*7.对上一条的优化处理是可以引入 原始字符串,即在变量赋值时加入一个’r’ 如str=r’C:\now’,它可以自动忽略里面的歧义,仅仅当作字符串。(即不会出现\n的换行)

8.当字符串跨越多行时可以利用三引号,这样输出时会保留原格式输出 即"“” “”"

9.for 与range常常配合,用法与c有较大区别。 尤其for的变量更像一个指针,range范围不包括尾部,同时最后一个分支逗号表示间隔。

*9.在数组中的许多函数都是先指定对象,或者说是数组当中的分支函数,一般都是 数组名.函数(函数操作)切勿单独使用!

10.python里的数组更加强大,一般变量可表示数组,中括号初始化,并且元素类型可以混合,用append添加单个元素,extend添加另一个列表(可直接书写列表或者表达式),insert可加入至指定位置(从0计顺序)(可用len函数测量长度)

11.在初始化数组以后,可以之间变量名+[]进行访问,可以完成交换等等操作。

12.删除数组中的元素 可用 remove(直接移除目标) del(全局函数) 后跟要删除的位置,如del a[1]

*12.这里要提到一个较为重要的类似“删除”的函数 叫做’pop’这里译为“弹出”。即对数组使用这个分函数时会弹出(取出)你需要的元素,可以直接进行赋值操作,同时数组里被取出来的值消失。

13.可以对数组进行“切片”,即取一部分数组元素进行使用,原数组不变。 就是 a[上界:下界] 不算末尾值,从0计数 这里可以提到一个小技巧,使用a[:]可以的到原列表的拷贝,即可以在不变化原列表的同时对列表进行操作(仅此方法可以操作,简单的赋值会导致改变,因为在python中数组是通过指针来工作的)

13*这里提到一个函数split()括号中用关键字符进行切割,利用数组的方式访问[-1]表示最末尾的一个元素

14.c语言中对二维数组的访问 如a[1][1],这里是表示访问列表中的列表元素 即层层递进的关系

15.在python中不用再重复的书写逆序,排序,索引,计数操作了。计数:count(计数对象) 索引:index(索引对象,索引范围上界,索引范围下界) 逆序:reverse() 排序:sort(从小到大正序/逆序) 正序:sort() 逆序:sort(reverse=True)

16.这里有一个重要的东西叫做“元组” 元组很像const型的数组,无法改变,书写特征为逗号,一般加上括号表示范围 a=1,2,3 a就为元组。加乘与数组一样 加法拼凑,乘法重复 字符串便可理解为一个元组

17.对于在c语言中学的字符串格式,这里仍旧发挥一定作用,如%d %c %s 等等 我们可以利用这一点对字符串进行处理(格式化) 即可以让字符串在整型,浮点型等等之间转化,% 表示转化操作,具体见例子,同时这里要提到format函数进行对应格式输出(与c语言十分类似)

18.利用help(想要注释的内容) 或者hanshu._doc_来获得英文解释与帮助

19.书写函数可以在形参中使用默认参数,'='赋予默认值即可,实参可以使用特征值参数(就无视了顺序) 函数调用(形参名称=实际参数)

20.lambda是一个很简介舒适的函数定义,可以直接指定参数和函数内容,简介地进行调用 g=lambda x,y: x+y g(1,3)

21.字典当中用copy进行拷贝,b=a.copy(), 它会指向不同的地址(与赋值不同) 字典.clear()来清除字典内容 取字典中的对应内容最好使用get函数 这样不会出现越界报错

22.大括号并不是字典的专利,它可以使用在集合中

23.对于文件的操作,有几个可以连着记。如mkdir(path) 它会创建一级目录,当没有指定全部目录时是当前目录下创建。 makedirs(path)可以创建多级目录 rmdir(path)移除单层目录 目录非空会抛出异常 removedirs(path)多层删除

24.这里介绍一个很有趣的pickle函数 它可以进行‘腌制泡菜’ 对于过大的数据包,便可以进行‘腌制’ 让后续的访问和操作更加容易和优雅 之后便可以理解为一个数据包,通过open+load的形式便可以引用

25.在class中的分支函数要引入参数 self,这相当于区别普通的函数,表示可以通过自身调用该类下的分支函数。在类的方法内使用类的属性变量要使用 self.变量名=…

26.在类的纵向关系中,使用继承来保持一定的常规特征。类的横向关系中,使用"拾遗"(组合)来表示它们之间的一些所属或者横向关系

27.issubclass用于判断是否有类中的继承关系 isinstant用于判断是否为该类下的实例对象

28.(进阶必备)
python中的魔法方法,魔法之处就在于它能够在合适的时候被调用,并不是直接调用访问,一定注意区分,
实例创建和销毁:__init__可以设置该类的一定属性,解决该类的“需求”,一般以self.x=xxx self.y=xxx出现,同时它返回的是null 定义该类的实例化对象时自动调用(传入参数)
__new__一般不会重写,但在继承相关类且想进行一定更改时尤为重要,它会自动 return str.new(cla,string) 同时执行进行修改的操作
__del__所有的实例及引用都被del之后才会自动执行里面的操作
当我们再次审视int list等类时 它们相加时是对象之间的加减 这也就是说我们在书写class时和基本类是一样的 我们可以自定义相关的运算:
与运算符相关的魔法方法:__add__等等 即是在加法时调用,return +相关操作 来进行修改(同时不要在return中出现加法 防止递归) 注意类和魔法方法需要的数据 要正确书写
__setattr__设置类中的属性,__getattr__试图调用不存在的属性的行为,__getattribute__调用已存在属性的时候的行为

29.这里要提到一个其他面向对象的语言中常见的“容器” python中的容器要使用“协议” (与其他编程语言的接口很类似)protocol 在python中没那么正式,更像是“指南”

30.在爬虫中,在urllib.request.urlopen中更改data参数,可以以post的形式进行连接访问,而data的数据就要基于 请求正文中 的date数据,对应相应的格式,基本方法是使用urllib.parse.urlencode()格式

31.更加详细的爬虫 解密还有待学习,还有一个编码

32.更加好的使用爬虫,我们已有了隐藏用户名(head),延迟提交时间(time time.sleep), 代理(ddos的雏形?)

33.从这里开始讲下requests库,requests里的函数十分简洁,基础包括requests.get(对应网页中的get) requests.post(对应网页中的post) requests.delete(对应网页的delete) requests.put(对应网页的put) requests.head(获取网页头信息)

34.get操作完成后可以查看该网页的属性 如:r.text(相应内容的字符串形式) r.headers r.status_code(200/404)(用raise_for_status可以直接判断) r.encoding(返回从header中猜测的编码格式) r.apparent_encoding(返回通过内容猜测的编码格式,更加准确,当encoding不能正确解码时,就用这个) r.content(网页的相应二进制形式)

35.BeautifulSoup可以对网页进行解析,首先要理解网页中的标签树,最基本的soup=BeautifulSoup(‘html’,‘html.pareser()’)可以进行基本的网页解析(用函数prettify打印,可以使用加入.后缀来进行标签的prettify),然后里面还有tag,name,attribute,navigablestring,comment 直接进行属性访问即可 soup.title等等,attrs会返回一个字典,查看字符就soup.string即可

36.对于一个html界面,它由标签树构造,我们要进行上行,下行,平行遍历,详情见tagbianli

37.在网页中信息的标记同样重要,对于一定的信息要进行分类

*37.这里简单介绍一下,html xml json yaml
html:超文本连接,将视频 音效等嵌入文本之中
xml:与html十分相似 同样以<>符号进行数据展示,可以说是html的通用形式
json:javascript object notation即javascript语言面向对象的数据储存方式 是有类型的键值对的表达,与字典比较相似(无法使用注释) 一般用于云端和节点的信息通信
yaml:它是无类型的键值对的表达,利用缩进来进行表达,注意与json的区分 一般为各类系统的配置文件

38.在常规的网页分析上面,我们要灵活应用形式解析及搜索方法 这里使用soup.find_all(name,attrs,recursive,string) 它可以返回一个列表类型 同时传递参数时,若想对一个参数赋予多值,请利用列表传参 直接使用.find_all(True),利用简单的迭代就可以打印所有标签

*38在实际操作中,find_all函数可以省略,即soup(‘a’),直接进行查找

39.接下来是正则表达式,它是一种通用的字符串表达框架,可以表达有一定特征的字符串,同时它非常简洁,同样它可以判断字符串是否符合某种特征, 其用到的re库也是python的标准库,无需额外安装

40.原始字符串是Python中一类比较特殊的字符串,以大写字母R或者小写字母r开始。在原始字符串中,字符“\” 不再表示转义字符的含义。
原始字符串是为正则表达式设计的,也可以用来方便地表示Windows系统下的路径,不过,如果路径以"" 结尾那么会出错。

41.具体的正则表达式语法放在相关图片中。这里额外补充什么是’match’对象,常用的属性有group(0)(返回所以匹配结果),span(表组的开始与结束位置)

*41.这里额外介绍一个函数,叫re.compile(‘正则表达式字符串形式’,flag),它可以对一开始的字符结构进行编译,其结果就是正则表达式对象,可以直接使用re库的各种操作

42.在正则表达式匹配的过程中,可能会出现一个字符串多次匹配,这里默认会是使用’贪婪匹配’(即匹配最长的字符串) 对能够延长字符串的元素进行拓展才能进行最小匹配(如’??‘,’*?‘,’+?',{m,n}?)

43.现在要聊到scrapy框架,不是简单的函数库,它是与request截然不同的两种技术路线,但它们都在爬虫上有着非常好的函数,可用性很强,这里顺便要提到的是,它们都没有应对验证码,提交表单等功能,需要额外拓展。

43*.scrapy可以算是网站级别的爬取,可以批量进行操作,它基于异步结构设计,并发性好,性能高

44.这里对yield函数进行补充,它作为一个生成器要与循环搭配使用,它不会在函数中普通地返回值,在使用一次后会冻结,同时python也鼓励将带yield的函数与for搭配,作为一个生成器,在scrapy中能够生成一系列url链接且占用资源较少

了解更多

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/127513.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新生儿疝气:原因、科普和注意事项

引言&#xff1a; 新生儿疝气是一种在婴儿中相对较常见的状况&#xff0c;很多新父母可能对这一现象感到困惑和焦虑。疝气发生时&#xff0c;内腹腔的一部分可能穿过腹壁的弱点&#xff0c;导致腹部出现凸起。本文将科普新生儿疝气的原因&#xff0c;提供相关信息&#xff0c;…

Jenkins CICD过程常见异常

1 Status [126] Exception when publishing, exception message [Exec exit status not zero. Status [126] 1.1 报错日志 SSH: EXEC: STDOUT/STDERR from command [/app/***/publish.sh] ... bash: /app/***/publish.sh: Permission denied SSH: EXEC: completed after 200…

PHP 使用递归方式 将其二维数组整合为层级树 其中层级id 为一个uuid的格式 造成的诡异问题 已解决

不啰嗦 直接上源代码 <?php function findChildren($list, $p_id){$r array();foreach ($list as $k > $item) {if ($item[fid] $p_id) {unset($list[$k]);$length count($r);$r[$length] $item;if ($t findChildren($list, $item[id])) {$r[$length][children] …

基于SSM的学生档案管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

android开发布局知识

插件开发的视频笔记&#xff1a;

跨境电商一定要做跨境独立站的6个原因!一键对接电商API接口瞬间拥有全球各大平台几十亿商品

跨境电商为什么要做独立站&#xff1f;它的优势又有哪一些&#xff1f; 如果说我们的企业是做BtoB的跨境电商&#xff0c;那今天这个内容一定要看仔细。 拥有了独立站你就是最高权力者&#xff0c;一切尽在自己掌控中&#xff01; 第一呢&#xff0c;独立站它就是我们自己做的…

IP行业API助力于网络分析和数据挖掘

引言 在当今数字化时代&#xff0c;数据成为了企业、科研机构和政府决策者的重要资源&#xff0c;而IP行业API则成为了数据分析及挖掘的工具之一。IP行业API是一种能够查询IP地址所属的行业分类信息的应用程序接口&#xff0c;它能够提供在网络分析、用户行为分析及大数据挖掘…

【PG】PostgreSQL13主从流复制部署(详细可用)

目录 版本 部署主从注意点 1 主库上创建复制用户 2 主库上修改pg_hba.conf文件 3 修改文件后重新加载配置使其生效 4 主库上修改配置文件 5 重启主库pg使参数生效 6 部署从库 7 备份主库数据至从库 停止从库 备份从库的数据库目录 新建数据库数据目录data 创建和…

客户服务质量提升的三种思路

客户服务质量是企业在市场竞争中立于不败之地的重要因素之一&#xff0c;优秀的客户服务不仅可以提高客户满意度&#xff0c;还可以提高客户黏度和回头率。随着经济的发展&#xff0c;客户服务行业也在不断发展壮大。在这个竞争激烈的行业中&#xff0c;企业如何提高客户服务质…

送水服务预约小程序内容该如何做

无论小区还是办公楼等场景&#xff0c;送水服务往往有较高需求&#xff0c;同时该服务属于长期稳定性的&#xff0c;因此对品牌来说&#xff0c;如何打造品牌获取更多用户及转化非常重要&#xff0c;然而在实际订水过程中&#xff0c;又会面临着一些难题&#xff1a; 1、品牌传…

基于SSM的学院就业信息网设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【FPGA】正确处理设计优先级--或许能帮你节省50%的资源

概述 假如现在有一种方法–可以在不怎么需要修改已有设计的情况下&#xff0c;就可以帮您节省50%的设计资源&#xff0c;那你会试试看吗&#xff1f; 当前市场环境下&#xff0c;更低廉的成本却可获得同等性能无疑是极具诱惑的。本文将介绍一种FPGA设计技术&#xff0c;该技术…

docker创建并访问本地前端

docker创建并访问本地前端&#xff0c;直接上命令&#xff1a; 安装nginx镜像&#xff1a; docker pull nginx 查看已安装的nginx&#xff1a; docker images 创建DockerFile文件&#xff0c;直接在当前文件夹种创建 touch Dockerfile 在Dockerfile写入内容&#xff1a; F…

ISP算法——UVNR

ISP算法——UVNR 概念简介 UVNR也就是经过CSC只有在YUV域对UV两个色域进行降噪&#xff0c;在有些方案里也叫CNR&#xff08;chroma noise reduction&#xff09;。主要就是在YUV域针对彩燥进行特殊处理的一系列算法。 关于噪声产生的原因在前面关于降噪的文章和视频中已经做…

Redis系列-Redis性能优化与安全【9】

目录 Redis系列-Redis性能优化与安全【9】Redis性能优化策略Redis安全设置与防护措施Redis监控与诊断工具介绍 七、Redis应用案例与实战八、Redis未来发展与趋势 个人主页: 【⭐️个人主页】 需要您的【&#x1f496; 点赞关注】支持 &#x1f4af; Redis系列-Redis性能优化与安…

基于Springboot的智慧食堂设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的智慧食堂设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 项…

数据结构: unordered_map与unordered_set

目录 1.框架 2.结构 unordered_map unordered_set 3.对HashTable的修改 更改模板参数 4.增加迭代器 a.结构 b.运算符重载 c.HashTable封装迭代器 d.unordered_map与unordered_set的迭代器 1.框架 1.复用HashTable ~~> 增加模板参数KeyOfT 来获取 Key值 unorder…

『Nacos』 入门教程

前言 本文为 Nacos 平台快速入门教程&#xff0c;本文将会使用通俗易懂的语言手把手带您了解、使用 Nacos 平台&#xff0c;适合未接触过 Nacos 的初学者 官方手册&#xff1a;Nacos | Nacos 官方仓库&#xff1a;alibaba/nacos 版本&#xff1a;2.X 本文示例代码仓库&#xf…

Ansible自动化运维工具(常用模块与命令)

ansible基于Python开发&#xff0c;实现了批量系统配置&#xff0c;批量程序部署&#xff0c;批量运行命令等功能 ansible特点 部署简单&#xff0c;只需在主控端部署Ansible环境&#xff0c;被控端无需做任何操作&#xff1b;默认使用ssh协议对设备进行管理&#xff1b;有大…

更改 npm的默认缓存地址

npm的默认缓存一般在C:\Users\用户名\AppData\Roaming路径下的npm和npm_cache&#xff0c;而c盘往往空间不大。 1、在其他盘新建两个文件夹&#xff0c;如D盘&#xff0c;node_cache和node_global。如下图所示。 2、在cmd中执行npm config set prefix “node_cache的路径”&a…