python
文章平均质量分 54
BJFU_vth
这个作者很懒,什么都没留下…
展开
-
【面向对象】【0x01】 对象属性操作
python面向对象编程原创 2022-08-27 11:14:57 · 428 阅读 · 1 评论 -
【面向对象】【0x00】 Python面向对象介绍
python面向对象原创 2022-08-27 10:39:53 · 519 阅读 · 0 评论 -
【设计模式】【单例模式】python实现单例模式的几种方式
python单例模式及线程安全原创 2022-08-26 11:36:40 · 533 阅读 · 0 评论 -
【python随笔】-深入理解装饰器
深入理解装饰器原创 2022-08-10 15:15:01 · 383 阅读 · 0 评论 -
【python】特殊变量
特殊变量__file__这个变量表明了当前脚本(即当前文件的路径)。print(__file__)结果:D:/myProject/interview/test.py这样会输出当前目录的路径(可能是绝对路径也可能是相对路径)。这有啥用?用处大了。可以用它来拿到标准的绝对路径。print(os.path.abspath(__file__))输出:D:\myProject\interview\test.py另外,还可以用这个拿到目录:print(os.path.dirname(os.原创 2022-03-22 22:47:59 · 1399 阅读 · 1 评论 -
flask程序使用celery
写在开头celery是一个分布式并行框架,适合一些并行任务。跟web程序结合可以实现web程序和业务代码的解耦合,celery是采用多进程方式进行的,所以能够有效利用多核CPU。celery对于目录的层级结构要求非常高!要求非常高!然而在网络上搜到的教程都写的七零八落的,不成体系,随便截个图就当做一篇博客。为了解决以上问题,于是打算撰写这篇博客。celery目录结构学习celery从这里学。目录结构长这样。其中,flasky是flask项目的根目录。当然它也可以是其他web程序的根目录。pr原创 2022-03-03 23:23:20 · 8327 阅读 · 1 评论 -
celery 后台按任务名发任务,分布式节点执行具体任务
今天介绍一下如何在django项目中使用celery搭建一个有两个节点的任务队列(一个主节点一个子节点;主节点发布任务,子节点收到任务并执行。搭建3个或者以上的节点就类似了),使用到了celery,rabbitmq。这里不会单独介绍celery和rabbitmq中的知识了。 1.项目基础环境:两个ubuntu18.04虚拟机、python3.6.5、django2.0.4、celery3...原创 2021-03-12 00:44:45 · 502 阅读 · 1 评论 -
python多线程编程
0x00多线程有啥用?唱歌和跳舞是同时进行的,打架时xxx和打人的动作是同时进行的。然而,就我们目前的知识量而言,我们只能唱完歌再跳舞,骂完人再打人。(挺那啥的,是不是?)怎么让他们同时进行? 多线程。然而,单核CPU上的多线程有啥用呢?都是一个CPU在干活,多线程不仅不会加速运行,还会增加线程切换的开销。 这样理解没问题。不过还是这个问题,唱歌和跳舞是同时进行的(至少应该看上去是同时执行的)。所以需要多线程。而真正的多核CPU,可以真正起到加速执行的效果。不过对于计算密集型的任务,python多原创 2020-10-06 10:41:31 · 256 阅读 · 0 评论 -
Python网络编程
0x00 UDP- clientimport socket'''udp client'''# 创建套接字对象clientclient = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)addr_remote = ('127.0.0.1', 12346)addr_local = ('127.0.0.1', 12345)# 相当于给client指定了一个固定的地址. 也可以不指定, os自动分配client.bind(addr_local)原创 2020-10-04 11:57:26 · 228 阅读 · 1 评论 -
Python_base20181126_os模块
import osprint(os.getcwd()) # 获取当前目录os.chdir(r'D:\pythonprogram\sexy_test') # 更改目录到参数所示print(os.getcwd())print(os.curdir) # '.' 代表了当前目录 current directoryprint(os.pardir) # '..' 代表了父级目录 parent di...原创 2018-11-26 13:54:38 · 198 阅读 · 0 评论 -
Python_base20181123_random模块
没啥好说的。。上代码import randomprint(random.random()) # 0到1之间的浮点数 [0,1)print(random.randint(1,2)) # a到b之间的整数 [a,b]print(random.randrange(1,3,1)) # [a,b)[step] 必选a,b step可选。跟range一样print(random.choice('...原创 2018-11-23 09:54:12 · 155 阅读 · 0 评论 -
Python_base20181123_time模块
时间戳、结构化时间与字符串时间time.time() # 时间戳 以秒记的浮点数time.localtime(moren=time.time()) # 当地时区的结构化时间time.gmtime() # 格林尼治的结构化时间time.ctime() # 字符串时间他们之间的转化关系图:具体实现:import timeprint(time.localtime(0)) # 将时...原创 2018-11-23 09:01:39 · 147 阅读 · 0 评论 -
Python_base20181122_包,模块
什么是包?包本质上就是一个文件夹,只不过包比普通的文件夹多了一个__init__.py文件。什么是模块?模块本质上就是一个py文件。为什么要引入包和模块?引入函数是为了防止在同一个模块中多写重复代码。引入模块是为了防止在同一个包中多写重复模块。引入包是为了将模块分门别类的放好。python中都有什么样的模块?python标准库第三方模块自定义模块import or fr...原创 2018-11-22 15:58:26 · 354 阅读 · 0 评论 -
Python_base20181122_装饰器
什么是装饰器?装饰器本质是一个函数,它的功能是为其他函数添加附加功能。设计装饰器的原则:不修改被修改函数的源代码不修改被修改函数的调用方式装饰器应用场景:项目上线之后,不能修改源代码,一旦出错就得背锅。所以需要用装饰器这种东西来给写好的函数加新的功能。具体实现装饰器应该怎么做?装饰器=高阶函数+函数嵌套+闭包装饰器本质上就是一个函数,千万不要忘记。先写一个函数(要上线的代码...原创 2018-11-22 09:10:12 · 123 阅读 · 0 评论 -
Python_base20181112_function
内置函数'''abs接收一个数字,返回它的绝对值'''n = -5.1print(abs(n))# 输出:5.1'''all接收一个可迭代对象,对可迭代对象中的每个元素做and布尔运算返回and运算的值。如果传入的可迭代对象是一个str,则直接返回True如果传入的可迭代对象为空,也返回True'''l = [1,2,3,4,5]print(all(l))l.app...原创 2018-11-12 18:12:17 · 155 阅读 · 0 评论 -
Python_base20181114_生成器
生成器什么是生成器?生成器是一种数据类型,它自动实现了迭代器协议(也就是说不用iter把它变成一个迭代器,它本身就能当作迭代器用,本身就能被next,本身就有__next__()方法)。所以,它在某种程度上可以认为是一个迭代器。不过它的功能要比迭代器更强大。因为它可以用来保存函数的状态。它的特点是生内存且效率高。如何定义一个生成器?两种形式可以做到这一点:生成器函数生成器表达式在...原创 2018-11-14 11:20:47 · 161 阅读 · 0 评论 -
【0x02】Python_base2018118_tuple&dict
元组:元组创建:t = (1,2,3,4)t1 = (1,2,3,)元组不可以进行修改删除增加等操作。写元组时最好在后面加个逗号,这样不会出现语法错误,而且能跟传参区分开来元组可以索引和切片,但是只能获取值不能修改t[0]t[0:2]元组可以被for循环,因为它是一个可迭代对象列表、元组、字符串可以相互转换。注意,元组的不可修改性是针对一级元素来说的,如果元组中的某元素...原创 2018-11-08 23:22:40 · 197 阅读 · 0 评论 -
Python_base20181127_sys模块
import sys# sys.exit('dsa') # 参数为空时结束,为数字时结束 为字符串时打印字符串print(sys.argv) # 命令行参数列表 第一个元素是程序本身的路径# 从命令行模式传入的参数,会以字符串的形式存在1号元素及其以后 组成一个列表print(sys.version) # 获取python解释程序的版本信息sys.stdout.write('1') # ...原创 2018-11-27 08:36:15 · 117 阅读 · 0 评论 -
Python_base20181127_json模块
json、pickle、xml 都是做数据交换用的。json最常用,因为它可以在不同的语言之间进行数据交换。pickle功能最好,但是只能python自己留着用,所以没啥用。json不能够传送python中的类,但是无所谓,实际生产环境中也没有人会传送类。json详解:import jsonf = open('jsontest.sb','w')data = {'name':'13',...原创 2018-11-27 09:20:25 · 150 阅读 · 0 评论 -
编程思想
要具有极强的抽象能力。比如,要去完成一个下载网页、计算使用频率、打印每个单词的使用频率的程序,可以先把抽象出来的大体算法写出来。page = download_page()freqs = compute_frequencies(page)for word,freq in freqs: print(word,freq)看到这段代码之后,任何人都知道这个程序是干嘛的。但是具体怎么做,没有...原创 2019-07-07 14:47:57 · 136 阅读 · 0 评论 -
Linux下安装python3以及pip
完全用linux写代码的目的提高自己的linux应用水平提高自己在linux下的开发能力centos6.8下安装python3.50x00 注意事项linux下的一些软件/环境会用到python2.所以在装python3的时候,不要动原来的python2环境。切记,包括环境变量的配置,不能用python3的环境变量覆盖掉python2的,不然会出一些奇奇怪怪的问题。0x01 安装依赖环...原创 2019-06-10 23:24:26 · 1965 阅读 · 0 评论 -
python多进程技术
进程的概念可执行的代码就叫程序。正在运行着的代码+需要的一些资源就是进程。例子:QQ没打开的时候是程序,打开了之后是进程。forkfork()调用一次,返回两次。从返回处开始,父子进程的代码就是一样的了。意思大概是这样的:import osret = os.fork()if ret == 0: print('我是子进程')else: print('我是父进程'...原创 2019-03-08 13:10:45 · 4944 阅读 · 1 评论 -
Python_base20181211_re模块
正则表达式是个啥?正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。好吧,来个白话版的:就是匹配字符串用的,没啥难的,也没啥神秘的。(深藏功与名,大佬可是说过,如果你想用正则表达式解决一个问题,那么你现在拥有了2个问题23333333)字符匹配(普通字符,元字符):1 普...原创 2018-12-11 16:43:40 · 158 阅读 · 0 评论 -
算法课考试
数塔问题。回溯法解决-----怎么剪枝?原创 2018-12-26 20:45:24 · 308 阅读 · 0 评论 -
Python_base20181226_面向对象程序设计
类与对象的概念:类:类比于人类对象:类比于某个具体的人类与对象的关系: 类是对象的模板什么叫实例化:照着葫芦画瓢(根据类模板创建一个对象的过程就叫做实例化)类的定义与实例化:class Person: # 类定义 pass'''class Person(object): # 经典类定义 pass'''p = Person() # 实例化类中的东西分为属性...原创 2018-12-26 16:21:07 · 243 阅读 · 0 评论 -
Python_base20181203_xml模块
XML简介:xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。XML的测试文件:<?xml version="1.0"?><data> <country name="Liechtens...原创 2018-12-03 16:39:38 · 150 阅读 · 0 评论 -
Python_base20181203_shelve模块
shelve做的事情是把所有的东西都转换成一个类似字典的东西。shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型。import shelve#f = shelve.open('shelves')f['vth'] = 'vthnb!'f.close()f = shelve.open('...原创 2018-12-03 14:33:13 · 163 阅读 · 0 评论 -
Python_base20181203_pickle模块
用法和json完全一样。import pickledic = {'name':'vth'}f = open('p_test.sb','wb')# p = pickle.dumps(dic)# f.write(p) 这两句和下面这句等价pickle.dump(dic,f)f.close()f = open('p_test.sb','rb')# data = pickle.l...原创 2018-12-03 14:19:26 · 156 阅读 · 0 评论 -
Python_base20181111_function
作用域一句话搞定:调用某函数时,用到的东西跟在哪调用没有关系,主要是看函数定义时的作用域。num = 2def f1(): num = 1 def f2(): print(num) return f2f2 = f1()f2() # 虽然是在外层调用,但是还是去定义处执行,所以输出num是1而不是2等价于num = 2def f1(): ...原创 2018-11-11 21:50:34 · 198 阅读 · 0 评论 -
Python_base20181113_迭代器
迭代器和可迭代对象迭代器与可迭代对象的关系:可迭代对象可以丢进iter()中或者调用自身的__iter__()方法来变成迭代器。迭代器可以通过丢进next()中或者调用自身的__next__()方法来进行迭代。那什么叫可迭代对象呢?可迭代对象就是实现了__iter__()方法的对象。也就是说,迭代的时候,可以直接被迭代的是迭代器。可迭代对象是可以被转换成迭代器的对象。想迭代可迭代对象...原创 2018-11-13 16:50:31 · 88 阅读 · 0 评论 -
python玩acm入门需要知道的
2016级程序设计基础一(2017春季上)(140)实验1---顺序结构程序设计(17) 全部用python写完。实验2----选择结构程序设计(16)全部用python写完。 实验3----while 循环结构程序设计(10)全部用python写完。更新时间(2018.4.17)#print怎么输出后不换行?print(待输出,end = '')#python是允许这...原创 2018-04-13 23:44:38 · 6900 阅读 · 1 评论 -
番外篇:关于提高数据结构与算法素养以及深入底层原理的重要性
码农和程序员的区别就在于是否对底层原理有深入的理解。 通过对千万数量级的list进行处理,可以看到用迭代器,生成器的好处。 硬件配置:i33110M, 4G内存. 代码1:lis = (i for i in range(10000000))#生成器表达式print(sum(lis))本代码耗时2.6s, 初始内存占用53%,运行后内存占用依然53%.代码2:lis = [i...原创 2018-04-25 20:35:06 · 293 阅读 · 0 评论 -
Python_base20181113_file
文件操作打开文件:f = open('文件路径+文件名','打开方式',encoding='编解码方式')f = open('文件路径+文件名','打开方式b') # 注意,以b方式打开文件不允许指定编解码方式文件存储在磁盘上或者在网络上传输的都是二进制流。我们之所以打开一个文件能看到对我们人类阅读友好的文字,是因为打开文件的软件对其进行了解码操作。所以说,我们打开文件时,如果打开方式是...原创 2018-11-13 15:31:25 · 99 阅读 · 0 评论 -
Python_base20181110_function
全局变量与局部变量重新赋值与修改:对于不可变类型来说,重新赋值就是修改。对于可变类型来说,修改是修改,重新赋值是重新赋值。函数中如果没有global关键字,那么会优先去找局部变量,在局部找不到再去全局变量找。这种找法是只能读取不可变的全局变量,无法给不可变的全局变量重新赋值,但是可以修改可变类型的值。比如可以给列表追加元素。如果有global关键字,那么就是声明了在函数中可以操作全局变量,...原创 2018-11-10 19:05:06 · 186 阅读 · 0 评论 -
【0x01】Python_base2018117_list
列表基础创建列表:li = [] # 创建一个空列表li = [1,2,3,'st'] # 创建一个列表li[2] # 索引访问元素li[2:4] # 切片访问元素li[2:] # 从2到结尾li[:-1] # 从开头到-1li[::-1] # 反转列表python中有两套下标机制(n个元素)一种是类C语言的0到n-1.另外一种是从右到左的-1到-n不同于字符串的是...原创 2018-11-07 16:23:55 · 120 阅读 · 0 评论 -
Python_base2018119_function
什么是函数?函数-function,功能。 在我2017到2018的授课(高中数学物理)生涯中,我经常告诉学生,别把函数想的太难了,函数其实就是一个黑盒子。你给它丢进去一个值,他能给你返回一个唯一确定的值。这个东西就叫函数。编程语言中的函数有什么用?用处大了去了。首先,你想写一段代码实现一个复杂的数学函数。'''巴拉巴拉巴拉巴拉'''你会发现,改变x的值时,你需要重新写一遍,特别...原创 2018-11-09 11:05:45 · 162 阅读 · 0 评论 -
Python_base2018119_set&格式化
集合集合的特点:由不同元素组成元素是可以hash的东西(不可变类型)元素是无序的集合的创建:s = {1,2,3,4,5}s1 = set(iterable)用集合可以进行简单的去重操作,但是集合处理完是无序的。如果想要处理完之后有序,可以用set中的元素当作字典的key , 给value绑定有序序列,处理完之后按照value排下序就可以了。集合的关系运算:交set1...原创 2018-11-09 09:58:00 · 183 阅读 · 0 评论 -
python 一文读懂map_reduce_filter
'''python函数式编程map filter reducemap(function,iterable) map接收两个参数,返回一个可迭代对象 第一个参数是一个处理函数,第二个参数是一个可迭代对象 处理函数的作用:接收一个可迭代对象中的元素,改巴改巴再还回去filter(function,iterable) filter接收两个参数,返回一个可迭代对象。...原创 2018-10-28 21:42:59 · 176 阅读 · 0 评论 -
python_FAQ
0x00:引用、浅拷贝、深拷贝先说说引用。num = 10current_num = numprint(num,current_num)print(id(num),id(current_num))输出:10 10140718559253824 140718559253824在以上代码执行期间,发生了这样的事情。第一行代码,先是将10存储到内存中,然后让变量num指向那片内存空间...原创 2018-10-22 22:24:58 · 429 阅读 · 0 评论 -
【0x00】python base str操作
python语言学习前课:python种类:JpythonIronpython(c#)Javascript pythonRubyPythonCpythonpypy - 虽然还不成熟,但是速度特别的快。python能干什么:啥都能干,特别全能。运行速度的问题可以使用高效的算法来弥补。python安装以及环境变量操作:python安装在OS上,写一个文件,文件中按照pytho...原创 2018-10-14 23:06:57 · 1710 阅读 · 0 评论