Python基础知识整理

## 基于《HeadFirstPyhon》和《Python编程从入门到实践》两本书的Python基础部分

在找实习面试期间,碰见了一个Python基础的问题,list和tuple的异同
因为之前直接上手Python,用到了才查具体的语法,所以Python基础方面并不扎实
所以对这方面进行了补充,阅读了两本书关于Python基础语法的部分,跳过了web等部分
不过相对而言Python基础部分确实比java等语言要简单一点,并且多数书籍有相同部分
而且主要关注下基础部分,会应用就可以了,不用深挖具体的
所以简单罗列了下与其他语言不同的部分,以及较为重要的知识点,方便准备面试
## 注:不限Python版本,2.7与3.5之间的差别也会有所标注

1、Python单双引号没有区别,大小写敏感
2、list[0]返回列表的第一个,list[-1]返回最后一个
3、Python的标识符规则:
开头必须是一个字母或者下划线,由字母数字下划线以及斜杠"/"组成
4、list是动态列表,包括append,pop等动态更新列表的方法
   tuple是不可变列表,称为元组
5、list中的数据可以是不同类型的,也可以是列表
6、常用的BIF内置方法:
isinstance(name, list) 判断是否是某个数据类型的
len(a) 返回参数的长度,a可以是字符串,列表等
range(x) 从[0,x),默认步长是1,也可以设置,左闭右开
enumerate() 创建成对数据的一个编号列表,从0开始
open('路径,相对路径或者绝对路径都可以','打开方式,只读,写入,附加模式') 打开文件
seek() 返回到文件的初始位置
split('标识符') 按标识符分割字符串,将结果存入列表list中
find() 从字符串当中找到指定子串,并返回索引
strip() 去除字符串中的空白符
rstrip(),lstrip()分别代表去除字符串结尾和开头的空白符,也就是right和left的缩写
locals() 返回当前作用域中定义的所有名的一个集合
dir() 可以查看提供了什么内容
7、创建一个函数def 函数名(参数),参数不用先声明数据类型
8、模块:包含Python代码的文本文件,以.py结尾,然后能用import加载模块
   便可以然后使用该模块中的函数和类等,也可以from模块import函数,直接加载函数
9、主程序中的代码与__main__命名空间相关联,增加第二个函数会让模块的API过于复杂
10、BIF会自动导入到__main__命名空间中
11、函数声明时,参数可以设置默认值,后面也可以覆盖默认值
12、对于文件操作,通常是打开——处理——关闭,不过用with会省略掉关闭操作
with open('/test.txt', 'w+') as test
13、对于异常的处理就是先让错误处理try,然后监视它的发生except,与java类似
14、pass代表空语句,跳过
15、异常包括多种IOError,ValueError等,可以捕获异常的类型,然后except进行特定异常的处理
16、写入文件的操作为print('内容', file)
17、字符串本身是不可变的,只不过是有另一个变量指向了它
18、尽管可以让Python变量赋数据,但实际上变量并不包含所赋数据
19、Python知道有多少个变量在指示某个特定的字符串,是为了垃圾回收
20、Python的标准库pickle可以保存和加载几乎任何数据对象,包括列表,使用很简单,
    dump()保存数据,load()加载数据,不过必须以二进制打开
21、腌制:将数据对象保存到一个持久存储的文件中的过程
22、原地排序,用排序的数据替换原来的数据sort(),原来的顺序就没了
    复制排序,对一个同样的副本进行排序,原数据的顺序进行保留sorted()
    并且两种排序方法默认的都是升序操作,要实现降序可以加入一个参数reverse=True
23、方法串链,从左到右多个方法,比如data.strip().split(','),先执行strip,再执行split
    函数串链,从右到左,比如print(sort(data)),先执行右边的sort,再执行print
24、Python可以对字符串进行排序,除去字母顺序外,短横线_排在点号.前面
25、for循环的简写形式
比如:   clean_key = []
for each_t in mikey:
    clean_key.append(santize(each_t))
相当于:
clean_key = [santize(each_t) for each_t in mikey]
26、list[0:x]取列表list的前x位,不包括第x位,因为索引是从0开始的
27、set()代表集合,符合集合的要求,即不重复,会自动去重
28、字典,也就是动态存储的键值对,创建方式有两种{},或者dict()函数创建
29、字典查找用键,而不是索引
30、用class创建类,__init__用来初始化对象,包括对象的属性,同样用def定义
    没有构造函数的概念,会自动完成对象的创建
31、类中每一个定义的方法(包括每一个类都有的__init__方法)都有self
32、在一个对象实例上调用类方法时,self总是指向当前对象实例
    而Python要求第一个参数是调用对象的实例,所以必须是self
33、列表中的append方法增加一个元素,而extend增加一个list
34、继承现有的类来创建新的类要把父类写在子类的括号里,
比如 class Namelist(list):
              def __init__(self, a_name):
              name.__init__([])
      # 初始化所派生的类
      self.name = a_name
      # 把参数赋至属性
继承Python自带的list类
35、Python与Java不同,支持多继承
36、Python中变量不用事先声明,并且可以更改变量的值或者类型
37、\t制表符,\n换行符,/r避免转义
38、Python 2.7中 / 号整数相除结果为整数,而3.5中得到的则为小数结果
39、列表的方法:
    pop()默认是删除最后一位,也可以加上索引删除某一位
    insert(索引,元素) 向某个索引位置插入元素
    reverse() 倒置
    关于列表的复制:采用省略起始索引和终止索引的方式,即new_list = list[:]
40、元组中单个元素不可以更改,但是可以给整个元组重新赋值
41、and表示并且,or表示或者,not表示否
42、遍历字典的方法:for key, value in items:返回字典的键值对列表
    values返回的值是一个字典值的列表,keys()方法放回的是字典的键,也是列表
43、Python中用input()实现键盘输入
44、break语句会跳出当前循环,continue语句会忽略剩下的代码,返回循环开始的地方,执行下一次
45、创建包含任意数量实参的函数:采用"*"号,比如*toppings代表一个名为toppings的空元组
46、创建包含任意数量的关键字实参的函数:采用两个**号,让Python创建名为toppings的空字典
47、Python类中定义的函数没有return,但是会自动返回一个表示该类的实例
48、在Python 2.7 中要创建类的话,跟3.5不同的是要求必须有关键词object对象
49、class 子类(父类):
           def __init__(接受父类所需要的信息):
               super().__init__(父类的信息)
       # 初始化父类的属性
在Python 2.7 中,super函数要有两个实参,是子类名和self
50、子类要重写父类中的函数,只要写个和父类该函数同名即可
51、附加模式,'a'也就是说可以往文件的末尾添加内容
52、存储数据的JSON,可以将简单的数据结构存储在文件中,并在程序再次运行时加载该文件中的数据,
还可以在Python程序之间分享数据
import json json.jump() json.load()用法和pickle类似?
53、代码测试
    Python有专门的代码测试工具,unittest,可以创建一个继承了unittest.TestCase的类
    然后用其中的self.assertEqual(测试函数的结果,理想结果),结果为OK,则程序正确
54、单元测试:为了测试函数的某个方面没有问题   测试用例:一组单元测试,测试函数整体没有问题

你可能感兴趣的:(Python)