python基础:细节问题梳理
基本数据类型
字符串
1. 多行字符串
2. 原始字符串
序列共同特征
字符串
index访问
切片
- 拼接
- 数乘
2. 列表
+ index访问
- 切片
- 拼接
- 数乘
3. 元组
index访问
切片
- 拼接
- 数乘
注意:序列中不存在减运算
- 序列的in/len/min/max()
注意:min/mx遵循ascll码,方法如下:
集合
- 无序,不能使用index以及切片
- 不重复
- 可以使用in/len/min/max
- 特有运算符:差集、交集、并集
注意:序列与集合为空时的表示:
python基本数据类型归纳
分类:
+ 值类型:不可改变,包括str,int,float,tuple
值类型的数据不可改变表现在:数据只可读不可该,对变量重新赋值是析构原变量后生成新变量,所以从这个意义上来说,值类型数据不允许改变(简单判断方法:内存地址没变就是不可改变)
复杂情况:
可以看出:a[3]是引用类型,可以改变,改变后a[3]内存地址未变,相当于未对元组元素进行改变,如果试图给a[3]赋值,即改变a[3]内存地址,则报错。所以可证整个元组不可改变
因此:元组的不可改变指:元祖起始内存ID不变,各个元素的起始ID也不可改变!!!
- 引用类型:可改变,包括list,set,dict
可以看出,元素的内存地址改变了,所以可以改变。
python运算符
+ 算数运算符中的Bool值
int str list tuple
set dict
报错总结:
- 广义的比较运算符
str
按ascll码比较,从左往右比,字符与字符间采用与逻辑
list tuple
序列数据类型军类似
注意:其他未提到的数据类型如字典等,一般不进行关系运算
- 逻辑运算符及其扩展
特征:运算符两端为bool类型的数值或变量
对于数值,true/false会自动转变为数值
- 成员运算符
特殊地:字典
- 身份运算符
is 判断依据为内存id
- 位运算符
运算优先级
对象三要素:id、value、type
对应三个运算符和方法: is == isinstance
sublime快捷键
- package control : Ctrl+shift+P
- 运行python命令行:ctrl + ~
- build:ctrl +B
- 注释:Ctrl+ /
- 缩进:Ctrl+] 撤销缩进:Ctrl+[
几个特殊用法
- print(str,’字符’)
- 循环+else
+ 带步长的切片
注意:左闭又开
带步长的range()
pass代码块的作用:可以代替正式代码,后想清楚再填充,并且不会报错
包、模块以及导入
- 概念
包:文件夹(通俗)
模块:某个python文件,里面包含类与函数
- 模块导入方法
- import module_name [as new_name]
import只能接module_name,后面不能接package_name或者module_name.variable_name…
- import module_name [as new_name]
所以通过import module_name导入模块后,要使用variable/function/class…必须是这样的形式:module_name.variable_name/function_name/class_name
- from module_name import value/function/class… [as new_name]
相比于import直接导入模块,from … import 直接导入模块内元素
- from package_name import module_name
从 某个包导入某个模块
from package_name import * :导入包的所有模块
import package
import 直接导入包的方法不存在,此写法实际上会导入package的init模块,因为init.py本身是一个模块,他的模块名叫做package_name
- 特殊情况举例
- 导入子package下的module
正确方式: ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/0BD600C824A84C26934C39EFAF9A2FF0/4145) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/AE1C0D5649A94300A06277585A52569B/4141) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/AE1C0D5649A94300A06277585A52569B/4141) 错误方式:不能在单独的import语句后直接加变量等模块内元素 ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/303D289C147945BEAE3F4656E48149D6/4158)
- 导入某个package所有module
![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/2FE44D6F7FE149C089C6589F835576FA/4164) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/0D9AACF006154970BA32140EE1642387/4167) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/47A5B4A7183A476EBFB952DFD10D1958/4169) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/9A8E9B0DD18F4D80A007F55E34866D81/4171)
要想利用*导入package下的modules,必须在package的init.py中用系统变量all标识。
导入某个package特定module
类似上一个,在all中标识
导入某个module
![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/D43227F960794CD3ADCB6B674482B8B0/4190)
- 导入某个module中特定元素
![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/D43227F960794CD3ADCB6B674482B8B0/4190)
- 与all的搭配
- 从包中导入多个模块时(上面已经举例)
- 从模块中导入多个元素时
注意:避免循环导入module,即module1导入module2,module2又导入module1;python有避免重复导入module的机制
- __init__.py的作用:可以添加某个package下所有module均需要导入的其他module
上述总结的作用是:在init文件中写入大量公共import,其他文件或模块直接 import package_name即可引入所有公共import ,提高工作效率。
插入:round系统函数
3:小数点后三位
序列解包
在函数中的应用
函数
关键字参数与默认参数
- 函数申明时,默认参数必须位于形参的最右边
- 对于函数调用时,位置参数与关键字参数不可混搭!关键字参数全部靠右!!
未完待续。。。
类与对象
一、概览
二、类变量+实例变量+实例方法+构造函数
- 含义:
类变量:不依附于某一个具体的对象,一般为类的多个实例所共有,比如,sum:对类的实例进行计数统计
实例变量:为对象所特有,如姓名等
优雅的类须严格区分二者!
实例方法:为实例服务的方法
构造函数:特殊的实例方法,为对象初始化
- 具体区分
1.
可见,通过系统变量dict,可以查看类或对象的属性;对象student1不含有类变量sum!!
2.
对象既可以访问实例变量,也可以向上查找类变量;类当然可以访问类变量,但不能访问实例变量
3.
实例方法访问类变量的两种方式
实例方法访问实例变量:当然
对象调用实例方法:当然;类调用实例方法也可以,但意义不大,很鸡肋,只不过python提供了这样一种灵活的使用方式
虽然比较鸡肋,但此处解释了参数self的含义:实例方法中的self指对象,self名称可以变!
可以看到:无报错
三、类方法与静态方法
类方法
- 类方法定义:@classmethod
对象可以调用类方法,不推荐;类可以调用类方法,推荐;
类方法当然能调用类变量:cls.variable,类方法不能调用实例变量;当然cls也可以换为其他符号,比如this
2.静态方法
- 静态方法定义:@staticmethod
静态方法本质上就是个普通函数,但放在类里,可以像方法一样使用。静态方法为类与实例提供无差别的方法。
静态方法不能访问实例变量,可以通过Student.sum来访问类变量
把它当普通函数对待
四、成员可见性
1.隐藏变量 ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/DD78FFB410A44E51891DB47F68F6F28D/4423)
隐藏的变量不可以通过类、对象直接访问;但实例、类方法可以在类内部访问隐藏变量,外部类、对象可以借助各自的方法实现对隐藏变量的访问。
![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/WEBRESOURCEe95a87e1822525fe2bf0828722c5ce17/4436)
五、继承性与多态性
- 法1
- 法2
可以看出,同名方法会被覆盖
正则表达式与JSON
一、正则概述
- 两种实现方法
- 思维导图
- 用法举例
re模块的方法
- findall方法
re.findall(pattern, string, flags)
第三个参数:标志位 re.I表示忽略大小写 re.S表示元字符’.’可以指代换行符
sub方法
re.sub(pattern, repl, string, count, flags)
repl:replace替换值,可以是函数
count:替换个数
flages:re.I、re.S
- 参数为函数实现动态替换
注意:函数名convert1可以自定义;参数value1也可以自定义
唯一要求:自定义函数参数个数为1,函数必须返回某个替代字符串
group 为match对象的一个方法,用来取出匹配值!!
- match与search方法
可以说findall与sub是search函数的高级封装,封装了一个一个search的过程
注意group方法的使用;span方法会返回匹配值在字符串中的index!
- group方法使用
直接使用findall更优
- 坑:正则最好在字符串前加r
findall()正则中有分组就会只返回分组!!这种情况下使用search+group()可能更灵活
python基础:细节问题梳理相关推荐
- Python培训教程之Python基础知识点梳理
Python语言是入门IT行业比较快速且简单的一门编程语言,学习Python语言不仅有着非常大的发展空间,还可以有一个非常好的工作,下面小编就来给大家分享一篇Python培训教程之Python基础知识 ...
- Python基础知识梳理(一)
Python基础知识梳理: 转载于:https://blog.51cto.com/10412806/2095116
- python语法基础知识总结-Python基础知识梳理 - 第01部分
在开始Python基础知识梳理前, 先安装下环境. 以下过程是在Linux操作系统, root用户下进行的, 主要安装了2.7版本的python, 和pip, ipython, virtualenv等 ...
- Python教程:Python基础知识点梳理!
Python语言是入门IT行业比较快速且简单的一门编程语言,学习Python语言不仅有着非常大的发展空间,还可以有一个非常好的工作,下面小千就来给大家分享一篇Python基础知识点梳理. 1.Pyth ...
- Python教程分享之Python基础知识点梳理
Python语言是入门IT行业比较快速且简单的一门编程语言,学习Python语言不仅有着非常大的发展空间,还可以有一个非常好的工作,下面小千就来给大家分享一篇Python基础知识点梳理. Python ...
- python基础知识资料-Python基础知识梳理 - 第02部分
本文是Python基础知识的第二篇, 主要是对内置对象类型的介绍, 涉及的类型如下表. 数字类型 在Python中, 数字并不是一个真正的对象类型, 而是一组类似类型的分类, 如整数和浮点数, 复数等 ...
- 【全网力荐】堪称最易学的Python基础入门教程
目录 数据的名字和种类--变量和类型 初探数据种类 数据类型 数值运算 比较运算 变量和赋值 变量的好处 用赋值更新变量 变量和数据类型的关系 总结 数据类型 数值运算 数值比较 变量和赋值 一串数据 ...
- python框架django书籍_有Python基础,刚接触web框架的Django初学者。
本文面向:有Python基础,刚接触web框架的Django初学者. 环境:windows7 python3.5.1 pycharm Django 1.10版 pip3 一.Django简介 百度百科 ...
- 快速掌握Python的捷径-Python基础前传(1)
文: jacky(朱元禄) 开文序 最近看新闻,发现高考都考Python了,随着人工智能的火热,学数据科学的人越来越多了!但对于数据行业本身来说,现象级的火热,这并不是什么好事. 方丈高楼平地起,无 ...
- 16张思维导图+学习路线图,囊括所有Python基础,可打印
今天给大家分享的是关于Python基础的14张思维导图,对于大家知识的梳理会有很大的帮助,另外还有两张Python学习路线图,全面系统,让初学者不走弯路.一起来看一看吧! 前面知识回顾!!!!! 程序 ...
最新文章
- ImageView 常用属性的分析
- 报错解决:InvalidArgumentError: Received a label value of 101 which is outside the valid range of [0, 101
- 画出的点做交互_设计之下交互设计原型设计之概念设计
- C++:48---纯虚函数
- vue跳转到外部链接_前端实战项目:Vue.js实现外卖平台webapp,饿了么项目的翻版...
- C#中类的修饰符,this关键字和static关键字
- 【水果识别】基于matlab GUI苹果质量检测及分级系统【含Matlab源码 896期】
- 强劲有力的EnableQ在线调查问卷引擎
- Excel表格宏命令教学一:VBA入门
- 从十七年蝉谈起——hashtable的表格大小为什么要选择质数
- Web性能技巧-超越基础
- 怎么让热图显示基因名_教你画一个掰弯的热图(Heatmap),展示更多的基因表达量...
- Lync 客户端无法及时更新!
- raid5阵列两块硬盘掉线如何恢复阵列中的数据库
- 老照片怎么修复清晰?轻松几步让图片焕发新生
- Linux驱动学习--V4L2设备(二)subdev的ops介绍及media framework深入解析
- Ubuntu截图和录屏方法
- U3 精通U盘分区与启动-孙宇彤-专题视频课程
- [转载] 杨元元-自杀女研究生杨元元:她的路为何越走越窄
- 嵌入式Linux音频驱动开发