operator
collection
103. 文件名称字符串的注意事项
102 . file.truncate() 用法
truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符
如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除
101.import ... 和 from ... import ...的区别
区别1:
- mport 模块:导入一个模块;注:相当于导入的是一个文件夹,是个相对路径。
- from…import:导入了一个模块中的一个函数;注:相当于导入的是一个文件夹中的文件,是个绝对路径
区别2: 调用模块属性时是不一样的
区别3:
- from 模块 import * : 导入模块时,会跳过私有属性;
- import 模块 : 通过引用可以访问私有属性
100. 类相关的内容
python---私有属性_python私有属性-CSDN博客
类方法使用@classmethod装饰,第一个参数为类(cls),调用时可以通过类的实例或者类本身来调用。
静态方法使用@staticmethod装饰,调用时可以使用类的实例或者类本身来调用。
实例方法定义时第一个参数为类的一个实例(self),调用时必须通过实例调用。
__new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供
__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例
__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值
我们可以将类比作制造商,__new__方法就是前期的原材料购买环节,__init__方法就是在有原材料的基础上,加工,初始化商品环节
99. 理解 __name__ == '__main__':
假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')。
if __name__ == '__main__'的意思是:当 .py 文件被直接运行时,if __name__ == '__main__' 之下的代码块将被运行; 当 .py 文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行
98. __init__.py 文件的作用
Python 模块下 __init__.py 文件_python init.py-CSDN博客
97. re模块
1.group和groups的区别:
n.group(N)返回第N组括号匹配的字符
n.group()==n.group(0)==返回所有匹配的字符
n.groups() 返回所有括号匹配的字符,以元组格式,没有子组的时候将返回 空元组
示例:
具体可见:https://blog.csdn.net/dingding_12345/article/details/52317476
2.re.match() :返回匹配的match对象,默认从给定字符串的开头开始匹配,即使正则表达式没有用^声明
match的属性:
.string 待匹配的文本
.re 匹配使用的pattern 对象
.pos 正则表达式搜索文本的结束位置
.endpos 正则表达式搜索文本的结束位置
具体见:https://blog.csdn.net/mmp591/article/details/78585244
3.re.search():返回匹配的match对象
search和match的区别:match函数是只检测re是不是在string的开始位置匹配,search会扫描整个string查找匹配,会扫描整个字符串,并返回第一个成功的匹配
4.注意点号 . 是不匹配换行符号\n 和非字符的,在确实要匹配. 号的时候,要使用\进行转义
5.简单的电子邮件的正则表达式: \w+@\w+\.com
6.匹配边界:\b \B 可以以border来记忆
举例:
\b 可以匹配单词边界,例如 'er\b' 可以匹配 nerver中的er。但是不能匹配 verb中的er
\B 匹配非单词边界。例如 'er\B' 可以匹配 verb中的er,但是不能匹配nerver中的er
7.findall()返回列表。如果findall没有找到匹配的部分就返回一个空列表,但是如果匹配成功。列表将包含所有成功的匹配部分
8.\s 是指空白,包括空格,换行,tab缩进等所有空白,而\S相反
9.findall和finditer
具体见:https://blog.csdn.net/wali_wang/article/details/50623991
10.sub和subn 实现搜索和替换的功能
其语法: re.sub(pattern, repl,string[, count])使用repl替换string中每一个匹配的子串后返回替换后的字符串,count用于指定最多替换次数,不指定时全部替换
re.subn(pattern,repl,string[, count])
其返回的是 sub(pattern, repl,string[, count]),替换次数
11.split()分割字符串
str.split()不支持正则和多个切割符号,不感知空格数量
12.扩展符号
具体见:https://blog.csdn.net/oliverkingli/article/details/78990912
13. \s\s+ :表示的是至少拥有两个以上的空白符
96.map 函数
基本语法: map(function, iterable)
numbers = [1,2,3,4,5] squared = list(map(lambda x:x**2 , numbers))
对序列iterable中的每一个元素都调用function函数返回一个map对象实例
这个map对象实际就是个迭代器
filter函数
基本语法 filter(function, iterable)
numbers = [1,2,3,4,5] squared = list(filter(lambda x :x**2 >9 , numbers))
reduce函数
基本语法:reduce(function, iterable[, initializer])
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
返回列表和:1+2+3+4+5
95. 使用小括号包裹推导式会生成生成器对象,而不是元组
94. 构造函数dict() 可直接从元组列表中构建字典
93. reversed 和 reverse的区别
reversed 返回的是个迭代器,需要使用 迭代,list,next() 来获取值
reverse是list的内置方法,只有list可以用
python中reversed与reverse的区别解析_python_脚本之家
92. 列表适合做堆栈(后进先出)
列表不适合做队列 (先进先出) , 但是可以是用 collections.deque 双向队列来进行处理,
91. 全局变量,局部变量 :百度安全验证
全局变量: 在函数外声明的变量, 可以在全局代码进行访问
局部变量: 在函数内创建的变量 ; 当在函数内创建的变量,就是局部变量,不能在函数之外使用此变量。但是,我们可以使用 global 关键字在函数中创建全局变量 ,如要函数内修改全部变量,用global声明就不会报错
a = 10
def sum ( n ) :
global a # global声明全局变量,必须在引用变量前声明,否则报错
n += a
a = 11
print ('a = ', a, 'n = ', n ) # 最终输出a = 11 , n = 13
sum ( 3 )
print ('外 a = ', a) # 最终输出 a = 11
1.内部函数,不修改全局变量可以访问全局变量
2.内部函数,修改同名全局变量,则python会认为它是一个局部变量(同教程最后一个例子),会报错
90. 函数的参数类型:
必需参数
默认参数
关键字参数
不定长参数 :
---加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数; 如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量
---加了两个星号 ** 的参数会以字典的形式导入
---单独出现星号 * 后的参数必须用关键字传入
89. items() 输出字典的键对值
enumerate() 输出列表的 下标和值
zip() 遍历两个或者更多个序列
88. dict.get() 和dict.setdefault() 的区别:
相同的地方: 看key是否在 该字典中,没有的话,就赋默认值;
不同: setdefault() 会修改原列表的值
87.字典
- 删除
del tinydict["adress"] # 删除单个元素
tinydict.clear() # 清空字典
del tinydict # 删除字典
- 键不可重复
- 键不可变,所以只能用 数字,字符串,元组
- 直接赋值、浅拷贝和深度拷贝解析 :
Python 直接赋值、浅拷贝和深度拷贝解析 | 菜鸟教程
86.元组相关内容
创建空元组: tup1 = ()
元组中只包含一个元素时,需要在元素后面添加逗号 , ,
否则括号会被当作运算符使用
:tup = (50, )
元组也可以以下面的表达方式:
tup3 = "a", "b", "c", "d" # 不需要括号也可以
tuple(iterable) 将可迭代系列转换为元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改
元组的元素值不可修改,但是可以对元组进行连接组合
元组的元素值不可修改,但是可以通过del 来进行删除
元组的不可变指的是元组所指向的内存中的内容不可变
t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2][1] = 'Y' >>> t ('a', 'b', ['X', 'Y'])
元组的不可变性是指元组所指向的内存中的内容不可变,而不是指元组中的元素引用不可变。元组可以通过索引访问其元素,但不能对这些元素进行添加、删除或修改操作
85.通过列表切片方式复制列表, 为不同的两个地址
a = [1,2,3,4]
a_1 = a[:]
84.使用int函数转化二进制
b = "1" bs_len = len(b) while bs_len < 9 : b_b = b.ljust(8,"0") d = int(b_b,2) print(f"二进制 {b_b} 相当于{d}") b = b + "1" bs_len = bs_len+ 1
83. join的使用
82.随机数函数
81. 内置函数
- repr : 返回对象的string格式
- dict : 用于创建字典
class dict(**kwarg) 关键字 class dict(mapping, **kwarg) 映射 class dict(iterable, **kwarg) 可迭代对象
- chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符
80.基本数据类型
- 注意: 创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
- 集合可以进行运算
- 集合与字典
无序:集合是无序的,所以不支持索引;字典同样也是无序的,但由于其元素是由键(key)和值(value)两个属性组成的键值对,可以通过键(key)来进行索引
元素唯一性:集合是无重复元素的序列,会自动去除重复元素;字典因为其key唯一性,所以也不会出现相同元素
79. 浮点型转为整型的方式
python浮点数转换为整数_mob649e815b5994的技术博客_51CTO博客
int : 直接舍去小数部分
round: 四舍五入 ,第一个参数是数值,第二个参数是 要保留的位数
math模块: math.floor 向下取整, math.ceil 向上取整, math.trunc 直接保留整数部分
78 . 当字符串内容为浮点型转化为整型,需要先转化为 float 再转int型
77. #!/usr/bin/python3
第一行注释标的是指向 python 的路径,告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器
76.input函数
75.多行语句 : 在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \
74. unicode , utf-8 的关系
73. 输出不换行
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
72. 转义符
71.使用斜杠\ 可进行连接
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句,
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \
70.python标准库和第三方库的区别
Python标准库是内置在Python解释器中的,不需要额外安装。而第三方库需要使用pip等包管理工具进行安装
69. python编码规范
在python2中的文件中如果要填写中文,必须要加一行代码用来声明文件编码的注释,否则python2会报错,因为它默认的编码格式是ASCII。而在python3中已经没有这个问题了,python3默认的文件编码是UTF-8
-----------------------------------
68.字符串:in ,find, index ,rfind ,count
- rfind : 输出的是最右侧的匹配到的单词的索引
- find 和index的区别: