编程/Python
完事不恭的浪子
1、毕业于北京大学,从事技术相关工作,平时也会分享一些文章,用最通俗易懂的话还原最真实的技术难点。
2、工作之外,会分享身边的一些事情,详情关注VX公众号:(shenbianshi88)身边儿事儿【公众号用来分享大千世界的美好,欢迎关注交流】。
3、公众号用来分享生活,不涉及技术,欢迎关注分享。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
pyenv 让 python 版本完美切换
引言:python 版本比较多,2 和 3 相差非常大,很多项目需要跑在同一台服务器上,我们可以选择直接运行,也可以选择使用 docker。如果用 docker 那就不需要隔离环境了,如果要直接运行在服务器上,那就必须有隔离环境。比如有的项目使用 python 3.5,有的项目使用 python 3.7,此时我们可以借助 pyenv 帮助我们完美的隔离环境,让多个版本的 python 没有任何冲突,完美共存。在网上找了一篇很详细示例的博文,现拿来分享给大家。以上内容属于切换不同python版本配原创 2021-02-07 09:21:30 · 309 阅读 · 2 评论 -
Python之延迟计算属性【提升性能篇】
几点说明:1、python类属性的延迟计算:主要目的是为了提升性能2、当然网上的所有例子基本都是大同小异,一个博主的博文被多次拷贝粘贴,实话实说,我也不能免俗,于是乎就用现有的例子进行说明,为了尊重原有作者,我把参考的所有博文进行原有链接的展示。3、读者各君,如有更好的想法,我们可以进行交流。4、参考的联结如下:链接一:点击链接二:点击# python类属性的延迟计算:主要目的是为了提升性能class LazyProperty(object): def __init转载 2021-01-28 09:10:56 · 392 阅读 · 0 评论 -
Python内存优化管理工具之__slot__【提升性能篇】
# __slot__的设计初衷:减少内存的使用,是作为一种内存优化工具来设计的class Data: __slots__ = ['year', 'month', 'day'] def __init__(self, year, month, day): self.year = year self.month = month self.day = day网上一篇博文写的很精彩,现拿来分享。以上内容属于Python进阶比较经典的用法.原创 2021-01-27 16:41:58 · 307 阅读 · 0 评论 -
Python语言进阶之【collections模块】
from collections import Counter# 在自然语言处理领域,这个工具很好用words = words = [ 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes', 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the', 'eyes', "don't", 'look', 'around', 'the', '.原创 2021-01-22 10:05:51 · 126 阅读 · 0 评论 -
Python语言进阶之【headq模块】堆排序
# python的headq模块# 从列表中找出最大或者最小的N个元素import heapqimport heapqlist1 = [34, 25, 12, 99, 87, 63, 58, 78, 88, 92]list2 = [ {'name': 'huawei', 'shares': 100, 'price': 91.1}, {'name': 'xiaomi', 'shares': 50, 'price': 543.22}, {'name': 'apple',.原创 2021-01-22 09:55:02 · 400 阅读 · 0 评论 -
Python语言进阶之【列表推导式&列表嵌套】
# 列表推导式prices = { 'apple': 1000, 'huawei': 999, 'xiaomi': 900, 'oppo': 800, 'vivo': 700, 'meizu': 600}prices2 = {key: value for key, value in prices.items() if value > 100}print(prices2)# 列表嵌套names = ['张三', '李四', '王五'.原创 2021-01-22 09:41:25 · 299 阅读 · 0 评论 -
Ubuntu18.04安装python3.7
1、更换国内镜像源:# 备份mv /etc/apt/sources.list /etc/apt/sourses.list.backup# 新建vim /etc/apt/sources.list# 新建的文件更新为清华源# 进入链接https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/# 选择对应的版本,粘贴复制即可# 更新操作apt updateapt upgrade2、其他一些apt命令汇总sudo apt-原创 2020-06-17 11:07:45 · 518 阅读 · 0 评论 -
Linux之python【让源码更安全之将py编译成so】
这里有这样一个应用场景:python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将产品发布到外部环境的时候,源码的保护尤为重要。# 首先确保你是用的是Linux系统,并且安装了Python环境# 这里小编使用的是Centos7,Python版本是3.7# 同时确保你安装了python-devel,gcc# 如果没有安装,请执行如下命令yum install python-develyum .原创 2020-06-04 16:12:01 · 494 阅读 · 1 评论 -
Linux环境(服务器)下非root用户安装Python3
安装python版本# 在管理项目集群时候,遇到的问题——非root用户在搭建自己环境时候,如何搭建?以下提供安装步骤供参考。# root用户的根目录是root,非root用户的根目录是在/home下面。下面操作均在用户根目录下操作。# 下载python安装包 # python版本库:https://www.python.org/ftp/python/# 可以根据需要选择对应的python版本,这里以python3.6为例提供说明wget https://www.python.org.原创 2020-05-09 13:37:03 · 4786 阅读 · 9 评论 -
python官方文档:批量安装标准库,很简单值得收藏!
原创 2020-04-23 11:18:37 · 177 阅读 · 0 评论 -
如何在ubuntu18安装python3.7虚拟环境?亲测有效!!!
在python官方文档中似乎给出了安装和使用说明,但是小编测试并没有成功,于是乎便“另寻出路”。官方文档说明如下:下面是小编的实际操作,以腾讯云的ubuntu18为例说明:step1: 更改python3 的默认环境为3.7step2:选择2step3:使用python3.7建立虚拟环境需要注意:从Python3.3起,Python支持venv ,但是ap...原创 2020-04-23 10:43:15 · 1165 阅读 · 1 评论 -
这是我见过最简单的excel导入MySQL的方法
# 全部使用python内置库~~import pymysqlimport pandas as pdfrom sqlalchemy import create_enginefile = r'ceshi.xlsx'df = pd.read_excel(file, sheet_name=0)# 注意:首先你需要建立数据库 本例用 ceshiengine = create_engin...原创 2020-01-13 15:46:06 · 288 阅读 · 0 评论 -
Python之反射
# -*- coding: utf-8 -*-# @File : python反射.py# @Author: # @Date : 2019/12/23# @Desc :# Python的四个重要内置函数:getattr()、hasattr()、delattr()和setattr()较为全面的实现了基于字符串的反射机制。# 它们都是对内存中的模块进行操作,并不会对源文件进行修改...原创 2019-12-23 15:12:27 · 135 阅读 · 0 评论 -
再谈Python之@property装饰器
# -*- coding: utf-8 -*-# @File : python@property装饰器.py# @Author: # @Date : 2019/12/23# @Desc :# Python内置的 @property 装饰器可以把类的方法伪装成属性调用的方式;# 方法一:class People(object): def __init__(self,...原创 2019-12-23 11:07:17 · 131 阅读 · 0 评论 -
Python之变量作用域
# -*- coding: utf-8 -*-# @File : 变量作用域.py# @Author: # @Date : 2019/12/23# @Desc :# 变量的作用域决定了程序的哪一部分可以访问哪个特定的变量名称。Python的作用域一共有4层,分别是:## L (Local) 局部作用域# E (Enclosing) 闭包函数外的函数中# G (Globa...原创 2019-12-23 11:06:15 · 171 阅读 · 0 评论 -
Python技巧篇
# 列表推导(List comprehension)、字典推导(Dictionary comprehensions)、集合推导(Set comprehensions)类似# # 列表推导# my_list = [1, 2, 3, 4, 5]# change_my_list = [x + 1 for x in my_list]## print(change_my_list)## #...原创 2019-12-20 16:03:17 · 129 阅读 · 0 评论 -
Python进阶之:闭包
''' 在Python中,闭包需要满足三要素: 1.定义嵌套函数,包括外层函数和内存函数 2.内层函数要引用外层函数中的变量 3.外层函数需要返回内层函数(注意:返回的是内层函数本身,而不是内层函数执行后的返回值)'''# 装饰器是闭包的一个应用# import time## def timing(func):# def wrapper(*arg...原创 2019-12-20 10:44:04 · 275 阅读 · 0 评论 -
Python之:sys&os&time&map&sorted&iter&next&zip
'''sys 是一个和 python 解释器密切相关的标准库os 是一个和操作系统密切相关的标准库'''# -*- coding:utf-8 -*-# import sys## def multi_sum(args):# return sum(args)## if __name__ == '__main__':# print(sys.argv)# ...原创 2019-12-20 10:40:46 · 161 阅读 · 0 评论 -
Python之:math&random
# mathimport mathprint(math.gcd(9,6)) # 最大公约数# 打乱函数import randomlist = [1,2,3,4,5,6,7,8,9,10]list1 = random.shuffle(list)print(list) # 注意此处是 list , 不是 list1 因为 list1 本身是个函数,只是修改已有的对象,不会生成新的...原创 2019-12-20 10:36:59 · 234 阅读 · 0 评论 -
Python进阶之:单例模式实现方法汇总
# -*- coding: utf-8 -*-# @File : 单例模式.py# @Author: dianxiaoer# @Date : 2019/12/20# @Desc :'''单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。比...原创 2019-12-20 10:33:32 · 217 阅读 · 0 评论 -
Python进阶之:元类
# 几个魔术方法: __new__、__init__、__call__# __new__: 对象的创建,是一个静态方法,第一个参数是cls;(想想也是,不可能是self,对象还没创建,哪来的self)# __init__ : 对象的初始化, 是一个实例方法,第一个参数是self;# __call__ : 对象可call,注意不是类,是对象。class Bar(object): ...原创 2019-12-20 10:31:26 · 167 阅读 · 0 评论 -
Python进阶之:iter
'''在某些情况下,我们希望实例对象可被用于 for...in 循环,这时我们需要在类中定义 __iter__ 和 next(在 Python3 中是 __next__)方法,其中,__iter__ 返回一个迭代对象,next 返回容器的下一个元素,在没有后续元素时抛出 StopIteration 异常。'''class Fib(object): def __init__(se...原创 2019-12-20 10:27:04 · 171 阅读 · 0 评论 -
Python进阶之:type VS isinstance
# 函数isinstance()用来判断一个实例是否是指定类型的实例# 返回 True False# isinstance 考虑了继承关系# type VS isinstance# type 返回指定实例的类型# isinstance 返回指定实例是否是指定类的实例的布尔值...原创 2019-12-20 10:25:41 · 133 阅读 · 0 评论 -
Python进阶之:__getitem__
'''有时,我们希望可以使用 obj[n] 这种方式对实例对象进行取值,比如对斐波那契数列,我们希望可以取出其中的某一项,这时我们需要在类中实现 __getitem__ 方法,比如下面的例子:'''# class Fib(object):# def __getitem__(self, item):# a,b = 1,1# for x in ...原创 2019-12-20 10:24:01 · 472 阅读 · 0 评论 -
Python阶级之:call
# 功能需求:对实例的调用要像函数一样# 采用 __call__class Point(object): def __init__(self,x,y): self.x,self.y = x,y def __call__(self, z): return self.x + self.y + zp = Point(3,4)print(cal...原创 2019-12-20 10:22:15 · 170 阅读 · 0 评论 -
python之函数(28)(动态补充)
# 函数类型参数# 联想到python中的装饰器import datetimedef timer(t, start, finished): t_start = datetime.datetime.now() if start: start() while True: t_end = datetime.datetime.now()...原创 2019-11-22 16:15:01 · 197 阅读 · 0 评论 -
python之元组解包(27)
# 元组解包必须是可迭代的对象# 其实在python中元组解包不仅仅只限于元组,只要是可迭代的如列表、元组、字典、字符串、range()等,都是可以的a,*b = range(10)a,*b = {}.values()a,*b = {}.items()a,*b = {}# 可变参数解包def f(*args): print(args)l = [1,2,3,4,5...原创 2019-11-22 14:57:15 · 1548 阅读 · 1 评论 -
python之调用父类的构造方法(26)
## @File :# @Author: dianxiaoer# @Date : 2019/11/12# @Desc :调用父类的构造方法# 网上的一段代码# class Employee :# def __init__ (self, salary):# self.salary = salary# def work (self):# ...原创 2019-11-12 14:42:29 · 360 阅读 · 0 评论 -
python之类的属性、类的实例、类方法、实例方法、静态方法(25)
# -*- coding: utf-8 -*-# @File :# @Author: dianxiaoer# @Date : 2019/11/11# @Desc : 类的属性、类的实例、类方法、实例方法、静态方法# # 1、定义一个类# class Person:# pass# # 2、创建实例# zhangsan = Person()# lisi = Per...原创 2019-11-11 15:43:16 · 215 阅读 · 0 评论 -
python之装饰器(25)【后续补充】
# -*- coding: utf-8 -*-# @File :# @Author: dianxiaoer# @Date : 2019/11/11# @Desc :# python装饰器(fuctional decorators)就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能;# 功能需求:对原函数增加计时功能# 常规思路...原创 2019-11-11 10:53:27 · 145 阅读 · 0 评论 -
python之守护线程、守护进程(24)【后续补充】
## @File :# @Author: dianxiaoer# @Date : 2019/11/7# @Desc :#有一种线程,它是在后台运行的,它的任务是为其他线程提供服务,这种线程被称为“后台线程(Daemon Thread)”,又称为“守护线程”或“精灵线程”,Python 解释器的垃圾回收线程就是典型的后台线程;#后台线程有一个特征,如果所有的前台线程都死亡了,那...原创 2019-11-07 15:19:50 · 219 阅读 · 1 评论 -
python之@property(23)【动态更新补充python元类】
## @File :# @Author: dianxiaoer# @Date : 2019/11/6# @Desc :# @property属性# 在绑定属性时候,如果直接把属性暴露出来,虽然操作简单,但是缺少检查参数的步骤,导致参数可以随便修改# 代码如下:# class Student(object):## def get_score(self):# ...原创 2019-11-06 14:43:14 · 199 阅读 · 0 评论 -
python之鸭子类型(22)
## @File :# @Author: dianxiaoer# @Date : 2019/11/5# @Desc :# Duck typing 这个概念来源于美国印第安纳州的诗人詹姆斯·惠特科姆·莱利(James Whitcomb Riley,1849- 1916)的诗句:”When I see a bird that walks like a duck and swims ...原创 2019-11-05 15:08:22 · 189 阅读 · 0 评论 -
python之迭代器&生成器(21)
## @File :# @Author: dianxiaoer# @Date : 2019/11/5# @Desc :##############################迭代器################################## string = "dianxiaoer"# it = iter(string)# while True:# ...原创 2019-11-05 14:40:14 · 118 阅读 · 0 评论 -
魔法方法之定制序列
## @File :# @Author: kaibin# @Date : 2019/11/5# @Desc :# 容器类型的协议:如果你希望定制的容器不可变,则只需要定义__len__()和__getitem__()# 可变, __len__()和__getitem__()和 __se...原创 2019-11-05 14:20:06 · 118 阅读 · 0 评论 -
魔术方法之描述符
## @File :# @Author: dianxiaoer# @Date : 2019/11/5# @Desc :# __getattr__() 定义当用户试图访问一个不存在的属性时的行为# __getattribute__() 定义当该类的属性被访问时的行为# class C:# def __getattribute__(self, name):# ...原创 2019-11-05 11:00:27 · 133 阅读 · 0 评论 -
魔术方法补充【更新中】
## @File : 魔法方法# @Author: dianxiaoer# @Date : 2019/11/4# @Desc :'''第一个魔法方法是:__new__,而不是__init__'''# # python构造方法# class CapStr(str):# # def __init__(self,x,y):# # self.x =...原创 2019-11-04 16:40:30 · 109 阅读 · 0 评论 -
Python之Event
如果某一个线程执行,需要判断另一个线程的状态,就可以使用Event;用Event类初始化一个event对象,线程执行到某一步,设置event.wait(),即改线程阻塞,直到另一个线程设置event.set(),将event状态设置为True(默认是False)。#网上的一段代码,感觉写的很形象具体,这里用来举例说明import threadingimport time, rand...原创 2019-10-23 16:35:33 · 266 阅读 · 0 评论 -
Python之threading.Semaphore和BoundedSemaphore
1、semaphore是一个内置的计数器;2、能够并发执行的线程数,超出的线程阻塞,直到有线程运行完成;每当调用acquire()时内置计数器-1;调用release() 时内置计数器+1;3、计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release();import timeimport threadingdef foo():...原创 2019-10-23 16:27:58 · 926 阅读 · 0 评论 -
Python之进程通信(9)
def download(q): images = ["01.jpg", "02.jpg", "03.jpg", "04.jpg", "05.jpg"] for image in images: print("正在下载:", image) sleep(0.5) q.put(image)def getfile(q): w...原创 2019-08-30 11:04:42 · 142 阅读 · 0 评论
分享