Python学习笔记:基础(二)
文章目录
一、函数
完成某一特定功能的小模块。
可以实现参数的赋值,更灵活。
函数文档:‘ … ’,便于理解函数的含义
匿名函数:lamda函数
- 递归:
条件:(1)有终止条件;(2)调用自身函数。
二、文件
- 打开文件:
打开文件函数:open( ),有如下几种模式:
文件对象操作方法:
三、异常处理
- 常见异常
常见异常 | |
---|---|
AttributeError | 尝试访问未知的对象属性 |
AssertionError | 断言语句失败 |
IndexError | 索引超出序列范围 |
OverflowError | 数值超出最大限制 |
SyntaxError | python语法错误 |
- try-except语句
try:
try:
检测范围
except Exception [as reason]:
出现异常后的处理代码
finally:
无论如何都会被执行的代码
四、对象
对象=属性+方法。
对象的特征:封装、继承、多态。
对象是类的实例,类的命名用大写字母开头。
Python是面向对象编程(Object Oriented)的,Python无处不对象。
4.1 类的属性
属性名与方法名重复,属性会覆盖方法。
属性用名词,方法用动词。
- 共有和私有
Python中定义私有变量,只需要在变量名/函数名前加上两个下划线‘__’,那么这个变量/函数就变成私有的了。 → \to → “伪私有”
4.2 类的方法
类的方法分为内部方法和外部方法。
内部方法共有:
>>> dir(a)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
以下是几种常见的类的内部方法。
4.2.1 类的构造与析构方法:
-
self
self:类可以实例得到许多对象,self就是指这个对象,是区分同一类下不同对象的标志。 -
init()
init(self):构造函数,只要实例化一个对象,该方法就是在实例的时候自动运行。
init(self,parm1,parm2,…):通过重写这个方法来自定义对象的初始化操作。parm1,parm2,…成为该对象的默认参数。
只有当需要对实例对象进行初始化操作的时候,才需要显式写出_init()_函数。 -
new()
new: 对象的创建,是一个静态方法,第一个参数是cls。(想想也是,不可能是self,对象还没创建,哪来的self)
先有创建,才有初始化。即先__new__,而后__init__。 -
init()
init(self):构造函数,只要实例化一个对象,该方法就是在实例的时候自动运行。不需要显式写出。init(self,parm1,parm2,…):通过重写这个方法来自定义对象的初始化操作。parm1,parm2,…成为该对象的默认参数。
只有当需要对实例对象进行初始化操作的时候,才需要显式写出_init()_函数。
_init()_函数不可有返回。 -
del()
python的垃圾回收机制。
4.2.2 类的表现方法:
init()函数return为空,所以类有另外的表现方法: str __ 和 __ repr __方法。
class MyClass() :
def __str__(self) :
return "我是MyClass的一个实例"
def __repr__(self) :
return "这回连print都省了"
a = MyClass()
>>> print(a)
我是MyClass的一个实例
>>> a
这回连print都省了
类可以做算术运算。
4.3 类的继承
子类中定义与父类相同名字的方法/属性,会被覆盖。
super函数用于继承与父类方法相同的函数。
不要试图在一个类中定义所有能想到的特性和方法,应该用继承和组合来加以拓展。
class DerivedClassName(BaseClassName):
...
五、模块
模块就是程序,模块将程序分块封装,提高程序可读性。
-
模块的导入:
方法1: import 模块名(不写后缀.py) 方法2: from 模块名 import 函数名 from 模块名 import * (导入模块中所有函数/变量) 方法3: import 模块名 as 简写的新名字
-
if __ name__="__ main __":
该语句所在的模块,是正在运行的主模块/主函数。 -
搜索路径
待导入的模块一般需要和需要的程序模块在同一目录下,若没有在,需要将目录导入搜索路径中。
import sys
sys.path # 程序所在路径
sys.path.append("待添加路径") # 待添加路径
- 包(package)
创建包的步骤:
必须在文件夹中创建一个__init__.py文件,告诉Python这是个包。
包的调用:
import 包名.模块名
-
OS模块
OS模块:操作系统模块数 作用 istdir(path=’’) 列出指定目录下所有文件名 akedir(path) 创建单层目录 akedirs(path) 创建多层目录 emove(path) 删除目录文件 mdir(path) 删除单层目录 s.path.join(path1,path2) 将path1、path2各部分合并成一个路径 s.path.split() 分割文件名和路径,返回(f_name,f_name)元组。
六、下划线的5种含义
下划线类型 | 含义 |
---|---|
单前下划线_var | 单个下划线前缀有一个约定俗成的含义:以单个下划线开头的变量或方法仅供内部使用(私有变量)。但这不是Python强制规定的,是一种约定。 |
单末尾下划线:var_ | 一个变量的最合适的名称已经被一个关键字所占用。 因此,像class或def这样的名称不能用作Python中的变量名称。 在这种情况下,你可以附加一个下划线来解决命名冲突 |
双前导下划线:__var | 双下划线前缀导致Python解释器重写属性名称,以避免子类中的命名冲突,叫做名称修饰 —解释器更改变量的名称,以便在类被扩展的时候不容易产生冲突。 |
双前导和末尾下划线:__ var __ | Python类的内部方法 |
单下划线:_ | (1)单个独立下划线是用作一个名字,来表示某个变量是临时的或无关紧要的。 (2)“_”是个特殊变量,表示由解释器评估的最近一个表达式的结果。 |
from 《零基础入门学习Python》(小甲鱼)