会使用命令行启动python(大家应该都会吧,命令行中输入python即可)
会使用anaconda3中的spyder使用IPython
会使用Jupyter notebook来写笔记
会使用TAB
,?
,??
,%run
等命令
了解IPython的快捷键
了解IPython常用的魔术命令比如%debug
,%reset
,%time
等
了解matplotlib
在IPython和Jupyter中的不同开启方式
会使用使用四个空格和缩进
会使用;
在一行内将多条语句进行分隔
会使用#
注释一行代码
理解位置传参和关键字传参的区别
理解对变量的赋值其实是创建了一个引用这个实质, 以及两个引用指向同一个对象这个情况
理解变量对于对象来说只是一个特定命名空间中的名称, 而类型信息是包含在对象自己内部的概念
理解Python是一种强类型语言的概念. 即所有的对象都拥有一个指定的类型.
isinstance()
函数可以检查对象是否是某种类型
了解属性和方法的概念
getattr()
函数可以用来获取属性和方法
了解反射的概念
了解鸭子类型的概念
会导入模块, 模块中的变量和函数和使用as进行重命名
掌握python中的二元操作符(比如//
,**
,is
,is not
)等
了解常见的不可变对象(大部分都是可变的, 所以记住不可变对象就可以了)
了解int
与float
类型取值范围的不同
'''
可以用来表示含有换行的字符串
了解字符串的count()
,replace()
方法
了解str()
函数可以转化python对象为字符串
了解转义符号和原生字符的表示方法
了解format()
以及传入一些简单的参数来控制输出的方法
了解字符串的encode()
,decode()
方法可以应用于转换Unicode
字符与UTF-8
字符
了解str
,bool
,int
,float
既是数据类型, 也是可以将其他数据转化为这些类型的函数
理解None
类型既是一种数据类型, 并且了解其作为函数隐式返回值和函数参数默认值的用途
掌握datetime
模块的属性(day
,minute
等)和方法(date
,time
等)
会使用strftime()
方法将datetime对象转化为字符串
会使用strptime()
方法将字符串转化为datetime对象
了解两个不同的datetime对象会产生一个datetime.timedelta
类型的对象
掌握datetime的格式化
掌握if
,elif
,else
语句的用法
掌握for
,while
语句以及continue
,break
,pass
的用法
掌握range()
函数的用法
掌握三元表达式value = true-expr if condiition else false-expr
的用法
会使用,
定义元组
会使用tuple()
函数将任意序列或者迭代器转化为元组
理解元组一旦创建, 各个位置上的对象不能被修改, 但是其中若有可变对象比如列表, 那么这个列表还是可以进行修改的概念
会使用[]
来获取元组中的元素
会使用+
连接元组, *
生成多份拷贝
掌握拆包的概念以及用拆包用来遍历元组或者列表的的方法
理解a, b = b, a
交换两个变量的值的方法
了解*rest
可以在函数调用时获取任意长度的位置参数列表,*_
常用来表示不想要的变量
会使用[]
定义列表
会使用list()
函数将迭代器或者生成器转化为列表
掌握append()
,insert()
,pop()
,remove()
方法以及in
,not in
关键字的用法
了解相比字典, 集合而言, 检查一个列表中是否包含一个值是非常缓慢的, 前者同时检查所有元素, 后者线性扫描
会使用+
或者extend()
方法来连接或者联合列表
掌握sort()
方法以及其自身的一些选项的用法
会使用bisect
模块的bisect()
及insort()
方法. 二者分别是二分查找和插入的实现.但注意该模块不会检查列表是否已经排好序
掌握切片的操作方法以及理解当start或者stop为负数时切片的规则
掌握enumerate()
函数的用法, 常用方式比如for i,value in enumerate(...)
, 其中i就是元素的索引
会使用sorted()
函数返回一个新的已排序列表
掌握zip()
函数配对的功能, 了解它生成列表的长度由最短的序列决定的特性
掌握zip()
函数用来将行的列表转化为列的列表的方法
会使用reverse()
函数将序列的元素倒序排列
会使用{}
创建一个字典
会使用in
,not in
,del
等关键字
会使用pop()
,get()
,keys()
,values()
,update()
等方法
会使用dict()
函数生成元组
会使用setdefault()
方法来设置默认值
了解defaultdict
类
理解字典的值可以是任何python对象, 但是键必须是不可变的对象.
会使用hash()
函数检查一个对象是否可以哈希化.
了解将列表作为键的一种方式就是将其转化为元组
理解集合是一种无序且元素唯一的容器
会使用{}
来定义集合
会使用set()
函数来生成集合
掌握常用的集合操作, 注意很多操作都可以通过位运算那种操作符和等号比如a&b
,a&b
来进行
了解集合的元素也是不可变的. 如果要包含列表型的元素, 必须先转化为元组才行
理解列表推导式
会使用列表推导式expr for val in collection if condition
, 并使用其生成集合与字典
会使用嵌套列表推导式比如可以用doublelevel = x for tup in sometulpes for x in tup
将含有整数元组的列表扁平化为一个列表
会使用def
来定义一个函数
理解位置参数和关键字参数的区别及用法, 比如def my_function(x,y,z=1.5)
, 那么我们可以有my_function(5,6,z=0.7)
,my_function(3,7,3.5)
,my_function(1,2)
等方式来调用. 当然我们也可以使用关键字参数向位置参数传参my_function(x=1,y=2,z=3)
,my_function(y=1,x=2,z=3)
理解命名空间可以用来描述变量作用域, 而函数有两种连接变量的方式:全局,本地
掌握global
关键字的用法,global
关键字允许你修改当前范围之外的变量。在函数中,我们只能访问全局变量但是不能修改它。这时就需要使用global
关键字.
理解全局变量可以在模块中被共享
会使用函数返回多个值及用拆包的方式得到返回的多个变量
会使用正则表达式模块re
来对数据进行一些处理
理解python中的函数也是对象这个概念, 比如函数可以作为列表中的一个对象
了解匿名函数lambda
可以通过单个语句生成函数的特点, 比如double_function = lambda x : x * 2
, y = double_function(1)
理解柯里化的概念, 它表示通过部分参数应用(给出)的方式来从已有的函数中衍生出新的函数. 内建的functools
模块可以使用pratial()
函数简化这种处理
掌握迭代器的概念. 迭代器是一种用于在上下文中向python解释器生成对象的对象, 大部分以列表或列表型对象为参数的方法都可以接收任意的迭代器对象. 比如
some_dict = { 'a' : 1, 'b' : 2, 'c' : 3}
dict_iterator = iter(some_dict)
dict_iterator
Out[19]:
list(dict_iterator)
Out[20]: ['a', 'b', 'c']
掌握生成器的概念. 普通函数执行一次返回单个结果, 但是生成器则"惰性"地返回一个多结果序列, 在每一个元素产生之后就会暂停, 直到下一个请求.
会使用yield
关键字来代替return
从而创建一个生成器.
def squares(n=10):
for i in range(1,n+1):
yield i**2
a = squares()
a
Out[28]:
for x in a:
print(x)
了解创建一个生成器表达式的方式就是只需将列表推导式中的中括号替换为小括号即可a = ( x ** 2 for x in range(100))
, 这里a就是一个生成器
掌握itertools
模块中的一些常用函数的使用比如groupby()
, 该模块还可以帮助生成排列与组合.
会使用try
/except
代码段来捕获和处理异常, 而finally
关键字则可以使try
代码块是否正确都会执行finally
代码块中的代码. 同时else
关键字可以执行当try
代码块成功执行 (不是不成功执行)时才会执行的代码.
掌握使用%run
执行一个脚本或者是语句报错时的报错溯源, 从上往下最先抛出的就是最外层的错误. %xmode
可以使用Plain
或者Verbose
模式来控制上下文的数量
掌握open()
函数传入路径来调用文件的方式. 默认请款下以只读模式r
打开. 我们可以像处理列表一样处理一个文件f
, 比如(f = open(path_string, 'r')
)
会使用close()
函数手动关闭文件.
会使用with
语句自动关闭文件with open(path_string) as f
掌握open()
函数里的参数r
,w
,x
,a
,r+
,b
,t
等的意义
会使用文件对象的write()
和writelines()
方法向文件中写入东西, 会使用read()
,readlines()
方法读入文件内的内容.
理解read()
,seek()
,tell()
方法的不同, read()
读取给定长度的字符, seek()
改变句柄的位置到特定的字节, tell()
给出句柄当前的位置
理解UTF-8
是一种可变长度的Unicode编码, 比如普通的字符占一个字节, 但是可能某个UTF-8
编码的字符占两个字节. 那么如果解码刚好结尾是这个字符的后一个字节, 那么就会出现错误.
会使用open()
方法中的encoding
参数来将Unicode参数转换为其他类型的编码.
注意使用seek()
时要小心, 不要把句柄放到一个Unicode符号的字节中间, 这样后续的读写会出现问题