随笔分类 - 01_Python
摘要:python-多线程 1. 什么是线程 在了解线程前,我们需要首先了解一下进程,并了解其与线程之间的关系。 1)进程可以看做一个独立的应用,而线程却不可以; 2)进程有自己独立的内存地址空间(即不共享内存,并互不影响), 线程只是进程的不同执行路径,线程没有独立的内存地址空间; 3)一个进程最少包含
阅读全文
摘要:文件夹的基本操作 1、判断某个路径是文件还是文件夹 1 import os 2 3 #1. os.path.isfile判断是否为一个文件 4 #2. os.path.isdir判断是否为一个文件夹 5 print(os.path.isfile('E:\\testdir')) 6 print(os.
阅读全文
摘要:python编程规范 变量命名 全部小写,由下划线连接各个单词,比如home_addr 注意 1)不论是成员变量还是全局变量,均不使用m或g为前缀 2)变量名不应该带有类型信息,因为python是动态语言类,比如name_list,stu_info_dict等都不可以 常量命名 所有字母大写,由下划
阅读全文
摘要:单例模式 简述 对于特定类只允许存在一个实例对象。 UML python实现 代码思路 每次创建对象时,先检查该类的实例对象是否存在,如果存在,则直接返回, 如果不存在,则直接调用父类的__new__方法创建新的对象实例并保持在类的属性中, 最后将其返回。 python是如何创建对象的? 首先调用_
阅读全文
摘要:python-操作excel 安装xlrd,xlwt pip install xlrd pip install xlwt 栗子 读取excel文件 写入excel 对excel操作进行封装 opera_excel.py
阅读全文
摘要:操作json loads 将字符串转换成python对象 load 从文件中加载解析成一个python对象 user_info.json dump 把一个python对象以json的形式写入文件 dumps 将一个python对象转换成json 对json操作进行封装
阅读全文
摘要:异常 简述 异常可以看作是打破程序正常执行流程的错误事件。 异常的使用场景 (1)网络请求(超时,连接错误等) (2)资源访问(权限问题,资源不存在) (3)代码逻辑(索引越界,KeyError) 异常处理 自定义异常 继承Exception实现自定义异常 给异常加一些附加信息 处理一些业务相关的特
阅读全文
摘要:Effective Python - 函数 14.尽量用异常来表示特殊情况,而不要返回None (1)如果令函数返回None来表示一些特殊意义,调用者很容易写出错误的代码,因为None,0,空字符串,空列表一类值,在条件表达式中会被判定为False。 说明:我们一般不会去判定函数的返回值是否为Non
阅读全文
摘要:python-编码惯例 (1)只有模块作为脚本运行时才执行其中的代码 (2)判断逻辑真和逻辑假 好的代码 不好的代码 (3)善于使用in操作符 好的代码 不好的代码 (4)不使用临时变量交互两个变量的值 好的代码 不好的代码 (5)用序列构建字符串 好的代码 不好的代码 (6)EAFP优于LBYL
阅读全文
摘要:装饰器 简述 如果我们想给一个类扩充功能,我们可以通过继承和组合,但是如果我们如果想给一个方法添加额外的功能呢? 装饰器可以满足这个需求。 装饰器是一个可调用的对象,其参数是一个函数,这个函数通常称为被装饰的函数。 装饰器可能会处理被装饰的函数,然后返回一个函数或一个可调用对象。 来个栗子,有一个名
阅读全文
摘要:变量作用域 局部变量 python不要求声明变量,但是在函数体内赋值的变量,都会被当作局部变量。 但是如果我把赋值语句写在print语句之后呢? 为什么会报错呢? 其实在python编译函数fun的时,已经把函数体内的name当作局部变量, 但是在执行函数体内的打印语句执行时,name此时还未被赋值
阅读全文
摘要:Effective Python 1.确认自己所用的Python版本 优先使用python3,抛弃python2 查看python版本信息: python --version 2.遵循PEP8风格指南 采用一致的编码风格令代码更加易读,利于多人协作 绝对应该遵守的规则 空格 (1)使用space来表
阅读全文
摘要:类与对象 创建类 通过关键字class创建一个Player类,来个栗子 创建对象 通过类实例化两个对象,来个栗子 添加属性 举个栗子 面向对象的重点在于不同对象之间的交互 为类添加一些行为,当这些行为触发时,可以改变对象的属性,举个栗子 参数self self是对方法所调用对象的引用 类中定义的函数
阅读全文
摘要:迭代器与可迭代对象 简述 迭代是数据处理的基石。扫描内存中放不下的数据集时,我们要找到一种惰性获取数据项的方式,即按需一次获取一个数据项。这就是迭代器模式 迭代器 迭代器是这样一个对象,实现了无参数__next__方法,返回序列中的下一个元素, 如果没有元素了,那么抛出StopIteration异常
阅读全文
摘要:生成器 简述 如果函数中有yield关键字,那么这个函数就是生成器函数, 每次调用该函数都会返回一个生成器对象。 生成器是一个迭代器,但是迭代器不一定是一个生成器 举个栗子 生成器工作原理 以下面的代码为例来说明 说明 (1)当调用生成器函数时,会创建一个生成器对象(gen1),这个对象包装生成器函
阅读全文
摘要:浅拷贝和深拷贝 简述 深浅拷贝的差异仅对复合对象有意义,比如列表,类实例。 浅拷贝 拷贝的副本共享内部对象的引用的拷贝为浅拷贝 举个栗子 通过类构造函数对list1进行了浅拷贝,通过id(list1)和id(list2)可知list1与list2是两个不同的对象, 但是list1和list2共享内部
阅读全文
摘要:python-lambda、map、filter、reduce lamdba python关键字,用于在表达式中创建匿名函数。 注意:lambda函数的定义体只能用纯表达式,不能赋值,不能使用while和try等语句。 lamdba的语法 lambda 参数列表:return expression
阅读全文
摘要:列表解析、字典解析、集合解析 列表解析 生成一个列表 代码描述: 表达式(num**2)用于生成你要存储到列表中的值 for循环(for num in nums) 用于给表达式供值 条件判断(if x <= 5)表示供值的元素应满足的条件 字典解析 生成一个字典 集合解析 返回一个集合
阅读全文
摘要:变量与参数传递 理解变量 抛弃变量是存储数据的盒子这一错误观念, 可以把python变量理解为附加在对象上的标注 来个栗子 说明:a和b引用同一个列表,而不是这个列表的副本,当为a添加一个元素时,a,b都发生改变并指向同一个列表, 很明显用变量是存储数据的盒子这一观念无法解释。 变量赋值 在pyth
阅读全文
摘要:函数 简述 函数是带名称的代码块,用于实现某项具体的功能,可以通过调用函数来执行完成某项功能的代码。 函数定义 通过def来定义一个函数 调用函数 通过函数名和小括号()来调用调用函数时,必须将函数中调用中的每个实参都关联到函数定义中的每一个形参 传递实参 (1)位置实参 python按顺序将函数调
阅读全文

浙公网安备 33010602011771号