- 博客(18)
- 收藏
- 关注
原创 window中python,pip被删除后的安装
先安装一个版本 python -m ensurepip 然后升级到最新版本 python -m pip install --upgrade pip 假如之前没有过pip的安装,则需要配置路径 在安装pip后需先配置环境变量, pip 指令才能生效 找到 python 安装路径下 的 scripts 目录下,复制改路径 例如我的路径 ...
2020-12-07 17:04:23
203
原创 mysql删除外键约束
在python中:Column(类型,ForeignKey(‘绑定的表.列名’,ondelete=‘约束类型’)) 外键约束有: RESTRICT:父表的数据被删除时会阻止删除,默认就是这一项。 NO ACTION:在MySQL中,同RESTRICT。 CASCADE:级联删除,当父表中的项被删除,子表中的那一条数据都会被删除。 SET NULL:父表数据被删除,子表的外键数据会被设置为NULL。 ...
2020-11-04 12:31:09
386
原创 mysql索引长度计算
varchr(24)变长字段且允许NULL 24*(Character Set:utf8=3,gbk=2,latin1=1)+1(NULL)+2(变长字段) 例如utf8的varchr(24),索引长度就是24*3+1+2=75 varchr(10)变长字段且不允许NULL 10*(Character Set:utf8=3,gbk=2,latin1=1)+2(变长字段) 例如gbk的varchr(10),索引长度就是10*2+2=22 char(10)固定字段且允许NULL 10*(Character Se
2020-08-06 16:39:14
381
原创 元类及迭代器生成器
getattr __getattr___是当类中没有对应实例会被自动调用的魔法方法。他传入的item就是你调用的不存在的值,他没有默认返回值,会输出None __getattribute__无条件优先执行,如果不是特殊情况最好不要使用 get和dict的优先级 class IntField(object): def __set__(self, instance, value): if not isinstance(value, int): raise Valu
2020-06-27 23:03:41
140
原创 类与对象深度问题
__new__方法 def new(cls)#创建一个类对象,自动运行,当期运行时如果没有创造对象并且返回则不会运行__init__方法,因为__init__方法是只有对象被创建时才会自动调用。一般init会自动调用是因为对象被自动创建了,所有类的父类object有这个功能,当当你运行了__new__之后object不会在运行,所以假如__new__中没有创建对象则__init__不会运行。 一般在new方法最后加一行: return object.new(cls)#通过从object方法中调用new来创建
2020-06-25 23:56:34
148
原创 类与对象的深入
鸭子类型 多态概念用于Java和C#这一类强语言中,而python崇尚鸭子类型,鸭子类型即不严格要求类型,比如a.extend(b)是将b链接到a后面,a为列表时,b是列表元组字符串都可以加到后面。 比如a,b,c是三个类的名字,list=[a,b,c] 此时a,b,c是作为变量储存在列表中,只有当他写成a().内置函数时()他才和被作为一个类。 抽象基类(abc模块) 抽象基类就是类里定义了纯虚数的类,其不能被实例化(不能创建对象)不能被继承。 从abc中调用Sized模块:from collection
2020-06-25 19:07:52
116
原创 文件
open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)open中可以有的参数 文件的打开和关闭 a=’文件所在位置.文件名‘ 打开文件的方式open(’文件所在位置.文件名‘或者a) 如果打开的文件的程序和程序在同一个文件夹则可以直接写文件名。 print(打开的文件)可以输出文件对象的信息。 read()方法可以将文件中的内容读取保存到一个字符串中。格式如a.read() 文件
2020-06-24 22:45:52
148
原创 异常的处理
异常就是错误的代码,当程序运行时,如果读到错误代码程序直接终止输出,后面的读取只会读到错误时报错。当函数中出现异常时,所有调用了这个函数的地方都会报错。 try try可以用于测试程序 try: 测试的代码 except: 测试代码中有错误执行的代码 else: 测试代码中没有错误执行的代码 try: 测试的代码 except 错误名: 捕获和错误名对应的异常,如果没加异常名,则会捕获所有异常。 try: 测试的代码 except 异常类型 as 异常的新名字:(e代表了出现的异常名字,你接下来的代码中要输
2020-06-24 20:50:54
142
原创 面向对象和模块
属性和方法 在类中直接定义的参数是类属性,实例属性可以访问类和实例属性,类对象不能直接调用实例属性。 在类中定义,以self为第一个参数的都是实例对象。 当通过实例对象调用实例时,调用的参数就是self,当类调用实例对象时,不会把调用参数作为实例传递,故缺少一个参数。假设A是类,a是A的一个实例,当A中有一个name方法时,两者调用并传递a的值的格式分别为,a.name()和A.name(a) 如果在类中想定义类属性的方法,则上面一行加@classmethod(method中文名词意思为方法,类函数)此时
2020-06-24 17:27:20
546
原创 面向对象
继承的简介 创建类时后面括号里的就是这个类的父类(也被成为超类,基类) 1.让类与类之间产生了关系,有了这层关系才有我们后续要说的多态 2.提高了代码的复用性 3.在创建类的时候,如果省略了父类,则默认父类为object,因为object是所有类的父类。 子类会继承父类的属性和方法 例如: ‘’’ class Animal: def sleep(self): print(‘动物会睡觉…’) def run(self): print(‘动物会跑…’) class Dog(Animal): pass d = D
2020-06-22 21:28:30
110
原创 装饰器
通过装饰器,可以在不修改原函数的情况下对函数进行扩展。 我们可以通过装饰器来扩展函数功能。例如: def fn(a,b): return a+b def start_end(old): def new_function(*a,**b): print(‘function execution begins’) r=old(*a,**b) print(‘function execution ends’) return r return new_function f=start_end(fn) print(f(1,
2020-06-09 17:10:37
140
原创 函数2
函数的返回值 定义的函数中return后面跟着什么值,函数就会返回什么值。return后面可以跟任何对象甚至是函数。 当a=fn()时,如果fn()没有返回值则a=None return同时也标志着函数的结束,当读到return时则函数自动结束。return后可以不跟值,仅作为结束标志。 help函数 help(函数) 这种格式编译器会告诉你函数的用法意义。 当我们自己定义函数时也可以用""" “”" 来将自己对这个函数的解释写在中间,别人就可以通过help来查询他。 例如: def fn(a,b,c):
2020-06-09 17:05:26
167
原创 命名空间
所有的变量都保存在命名空间中 命名空间实质是一个字典,是一个专门用来存储变量的字典,也可以存储函数 locals()函数可以获取当前作用域的命名空间,并且返回一个字典。 b=20 a=30 scope=locals() print(scope) 输出 {‘name’: ‘main’, ‘doc’: None, ‘package’: None, ‘loader’: <_frozen_importlib_external.SourceFileLoader object at 0x00000222640E0
2020-06-08 18:37:12
124
原创 函数
可变对象 每个对象中都保存了三个数据,id(标识)type(类型)值(value) 可变对象是指value可以变的对象。 a=【1,2,3】 a=【2,3,4】 这不算内容可变,这是直接把变量重新赋值了一遍,id也会发生改变。 a=【1,2,3】 a【0】=2 这样通过变量来修改对象里面的值,不会改变变量指向的对象id。 函数 函数也是一个对象,函数可以保存一些可以执行的代码,在需要时可以对这些语句进行多次调用。 创建函数的格式: def 函数名(形参1,形参2,形参3。。。。。。):(函数名必须符合命名
2020-06-03 22:12:00
156
原创 元组字典集合
元组(tuple) 当需要写入列表中元素不需要改变时,可以使用元组。 可以tuple[number]输出number对应的值。 如果元组不是空的,他至少必须有个’,’ 元组在定义时可以不加括号,例如: tup=1,2,3,4,5 print(tup)=(1,2,3,4,5) 元组的解包 a,b,c,d,e=tup 则a=1,b=2,c=3,d=4,e=5 此方法需要一一对应,否则会报错 当无法确定元组中的元素时,可以使用星号来防止报错 a,b,*c=tup 则a=1,b=2,c=[3,4,5] a,*b,c
2020-06-01 21:57:02
667
原创 列表的一些知识
列表的读取 列表是序列的一种。 list[%d:%d]从列表中取数字中间的一段,包括开始不包括结束,可以省略数字,省略的一边默认全部读取。 列表从前往后元素对应数字从零开始往后,从后往前从-1开始往前。 list[:]可以读取列表中的所有项。 如果list[::]有两个冒号,则第二个冒号后表示步长,意思为取列表元素的间隔。 例如a=[1,2,3,4,5,6] print(a[::2]) 运行结果[1, 3, 5] 如果步长为负数则从后往前取 步长不能为零 列表的运算 加号可以直接相加两个字符串:[1,2,3
2020-05-29 21:57:44
330
原创 格式化字符串
占位符 %s 字符串占位符 %d 整形占位符 %f 浮点型占位符 使用举例 print(‘i love %s’ %‘you’ )=i love you print(‘i %s %s’%(‘love’,‘you’))=i love you print(’%d%s%d%s%d’%(1,’+’,2,’=’,3))=1+2=3 有几个占位符后面就需要几个与之对应的值 format 语句 s=‘i like {}’ a=s.format(‘python’) print(a) 输出 i like python s=‘
2020-05-27 09:46:52
186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人