当前工作目录
当前工作目录就是指Python中文件和文件夹的默认读写路径
查看:用模块os
的方法:getcwd()
更改:模块os
中的函数:chdir()
注意:1. 更改后的文件夹必须是已经存在的。
2. 更改当前工作目录后仅在“当前会话”中有效,如同,重启后依然回到了默认工作目录
常用文件导入方式:内置函数open()
、第三方库Pandas中的函数read_csv() read_excel()
搜索路径
当变量或是模块被调用时,解释器会到搜索路径上搜索该变量/模块的源代码,如果找不到就说明变量未定义或是模块不存在
变量搜索路径
- 查看:通过内置函数
dir()
dir()函数带参数时,返回参数的属性/方法列表;不带参数时,返回搜索路径上定义的所有变量名 - 新增:赋值语句定义一个新变量
- 删除:通过语句
del
模块搜索路径
模块的路径操作需要借助 sys 模块中提供的属性path
- 查看:
sys.path
sys.path中的第一个条目通常是一个空字符串’ ',表示当前正在使用的字典 - 新增:
sys.path.append()
- 删除:
sys.path.remove()
魔术命令
魔术命令是iPython/Jupyter提供的一些特殊命令,以%开始,主要用于调试代码、运行.py文件,统计内存使用情况和运行时间统计
常用魔术命令
- 查看魔术命令目录:
%Ismagic
- 运行.py文件:
%run
运行当前工作目录下的.py文件,如果不在会报错。 - 查看历史输出结果:
%history
常用的有-n
打印input , 和-o
打印output
在-n 和 -o 后加数字可以指定cell,
如%history -n 2
,就是打印 In[2] ,-n 2-4
就是打印In[2]~In[4] - 查看代码运行时间:
单行代码(行模式):%timeit
加在代码前
多行模式(cell模式):%%timeit(cell模式)
cell模式前不能有包括注释代码类的任何代码 - 查看报错信息:
%xmode
异常信息的显示模式有三种:Context(默认值)、Plain和Verbos
采用哪种模式就在%xmode
后加上就行,控制异常信息显示的详细程度,其参数选项从简到繁分别是Plain、Context、Verbos - 调试程序:
%debug
打开PDB(The Python Debugger)调试器进行程序调试
输入q
或quit
可以退出PDB
前提:有错误发生,既生成一条Traceback后才能使用%debug
常用调试器还有 Pyringe
调试器和解释器不是同一个概念
解释器有PyPy 、CPython 、IPython - 程序运行的逐行统计:
iPython自带:%prun
需要额外安装line_profiler:%lprun
比较麻烦 - 内存使用情况统计:
%memit
先pip install memory_profiler
在用魔术命令%load_exit memory_profiler
最后再使用
异常与错误
异常捕获语句模板
try:
可能发生异常的语句
except Ex1:
如果发生了Ex1
except (Ex2,Ex3):
如果发生了Ex2或Ex3
except:
其余情况
else:
无异常时
finally:
无论是否异常一定执行
异常显示
异常信息的显示参考上面%xmode
异常名称常用的显示方法:
except Exception as e:
print(e)
#或者
#except Exception:
# print(sys.exc_info())
断言
断言(Assertion)主要用于“设置检查点”
表示:assert 检查条件 , 断言信息
条件为真,不抛出断言,反之,抛出AssertionError:断言信息
面向对象编程
在Python中,定义一个类主要用“关键字 class + 冒号 + 缩进”的方式实现
属性
变量的属性:public属性X 、 protected属性_X 、 private属性__X
私有属性定义时不用关键字private,而是用两个下划线来表示,既不能通过类名,也不能通过实例调用
双下划线前缀的属性和方法可以称为“伪私有”属性和方法。通过在带双下划线前缀的变量名前再加上“_类名”,从而可以在类外直接访问
class Student:
name="wang"
_ _age=16
def _ _init_ _(self,name,age):
self.name = name
self.age = age
print(self.name,self.age)
s1= Student("zhang", 18)
s2= Student("li", 20)
print(s2._Student_ _age)
@property装饰器
:将方法或函数以属性的形式调用,函数不能加(),必须通过属性的方式调用
常用类的属性:
__name__
:获取类名__doc__
获取类的文档字符串__bases__
:获取类的所有父类组成的元组__dict__
:获取所有属性和方法组成的列表__module__
:获取类定义所在的模块名__class__
:获取实例对应的类
特殊方法
- 实例方法
实例方法定义语法与一般函数的定义语法类似,区别在于实例方法的第一个形参必须是位置参数self,但是self不是关键字,换个名字也可以
self代表实例的引用,只能出现在形参中,不能出现在其他变量之前,是类变量,可以被类调用,self.变量
是实例变量,和类变量不同 - 类方法
类方法在定义时需要在该方法前面加一行@classmethod
第一个参数必须时类的引用cls - 静态方法
静态方法在定义时,需要在前面加一行@staticmethod
特点:形参中没有cls或self,甚至可以没有任何参数
访问:实例方法可以通过“实例名.函数名”的形式访问,其他两个方法都可以通过类名和实例名访问
常用函数
__init__()
:初始化函数
生成的是实例__new__()
:构造函数
生成的是对象
new函数中的return语句执行之后才执行init__del__()
:析构函数
继承
在定义一个类时,将其父类名放在该类名后的括号中
protected属性可继承,private不可以