python必备
最近C++用的有点多,复习一下python,看到自己2年前刚入门python的时写的笔记,写在博客里,一方面分享给python入门小白(大佬请忽视),另一方面一些容易忽视的点也再提醒一下自己。
基础部分
- Geany是一款简单的文本编辑器,比较好用,在Linux系统可以使用
sudo apt-get install geany
命令进行安装。 - 字符串中我们使用.title()函数可以使的单词首字母大写
- 删除字符串首尾空格的函数有如下函数,但是需要注意的是,这种删除只是暂时的,接下来再次询问时会发现这个字符串和原来还是一样的,因此经常讲删除操作后的结果存回到变量中
.lstrip() #删除字符串开头的空白
.rstrip() #删除字符串结尾的空白
.strip() #删除字符串首尾的空白
4.在python中使用两个乘号表示乘法运算
5.可以调用函数str()让python将非字符串值表示为字符串
6.在python3中两个整数相/,如果有小数会保留小数,但是python2中会类似于C++中结果为整数
7.什么是可变/不可变对象不可变对象
该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是原地改变。
Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型。
8.append()可以在列表末尾添加元素,insert()可在列表的任何位置添加元素,可以使用del()删除指定位置的元素,使用pop()可以删除列表的末尾元素并且可以使用它。如果知道要删除的值可以使用remove()函数,但是需要注意的是remove只删除第一个指定的值,如果要删除的值可能在列表中出现多次则需要使用循环来判断是否删除了所有的这样的值。
9. sort()函数可以将列表中的元素按照字母顺讯进行排序,另外只需要向sort()方法中传递参数reverse=True将可以按与字母顺序相反的顺序进行列表元素的排序。注意的是sort会永久的改变列表中元素的顺序;sorted()方法可以进行临时排序,这样并不会改变原来的顺序。
10. reverse()永久的修改列表中的【排列顺序】
11. len可以快速获取列表的长度
12. 我们可以使用range函数轻松的生成一系列的数字,例如
for i range(1,5):
print (i)
另外在使用range函数时还可以使用步长例如range(2,11,2)
,这里面最后一个数是步长
13.列表解析在python使用中是非常重要的,因为这会帮助我们减少代码,如下:
nums = [val**2 for val in range(2,15,2)] #注意这里的for语句末尾没有冒号
14.访问列表中的部分元素可以使用切片。
[a:b]
表示从a开始到b的前一个元素停止[a:]
表示从a开始到末尾[:b]
表示从头开始到b的前一个元素[-3:]
负数表示返回距离末尾相应距离的元素,比如这个例子就代表最后3个元素。
15.元组是不可变对象,其与列表类似,但是使用圆括号而不是方括号来标识。
16.判断特定值是否包含在列表中使用in 判断不在列表中使用not in
17.python中可以先创建一个空字典,字典用大括号,然后在添加键值对
18.如果想删除字典里面的键值对那么可以使用del直接删除例如
del name['jack ma']
这样把键jack ma 和其对应的建值都进行了删除
19.python的字典中采用items()来遍历字典中的键值对,其中返回两个值分别为键和值。采用keys()表示键,采用values()表示值
20.对待列表中重复的元素可以采用set来进行去重
21.我们在函数中使用列表时,有时候希望禁止函数修改列表,可以采用切片法构造副本,然后进行编写程序,这样不会改变初始的值。
func(origin_num[:],new_nums)#这样就创建了一个origin_num的副本
22.在函数调用语句中收集任意数量的形参,使用* 来解决这个问题。
23.学习python的list,tuple,dict,set的时候被插入和删除的用法归纳如下:
对于List:
classmates = [‘Michael’, ‘Bob’, ‘Tracy’]
classmates.append(‘Adam’) //添加在末尾,没有add()方法
classmates.insert(1, ‘Jack’) //在指定位置添加
classmates.pop(1) //在知道位置删除,参数是索引
del classmate[1] //删除第二个元素
classmates.remove(‘Bob’) //参数是元素,删除第一个与Bob值匹配的元素,之后又相同元素不会删除
对于dict:
d = {‘a’: ‘A’, ‘b’: ‘B’}
del d[‘a’]
d.pop(‘a’) //参数是key,没有remove()方法
d[‘c’]=‘C’; //插入直接赋值即可
对于set:
s={1,2,3} //set对象的创建也可以是s=set(iterable)
s.add(8) //添加8到末尾 没有append()方法
s.remove(8) //参数是元素,不是索引 删除8
s.pop() //删除最后一个元素
对于tuple:
由于tuple一旦初始化就不能修改,所以不能插入和删除
24.在python中首字母大写的名称指的是类可以用6个双引号来编写一个文档字符串,对类的功能进行描述。
25. init()是一个特殊的方法,每当我们根据一个类创建新实例时,python都会自动运行它。在这种方法中开头和结尾都有两个下划线,这是一种约定,旨在避免python默认方法与普通方法名称冲突。
26.类中的每一个属性都必须有初始值,哪怕这个值是0或空字符串。在有些情况下,如设置默认值时,在方法__init__()内指定这种初始值是可行的,如果我们对这个属性这么做了就无需包含它提供初始值的形参。例如
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.oldnum = 0
- 在python中同样有类的继承,super()是一个特殊的函数,帮助python将父类和子类关联起来,此外也同C++一样可以在父类中对子类进行重写。
28.有个OrderedDict的库,这个库可以保留字典的顺序。
29.在命名规则上,类名中的每一个单词的首字母都要大写不使用下划线,在实例名和模块名中都采用小写格式,并在单词之间加上下划线。
30.在类中可以使用一个空行来分隔方法,而在模块中可使用两个空行来分隔类。
31.关键字with在不在需要访问文件时将其关闭。
32.处理异常:
我们可以采用try except模块进行异常处理。例如:
try:
print(3/0)
except zeroerror:
print("you can not divide by zero")
try模块内只写异常的代码
其他的仅在try代码成功执行时才需要执行的代码需要放在else中。
这就是常见的try except else 代码块
33. json格式的数据,我们可以使用json包来存储数据,json.dump()接受两个实参:要存储的数据以及可以用于存储数据的文件对象。json.load()加载存储在json文件中的信息,然后可以存储到想要存储的变量中。
34. 可以使用unittest类进行函数和类的测试。
在继承unittest.TestCase的类中可以使用断言这些方法,比如assertEqual(a,b)和assertNotEqual(a,b)等。