python
文章平均质量分 50
风雪夜刃逍遥
能耐得住寂寞的人,肯定是有思想的人。能忍受孤独的人,肯定是有理想的人。遇事能屈能伸的人,肯定是胸怀的人。处事从容不迫的热的人,肯定是个淡定的人。经常微笑的人,肯定是个有头脑的人。看透天下事的人,肯定是个有智慧的人
展开
-
简单的Python文件操作(2) 制作文件的备份 与文件的随机读写
制作文件的备份:#coding=utf-8oldFileName=input("请输入要拷贝的文件名字:")oldFile = open(oldFileName,'r')#如果打开文件if oldFile: #提取文件的后缀 fileFlagNum = oldFileName.rfind('.') if fileFlagNum >0 fileFlagN...原创 2018-05-29 01:15:58 · 630 阅读 · 0 评论 -
Python常用的内建函数
Build-in Function,启动python解释器,输⼊ dir(__builtins__) , 可以看到 很多python解释器启动后默认加载的属性和函数,这些函数称之为内建函 数, 这些函数因为在编程时使⽤较多,cpython解释器⽤c语⾔实现了这些函 数,启动解释器 时默认加载。这些函数数量众多,不宜记忆,开发时不是都⽤到的,待⽤到时再 help(function), 查看如何使...原创 2018-08-08 15:20:25 · 384 阅读 · 0 评论 -
python 之 functools 偏函数 和 集合 set
(本来都是随手放在QQ收藏当笔记,太多了卡了起来,就写到博客,随意了点,见谅) wraps函数使⽤装饰器时,有⼀些细节需要被注意。例如,被装饰后的函数其实已经是 另外⼀个函数了(函数名等函数属性会发⽣改变)。添加后由于函数名和函数的doc发⽣了改变,对测试结果有⼀些影响 所以,Python的functools包中提供了⼀个叫wraps的装饰器来消除这样的副 作⽤。...原创 2018-08-08 15:20:44 · 176 阅读 · 0 评论 -
python元类 图要改 上
python一切都是对象,linux 一切都是文件python中类也是一种对象,只要使用class ,python解释器就会在执行时创建一个对象直接在类里面写print("sss"); 在调用这个py文件的时候,自动就会打印甚至可以直接print(类名) 因为类也是对象,可以在运行时动态的创建他们, 就像其他任何的对象一样 type(类名, 由父类名称组成的元...原创 2018-08-16 11:42:23 · 151 阅读 · 0 评论 -
python 元类之 meta_class属性 图要改
你可以在定义一个类的时候为其添加__metaclass__属性(python2--->__metaclass__ python3--->metaclass)class Foo(Bar):pass Python做了如下的操作: 1. Foo中有__metaclass__这个属性吗?如果是,Python会通过__metaclass__创建一个名字为Foo的类...原创 2018-08-16 11:42:10 · 301 阅读 · 0 评论 -
Python之进程与任务
编写完毕的代码,在没有运⾏的时候,称之为程序正在运⾏着的代码,就成为进程进程,除了包含代码以外,还有需要运⾏的环境等,所以和程序是有区别的Python的os模块封装了常⻅的系统调⽤,其中就包括fork,可以在Python程 序中轻松创建⼦进程import os# 注意,fork函数,只在Unix/Linux/Mac上运⾏,windows不可以 pid = os.fork...原创 2018-08-08 15:21:32 · 139 阅读 · 0 评论 -
Python之进程: multiprocessing 跨平台版本的fork
由于 Windows没有fork调⽤ Python是跨平台的,⾃然也应该提供⼀个跨平台的多进程⽀持。 multiprocessing模块就是跨平台版本的多进程模块。⽗进程、⼦进程执⾏顺序没有规律,完全取决于操作系统的调度算法 multiprocessing模块提供了⼀个Process类来代表⼀个进程对象,下⾯的例⼦ 演示了启动⼀个⼦进程并等待其结束:#coding=utf-8 f...原创 2018-08-08 15:22:44 · 741 阅读 · 0 评论 -
进程的创建-Process⼦类 与 进程池
Process子类创建进程 创建新的进程还能够使⽤类的⽅式,可以⾃定义⼀个类,继承Process类,每 次实例化这个类的时候,就等同于实例化⼀个进程对象from multiprocessing import Processimport timeclass MyNewProcess(Process): def run(self): while True:...原创 2018-08-08 15:21:41 · 290 阅读 · 0 评论 -
python之进程池
初始化Pool时,可以指定⼀个最⼤进程数,当有新的请求提交到Pool中时, 如果池还没有满,那么就会创建⼀个新的进程⽤来执⾏该请求;但如果池中 的进程数已经达到指定的最⼤值,那么该请求就会等待,直到池中有进程结 束,才会创建新的进程来执行from multiprocessing import Poolimport osimport randomimport time...原创 2018-08-16 12:01:37 · 748 阅读 · 0 评论 -
Python 进程间通信
进程间通信 --------->> 队列,命名管道,无名管道 内存映射 *********************************************************可以使⽤multiprocessing模块的Queue实现多进程之间的数据传递,Queue 本身是⼀个消息列队程序 初始化Queue()对象时(例如:q=Queue()),若括号中...原创 2018-11-22 15:14:04 · 328 阅读 · 1 评论 -
python 之 多线程
类似于进程, 主进程都是晚于子进程结束,目的就是为了回收子进程占用的内存.....如果子进程结束了,主进程在没有为其回收的这一段时间,子线程被称为僵尸进程, 如果主进程结束了,子进程却没有回收,子进程被称为孤儿进程. 该进程结束时由一号进程进行收拢 主进程的id 一般都比子进程的 ID 小 length = len(threading.enumerate()) prin...原创 2018-11-22 15:16:01 · 151 阅读 · 0 评论 -
Python 同步 上锁解锁过程
同步就是协同步调,按预定的先后次序进⾏运⾏#创建锁 mutex = threading.Lock()#锁定 mutex.acquire([blocking]) #释放mutex.release()其中,锁定⽅法acquire可以有⼀个blocking参数。如果设定blocking为True,则当前线程会堵塞,直到获取到这个锁为⽌ (如果没有指定,那么默认为Tru...原创 2018-11-22 15:17:48 · 1466 阅读 · 0 评论 -
Python 线程安全问题
在⼀个进程内的所有线程共享全局变量,能够在不使⽤其他⽅式的前提下完成多线程之间的数据共享(这点要⽐多进程要好) 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量 的混乱(即线程⾮安全)同步: 假设两个线程t1和t2都要对num=0进⾏增1运算,t1和t2都各对num修改10 次,num的最终的结果应该为20。但是由于是多线程访问,有可能出现下⾯情况:...原创 2018-11-22 15:19:01 · 1175 阅读 · 1 评论 -
python 多线程-⾮共享数据 死锁以及 ⽣产者与消费者模式
在多线程开发中,全局变量是多个线程都共享的数据,⽽局部变量等是 各⾃线程的,是⾮共享的 1. 死锁在线程间共享多个资源的时候,如果两个线程分别占有⼀部分资源并且同时 等待对⽅的资源,就会造成死锁。尽管死锁很少发⽣,但⼀旦发⽣就会造成应⽤的停⽌响应。下⾯看⼀个死锁 的例⼦Thread1 对A 上了锁 ,2 中对B上了锁,然后 互相等待对方释放锁,然后上锁 *...原创 2018-11-22 15:22:06 · 304 阅读 · 0 评论 -
Python之 ThreadLocal
在多线程环境下,每个线程都有⾃⼰的数据。⼀个线程使⽤⾃⼰的局部变量 ⽐使⽤全局变量好,因为局部变量只有线程⾃⼰能看⻅,不会影响其他线 程,⽽全局变量的修改必须加锁 ⼀个ThreadLocal变量虽然是全局变量,但每个线程都只能读写⾃⼰线程的独 ⽴副本,互不⼲扰。ThreadLocal解决了参数在⼀个线程中各个函数之间互相 传递的问题 import threading...原创 2018-11-22 15:23:52 · 786 阅读 · 0 评论 -
Python 切片与迭代
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] >>> L[0:3]['Michael', 'Sarah', 'Tracy']L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。如果第一个索引是0,还可以省略:>>> L[:3]['M...转载 2018-08-08 15:21:22 · 148 阅读 · 0 评论 -
python 列表生成式 人生苦短我用Python
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):>>> list(range(1, 11))[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]但如果要...转载 2018-08-08 15:21:08 · 286 阅读 · 0 评论 -
Python 生成器 重点中的重点 生成器:generator
列表a =[x * 2 for x in range(10)] 0到9,都会乘以2把10 改成 10000000就会报错,内存不够,就会被杀死在Python中,这种一边循环一边计算的机制,称为生成器:generatorgenerator保存的是算法把中括号换成小括号 变成生成器 就不会被杀死 , 生成器是你用的时候才会分配空间 , 每次只生成一个,到了最后一次,如果还要调用...原创 2018-08-08 13:26:43 · 256 阅读 · 0 评论 -
简单的Python注意点
1 不可变类型的全局变量使用global声明 在函数外边定义的变量叫做 全局变量. 全局变量能够在所有的函数中进行访问. 如果在函数中修改全局变量,那么就需要使用 global 进行生命,否则出错 如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量(强龙不压地头蛇). 在函数中不使用global声明全局变量时不能修改全局变量的本质是不能修改全局变量的指向,即不能将全局变量指向新的数据. ...原创 2018-05-24 16:24:10 · 178 阅读 · 0 评论 -
简单的Python文件操作(1) 文件的开关与读写
在python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件.open(文件名,访问模式) 如例子所示: f = open ('test.txt','w') 访问模式如下图:关闭文件 : close() 如例子所示: # 新建一个文件,文件名为 test.txt f=open('test.txt','w') ...原创 2018-05-24 19:05:54 · 565 阅读 · 0 评论 -
简单的Python文件操作(3)文件的重命名,删除和对文件夹的操作
(1) 文件的重命名,删除os模块中的rename()可以完成对文件的重命名操作rename(需要修改的文件名,新的文件名)import osos.rename("a.txt","b.txt")os模块中的remove()可以完成对文件的重命名操作remove(要删除的文件名)import osos.remove("a.txt")(2) 文件夹的相关操作同样要用到osimport os #...原创 2018-05-30 01:27:06 · 2195 阅读 · 0 评论 -
Python笔记 之导入 与 ==
(1)import比较类似于C/C++的include import syssys.path如果要导入的模块不在sys里面可以通过:sys.path.append("/home")来添加( 绝对路径或者相对路径 )( #include "../xxx.h" 上一个路径) (2)导入一个模块之后,该模块有所改动,运行程序,还是修改之前的样子,即便是重新import te...原创 2018-08-07 15:55:48 · 165 阅读 · 0 评论 -
Python 笔记之深拷贝 浅拷贝
浅拷贝 : 是对一个对象的顶层拷贝(拷贝了引用,没有拷贝内容)深拷贝: 拷贝内容,不拷贝引用import copyc =copy.deepcopy(a)递归深拷贝copy.copy(c)元组,不可变类型 copy.copy 如果当前类型是不可变类型,则直接浅拷贝...原创 2018-08-07 15:58:52 · 259 阅读 · 0 评论 -
Python私有化
给属性,方法 前面加两个下划线就会私有化直接调用会报错 ,如果t.__num =200的话,只是给这个对象又添加了属性 -xx : from iii import xxx 禁止导入,但是 import iii是不影响的__xx__ 魔法方法 : python解释器默认提供的,额外去做的具有特殊功能的方法对象._类名__xx 就可以访问私有属性了...原创 2018-08-07 16:00:39 · 230 阅读 · 0 评论 -
Python之property
t.num = 200 #相当于调用了 t.setNum(200) print(t.num) #相当于调用了 t.getNum() #注意点:#t.num 到底是调用getNum()还是setNum(),要根据实际的场景来判断,#1. 如果是给t.num赋值 那么一定调用setNum()#2. 如果是获取t.num的值,那么就一定调用getNum()##pr...原创 2018-08-07 16:03:29 · 138 阅读 · 0 评论 -
Python 迭代器------划重点:Iterable ,Iterator 的区别
迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。1. 可迭代对象以直接作用于 for 循环的数据类型有以下几种:一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等;一类是 generator ,包括生成器和带 yield...原创 2018-08-07 16:05:41 · 293 阅读 · 0 评论 -
Python 闭包---- >变量指向函数,可以调用函数
变量指向函数,可以调用函数闭包,调用里面的函数,外边函数的值就不用再传了 def line_conf(a, b): def line(x): return a*x + b return lineline1 = line_conf(1, 1)line2 = line_conf(4, 5)print(line1(5))print(...原创 2018-08-07 16:09:44 · 545 阅读 · 0 评论 -
Python 装饰器(1) 重点之重点
语法糖: def w1(func): def inner(): print("---正在验证权限----") if False: func() else: print("没有权限") return inner#f1 = w1(f1)@w1def f1(): pri...原创 2018-08-07 16:20:30 · 219 阅读 · 0 评论 -
Python 装饰器(2)
例1:无参数的函数from time import ctime, sleepdef timefun(func): def wrappedfunc(): print("%s called at %s"%(func.__name__, ctime())) func() return wrappedfunc@timefundef foo()...原创 2018-08-07 16:25:37 · 135 阅读 · 0 评论 -
Python 作用域 与 内建 以及 内建之__getattribute__ 属性访问拦截器
Python解释器在工作的时候会默认导入常见的功能input等称之为内建 内建之__getattribute__ 属性访问拦截器: 所有访问属性的时候一定要先访问这个方法,这个方法返回的值就决定着这个属性得到的数据 print("====1>%s"%obj); 不管是属性名,函数名或者类名,仅仅是变量名, 指向了一片内存而已 test.s...原创 2018-08-07 16:29:02 · 1352 阅读 · 0 评论 -
Python动态添加方法和属性
Python是动态语言,可以在运行时改变结构的语言:例如新的函数,对象静态语言:运行之前必须先编译,编译不过就运行不了,运行时不能修改代码给对象添加属性 : 15行会报错,因为类并没有添加属性 给类添加属性: 第17行的操作,不会报错 class Person(object): def __init__(self, newName, newAge): ...原创 2018-08-07 16:36:14 · 3877 阅读 · 0 评论 -
Python 类来作为装饰器
用类来当做装饰器 , 当Python解释器执行到这里的时候, 就会创建这个类的一个对象,来进行装饰. 相当于创建了一个Test对象,并将test这个函数的引用传了过去.Test对象--->test = Test (test)<-----函数的引用对象加上括号,就会调用对象的__call__函数私有属性__func...原创 2018-08-08 13:26:13 · 445 阅读 · 0 评论 -
Python 异步
from multiprocessing import Poolimport timeimport os def test(): print("---进程池中的进程---pid=%d,ppid=%d--"%(os.getpid(),os.getppid())) for i in range(3): print("----%d---"%i) ...原创 2018-11-22 15:25:09 · 520 阅读 · 0 评论