python语法
iayhvf
这个作者很懒,什么都没留下…
展开
-
Python利用字符串名称调用函数或对象方法
python利用字符串名称动态调用函数或对象方法1.evaldef func_eval(): print('func by eval')func_name = "func_eval"eval(func_name)()# func by eval2.getattrclass Student: school = "gaofeng" __region ...原创 2020-05-03 12:59:15 · 697 阅读 · 0 评论 -
Python正则表达式
匹配单个字符字符 功能 . 匹配任意1个字符(除了\n) [ ] 匹配[ ]中列举的字符 \d 匹配数字,即0-9 \D 匹配非数字,即不是数字 \s 匹配空白,即 空格,tab键 \S 匹配非空白 \w 匹配单词字符,即a-z、A-Z、0-9、_ \W 匹配非单词字符 匹配多个字符字符 功能...原创 2020-04-21 16:27:23 · 178 阅读 · 0 评论 -
Python元类应用之实现ORM
ORM:后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM。即创建一个实例对象,用创建它的类名当做数据表名,用创建它的类属性对应数据表的字段,当对这个实例对象操作时,能够对应MySQL语句。class User(父类省略): uid = ('uid', "int unsigned") name = ('...原创 2019-10-24 17:20:12 · 166 阅读 · 0 评论 -
Python中的元类
类:在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。Python中的类拥有创建对象(实例对象)的能力。但是,它的本质仍然是一个对象。动态创建类的方法:type可以接受一个类的描述作为参数,然后返回一个类:type(类名, 由父类名称组成的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))class A(object): num = 100de...原创 2019-10-24 15:02:13 · 131 阅读 · 0 评论 -
Python装饰器
一、装饰器理解:def set_func(func): def call_func(): print("验证1") print("验证2") print("验证3") func() return call_func@set_func # 等价于f1 = set_func(f1)def f1(): ...原创 2019-10-24 09:39:33 · 476 阅读 · 1 评论 -
Python闭包
定义:在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包。语法:# 定义一个函数def test(number): # 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包 def test_in(number_in): print("in tes...原创 2019-10-23 16:56:59 · 96 阅读 · 0 评论 -
Python中的“with”与上下文管理器
系统资源如文件、数据库连接、socket 而言,应用程序打开这些资源并执行完业务逻辑之后,必须做的一件事就是要关闭(断开)该资源。普通版:def m1(): f = open("output.txt", "w") f.write("python之禅") f.close()这样写有一个潜在的问题,如果在调用 write 的过程中,出现了异常进而导致后续代码无法...原创 2019-10-23 15:07:56 · 115 阅读 · 0 评论 -
Python中的GIL锁与解决办法
GIL锁:全局解释器锁。每个线程在执行的过程中都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。现象:开启多线程无法真正利用多核CPU,如两个线程死循环,两核CPU各为50%利用率。而两个进程死循环,两核CPU利用率都为100%。此时在计算密集型操作时,多线程如同单线程。但在IO密集型操作时,多线程可以利用IO等待时间。python使用多进程可以利用多核的CPU资源,多线程却无法利...原创 2019-10-22 16:48:11 · 884 阅读 · 1 评论 -
Pyhton深拷贝与浅拷贝理解
赋值:赋值就是将数据的引用复制了一份给另一个变量,此时两个变量指向同一份数据。 深拷贝与浅拷贝:浅拷贝是对于一个对象的顶层拷贝。深拷贝是对于一个对象所有层次的拷贝(递归拷贝)。切片也是浅拷贝 总结:对于不可变数据类型(数字、字符串、元组、布尔),不管是copy.copy还是copy.deepcopy都只是指向,指向的是同一数据地址。...原创 2019-10-22 20:27:24 · 177 阅读 · 0 评论 -
Python中import导入模块注意点
1.私有化属性或方法_x:单前置下划线表示私有化属性或方法,当用from somemodule import *导入模块时,将禁止导入该属性或方法。但用import somemodule import _x或import somemodule somemodule._x可以调用。2.重新导入模块import somemodule可以防止模块重复导入,且可以重新导入模块重新导...原创 2019-10-22 21:47:15 · 471 阅读 · 0 评论 -
Python方法解析顺序表MRO
问题:多继承中Son1、Son2继承自Parent,Grandson继承自Son1和Son2。若用类名.的方式调用父类方法,父类方法会被多次调用。解决:若用super().的方法不会导致父类方法被多次调用,可以保证每个父类的方法只执行一次。原因:__MRO__中元组的先后顺序决定了调用父类super的顺序。python3里有一种默认的来处理多继承调用的先后顺序叫C3算法,是一种确定每个...原创 2019-10-22 22:37:55 · 141 阅读 · 0 评论 -
Python中的property属性与应用
property属性:用起来像是使用实例属性一样的特殊属性,对应于某个方法。优点:通过使用property属性,能够简化调用者获取数据的流程。使用的两种方式:1.装饰器方式:经典类只有一种@property装饰器,新式类具有三种@property装饰器class Goods(object): def __init__(self): # 原价 ...原创 2019-10-23 10:25:26 · 132 阅读 · 0 评论