Python进阶 | 魔术命令,路径,异常,面向对象编程

当前工作目录

当前工作目录就是指Python中文件和文件夹的默认读写路径
查看:用模块os的方法:getcwd()
更改:模块os中的函数:chdir()
1
注意: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)调试器进行程序调试
    输入qquit 可以退出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不可以

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值