06 2018 档案
摘要:1. 什么是反射? 反射就是通过字符串来操作类或对象的属性 2 .反射的方式由四种:hasattr 、 getattr 、 setattr 、 delattr hasattr(obj,attrib) 判断对象是否存在这个属性,存在就返回True getattr(obj,attrib,None) 判断
阅读全文
摘要:1. isinstance(obj,class) 判断对象obj是不是由class生成的对象。 obj是Foo的生成的对象,返回True。如果不是,则返回False。 2.issubclass(class,parent) 判断class是不是parent的子类
阅读全文
摘要:'''1、绑定方法 特性:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入 《《《精髓在于自动传值》》》 绑定方法分为两类: 1.1 绑定给对象方法 在类内部定义的函数(没有被任何装饰器修饰的),默认就是绑定给对象用的 1.2 绑定给类的方法: 在类内部定义的函数如果被装饰器@cla
阅读全文
摘要:#property装饰器用于将被装饰的方法伪装成一个数据属性,在使用时可以不用加括号而直接引用# class People:# def __init__(self,name,weight,height):# self.name=name# self.weight=weight# self.heigh
阅读全文
摘要:'''1、什么封装 封:属性对外是隐藏的,但对内是开放的 装:申请一个名称空间,往里装入一系列名字/属性2、为什么要封装 封装数据属性的目的 首先定义属性的目的就是为了给类外部的使用使用的, 隐藏之后是为了不让外部使用直接使用,需要类内部开辟一个接口 然后让类外部的使用通过接口来间接地操作隐藏的属性
阅读全文
摘要:instantiate abstract class Animal with abstract methods eat, speak:用抽象方法实例化抽象类动物吃,说
阅读全文
摘要:# 在子派生的新方法中重用父类功能的两种方式# 方式一:与继承无关#指名道姓法,直接用:类名.函数名# class OldboyPeople:# school = 'oldboy'## def __init__(self, name, age, sex):# self.name = name# se
阅读全文
摘要:#coding:utf-8 # python2中指定文件头'''1、菱形继承 当一个子继承多个父类时,多个父类最终继承了同一个类,称之为菱形继承2、菱形继承的问题: python2区分经典类与新式类,如果子的继承是一个菱形继承,那么经典类与形式的区别为? 经典类下查找属性:深度优先查找 深度查找:比
阅读全文
摘要:'''1、什么是组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外外一个类的对象2、为何用组合 组合也是用来解决类与类直接代码冗余问题的3、如何用组合class OldboyPeople: school = 'oldboy' def __init__(self, name, age, s
阅读全文
摘要:#派生:子类中新定义的属性,子类在使用时始终以自己的为准# 先定义的子类,再从子类中提取相同的属性,放在父类中,子类再继承父类。class OldboyPeople: school = 'oldboy' # 将子类中重复的属性拿到父类中 def __init__(self,name,age,sex)
阅读全文
摘要:1.什么是继承? 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类。 继承的特性是:子类会遗传父类的属性。 强调:继承是类与类之间的关系。 2.为什么要用继承? 继承的好处是减少代码的冗余。 3.如何用继承? 在python中支持一个类继承多个父类。 在python3中,如果一个类没有继
阅读全文
摘要:#在python3中统一了类与类型的概念,类就是类型class OldboyStudent: school='oldboy' def __init__(self, x, y, z): #会在调用类时自动触发 self.name = x #stu1.name='耗哥' self.age = y #st
阅读全文
摘要:class OldboyStudent: school='oldboy' count=0 # 对象共有的数据属性 def __init__(self, x, y, z): #会在调用类时自动触发 self.name = x #stu1.name='耗哥' self.age = y #stu1.age
阅读全文
摘要:class OldboyStudent: school='oldboy' def choose_course(self): print('is choosing course')stu1=OldboyStudent()stu2=OldboyStudent()stu3=OldboyStudent()
阅读全文
摘要:面向对象编程定义以及类定义的过程还有几个强调的点要注意。'''面向过程编程: 核心是过程二字,过程指的是解决问题的步骤,即想干什么再干什么后干什么。。。 基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式 优点: 复杂的问题流程化、进而简单化 缺点: 可扩展性差面向对象编程: 核心是对
阅读全文
摘要:面向对象和面向过程比较 面向过程: 核心是过程,过程指的是解决问题的步骤,即先干什么再干什么然后干什么 基于该思想写程序好比在设计一条流水线,是一种机械式的思维方式。 优点:复杂的问题流程化,进而简单化 缺点:扩展性差 面向对象: 核心是对象:对象是特征与节能的结合体。 基于该思想编写程序就好比是在
阅读全文
摘要:import configparserconfig=configparser.ConfigParser()config.read('config.ini') #a.cfg a.ini a.cnf# 并不是字典 key = value 形式# print(config.sections()) # 查看
阅读全文
摘要:parse(文件名)打开文件并解析,相比于xml少了打开文件那一步 from xml.etree import ElementTree as ET # 直接解析xml文件 tree = ET.parse("xo.xml") # 获取xml文件的根节点 root = tree.getroot() 通过
阅读全文
摘要:其他的看我前面的博客import shutil# 将文件内容拷贝到另一个文件with open('old.xml','r') as read_f,open('new.xml', 'w') as write_f: shutil.copyfileobj(read_f,write_f)# 将文件打包到当前
阅读全文
摘要:1.什么是hash? hash是一种算法,该算法接受传入的内容,经过运算得到一个hash值。 如果把hash算法比作一个工厂,那么给hash算法的内容就是原材料,生成的hash值就是得到的产品。 2.为何使用hash算法? hash值有三大特性: 1.只要传入的内容一样,得到的hash值必然是固定的
阅读全文
摘要:1.import sys# sys.path# sys.argv # 用来接收python解释器执行py文件后跟的参数#例如:python cp.py argv1 argv2 arg3#sys.argv=['cp.py','argv1','argv2','argv3']print(sys.argv)
阅读全文
摘要:print(re.findall('\w','hello 123_ */-=')) #匹配所有字母,数字,下划线print(re.findall('\W','hello 123_ */-=')) # 匹配所有非字母,数字,下划线print(re.findall('\s','hell\no 12\t3
阅读全文
摘要:import osprint(os.getcwd())print(os.listdir(r'D:\s2视频目录\day18'))print(os.listdir('.'))print(os.listdir('..'))os.chdir(r'D:\s2视频目录\day08')print(os.getc
阅读全文
摘要:import random 1 import random 2 3 print(random.random())#(0,1) float 大于0且小于1之间的小数 4 5 print(random.randint(1,3)) #[1,3] 大于等于1且小于等于3之间的整数 6 7 print(ran
阅读全文
摘要:import pickle# #1、从文件中读取pickle格式with open('egon.json','rb') as f: pkl=f.read()#2、将json_str转成内存中的数据类型dic=pickle.loads(pkl)print(dic['a'])#1和2可以合作一步with
阅读全文
摘要:1.什么是序列化与反序列化? 序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于到网络传输。 反序列化就是将硬盘中或者网络中传来的一种数据格式转换成内存中数据格式。 2.为什么要有序列化和反序列化? 1.可以保存程序的运行状态。(比如游戏中用户在某个状态下线,用户游戏的数据需要保存,这
阅读全文
摘要:"""logging配置"""import osimport logging.config# 定义三种日志输出格式 开始# 当前时间 文件名 文件执行的行数 设置文件级别 发送的信息standard_format = '%(asctime)s - %(filename)s:%(lineno)d -
阅读全文
摘要:应当熟练掌握模块及包之间的调用关系,以后项目中常用。 1.什么是包? 包是模块的一种形式,包的本质就是一个含有__init__.py文件的文件夹。 2.为什么要有包? 如果一个模块里面很多方法,有时候需要修改里面的一些功能,查找起来很不方便。 所以需要把文件里面的方法抽离出来,分在多个文件存放,方便
阅读全文
摘要:一个项目下面通常先放一个bin目录文件,用来存放可以右键执行的文件(start.py),整个程序的入口文件。 还需要一个conf目录,里面放settings文件,即配置文件,防止路径写死了,以后使用者可以修改路径,存放配置相关的信息。 还需要src目录,里面放core文件。存放核心逻辑。 还需要li
阅读全文
摘要:'''1、什么是模块 模块是一系列功能的集合体 常见的模块形式(自定义模块、第三方模块、内置模块): 1、一个module.py文件就是一个模块,文件名是module.py,而模块名是module 2、一个包含有__init__.py文件的文件夹也是模块 3、已被编译为共享库或DLL的C或C++扩展
阅读全文
摘要:'''面向过程编程 核心过程二字,过程指的是解决问题的步骤,即先干什么、再干什么、然后干什么... 基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式 优点 复杂的问题流程化、进而简单化 缺点 扩展性极差'''# 接收用户输入用户名,进行用户名合法性校验,拿到合法的用户名def che
阅读全文
摘要:'''1、什么是函数 函数就是具备某一特定功能的工具2、为什么用函数 减少重复代码 增强程序的扩展性 增强可读性3、如何用函数 1、函数的使用原则:先定义后调用(*****) 定义阶段:只检测语法不执行代码 调用阶段:执行函数代码 2、定义阶段与调用阶段: 2.1:语法 (*****) def fu
阅读全文
摘要:掌握res='你好'.encode('utf-8')print(res)res=bytes('你好',encoding='utf-8')print(res)参考ASCII表将数字转成对应的字符print(chr(65))print(chr(90))参考ASCII表将字符转成对应的数字print(or
阅读全文
摘要:# 有名函数:基于函数名重复使用def func(): print('from func')func()func()func()# 匿名函数:没有绑定名字的下场是用一次就回收了def func(x,y): #func=函数的内存地址 return x + yres=(lambda x,y:x+y)(
阅读全文
摘要:递归与二分法习题二分法就是在按照从大到小或者从小到大规律排布的列表中,寻找的值通过与中间的值比较大小,从而对列表进行操作,然后再比较的循环过程。用递归的方法找出列表中的值num = [1,3,4,5,6,8,22,33,55,778,990]def search(search_number,num)
阅读全文
摘要:习题另开了一个随笔,欢迎查看。 函数递归调用: 函数递归调用,即一种特殊的嵌套调用。在调用一个函数的过程中,又直接或间接地调用了该函数的本身。 递归必须要有两个阶段:递推与回溯 递推:一层一层递归调用下去,强调每进入下一层递归的规模都必须有所减少。 回溯:递归必须要有一个明确的结束条件,在满足该条件
阅读全文
摘要:1.三元表达式条件成立时的返回值 if 条件 else 条件不成立时的返回值三元表达式的意义就是让一些简单的if判断写成一行,减少代码量def max2(x,y): if x > y: return x else: return yx=10y=20res = x if x > y else ypri
阅读全文
摘要:'''1 什么是生成器?在函数内但凡出现yield关键字,再调用函数就不会执行函数体代码。调用函数会返回一个值,该值称之为生成器 生成器本质就是迭代器2、为什么要有生成器? 可以自定义一个迭代器,即生成器 生成器是一种自定义迭代器的方式 生成器都是迭代器3、如何用生成器'''def func():
阅读全文
摘要:1.什么是迭代器? 迭代器即迭代取值的工具。 迭代:迭代是一个重复的过程,每一次重复都是基于上一次的结果而来的。 单纯的重复并不是迭代
阅读全文
摘要:1.'''未加来源认证的用户认证方法import timecurrent_user={'user':None}def deco(func): def wrapper(*args,**kwargs): if current_user['user']: #已经登陆过 res = func(*args,
阅读全文
摘要:1.import timedef index(): print('welcome to index') time.sleep(3) return 123 # 被装饰对象带返回值def home(name): # 带上参数的被装饰对象 print('welcome %s to home page' %
阅读全文
摘要:1.器指的是工具,而程序中的函数就是具备某一功能的工具。 装饰指的是为被装饰对象添加额外功能。 2.就目前的知识来看,定义装饰器就是定义一个函数,只不过该函数的功能就是用来为其他函数添加额外的功能。 3.装饰器本身其实可以是任意可调用的对象。 被装饰的对象也可以是任意可调用的对象。 4.为什么要用装
阅读全文
摘要:1.作用域关系在函数定义阶段就已经固定死了,与调用位置无关。 即在任意位置定义函数,都需要跑到定义函数时寻找作用域关系。
阅读全文
摘要:函数实参部分传值遇到的问题# def func(*args):# for i in args:# print(i)# print(args)### func(*{"a":2,"s":2,"j":2,"t":2,"u":2,"i":2}) # 循环取出*后面的值,所以字典只能取出key值。# 其他可循
阅读全文
摘要:"""1、名称空间namespaces 存放名字与值绑定关系的地方2、名称空间分为三大类 内置名称空间: 作用:存放python解释器自带的名字 生命周期: 在解释器启动时生效,在解释器关闭时失效 全局名称空间: 作用:除了内置的与局部的名字外,其余都是全局名字 生命周期: 在文件执行时生效,在文件
阅读全文
摘要:函数的嵌套定义def f1(): # 函数定义完毕,通过f1()调用函数,函数体开始执行 # def f2(): # 先找到f3(),并不会立刻就去找调用,在同级里一步一步往下走,先到print("from f2") # print('from f2') # 再到调用,最后执行f3()函数体 def
阅读全文
摘要:函数是第一类对象的含义是函数可以被当作数据处理函数可以被当成数据来处理函数可以被当成数据来处理:数据可以被引用,可以被传参,可以作为容器里的元素,可以当作返回值。def func(): #func=<function func at 0x0584BA50> 函数名在全局名称空间里,存放着函数名和函数
阅读全文
摘要:总的分类:1、形参:在函数定义阶段括号内定义的参数,称之为形式参数,简称形参,本质就是变量名def foo(x,y): #x=1,y=2 print(x) print(y)2、实参:在函数调用阶段括号内传入的值,称之为实际参数,简称实参,本质就是变量的值foo(1,2)详细的分类:一、位置参数:位置
阅读全文
摘要:'''1、什么是返回值 返回值是一个函数的处理结果2、为什么要有返回值 如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值3、函数的返回值的应用 函数的返回值用return去定义 格式为: return 值 注意: 1、return是一个函数结束的标志,函数内可以有多个re
阅读全文
摘要:'''1 什么是调用函数 函数名(...)即调用函数,会执行函数体代码,直到碰到return结束或者一直运行完毕所有代码2 为何要调用函数 用函数的功能3、函数调用分为三种形式 max2(1,2) res=max2(3000,2000) * 12 res=max2(max2(1000,2000),3
阅读全文
摘要:#定义函数时的参数就是函数体接收外部传值的一种媒介,其实就一个变量名#1、无参函数:# 在函数定义阶段括号内没有参数,称为无参函数# 注意:定义时无参,意味着调用时也无需传入参数# 应用:#如果函数体代码逻辑不需要依赖外部传入的值,必须定义无参函数def func(): print('hello w
阅读全文
摘要:1、什么是函数? 在程序中,函数就具备某一功能的工具事先将工具准备好即函数的定义遇到应用场景拿来就用即函数的调用所以务必记住:#函数的使用必须遵循先定义,后调用的原则2、为何要用函数 不用函数问题是: 1、程序冗长 # 重复造代码,函数可以解决。 2 程序的扩展性差 # 可以在函数体内扩展功能 3
阅读全文
摘要:函数的使用必须遵循先定义,后调用的原则,没有事先定义函数,而直接引用函数名,就相当于在引用一个不存在的变量名1、函数定义阶段:只检测函数体的语法,不执行函数体代码def func(): print('1111') print('222') print('333')2、函数调用阶段:执行函数体代码fu
阅读全文
摘要:1.移动光标覆盖文件内容,并不是修改with open(r'C:\Users\LENOVO\PycharmProjects\untitled2\b.txt','r+t',encoding='utf-8') as f: f.seek(8,0) # 换行\r\n算两个字节。\r光标移动到开头,\n换行
阅读全文
摘要:1.指针移动f.seek(offset,whence)***offset代表文件的指针的偏移量,单位是字节byteswhence代表参考物,有三个取值****0:参照文件的开头with open(r"C:\Users\LENOVO\PycharmProjects\untitled2\b.txt","
阅读全文
摘要:t模式和字符编码有关r+t:可读、可写r+ 和 w+ 都是可读可写的,唯一区别就是r和w的区别,有无文件存在和是否会清空文件w+t:可写、可读with open('b.txt','w+t',encoding='utf-8') as f: print(f.readable()) #True print
阅读全文
摘要:1.什么是文件? 文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位。 文件的操作核心:读和写 对文件进行读写操作就是向操作系统发出指令,操作系统将用户或者应用程序对文件的读写操作转换为具体的硬盘指令。(比如控制盘片转动,控制机械手臂移动来读写数据。) 2.为什么要有文件? 因为内存无法永久
阅读全文
摘要:ctrl + shift + - 缩减多级菜单 ctrl + shifit + + 展开多级菜单 ctrl + shift + F8 删除多个断点 两个项目比较 选中要比较的项目 右键找到compare files,可以对两个文件进行比较 ctrl + z 撤销刚才的操作 ctrl + shift
阅读全文
浙公网安备 33010602011771号