作者:HelloGitHub-ProdesireHelloGitHub的《讲解开源项目》系列,项目地址:https://github.com/HelloGitHub-Team/Article前言在前面三篇介绍argparse的文章中,我们全面了解了argparse的能力,相信不少小伙伴们都已经摩拳擦掌,想要打造一个属于自己的命令行工具。本文将以我们日常工作中最常见的git命令为例,讲解如何使用argparse库来实现一个真正可用的命令行程序。本系列文章默认
系统 2019-09-27 17:52:35 1927
1.锁:Lock(1次放1个)同步锁线程安全,多线程操作时,内部会让所有线程排队处理。如:list/dict/Queue线程不安全+人=>排队处理。需求:a.创建100个线程,在列表中追加8b.创建100个线程v=[]锁-把自己的添加到列表中。-在读取列表的最后一个。解锁以后锁一个代码块:importthreadingimporttimev=[]lock=threading.Lock()deffunc(arg):lock.acquire()#锁的区域---
系统 2019-09-27 17:52:33 1927
前序Thereshouldbeone-andpreferablyonlyone-obviouswaytodoit.――――theZenofPython意译:Python提倡用一种,而且最好是只有一种方法来完成一件事虽然Python有以上的提倡,但却在字符串格式化方面,没有做到这一点。字符串格式化敲黑板,划重点:在Python中有至少三种常见方式实现字符串格式化:%-formatting格式(Python2.6以前,推荐输出时使用)str.format()格
系统 2019-09-27 17:52:21 1927
MongoDB是目前最流行的NoSQL数据库之一,使用的数据类型BSON(类似JSON)。1.安装Mongodb和pymongoMongodb的安装和配置Mongodb的安装教程请网上搜索,安装完成后,进行以下配置过程:1.1创建目录,该目录为Mongodb数据文件的存放目录:*注:本人使用的不是root用户,所以修改目录的拥有者.*sudomkdir/datasudochown-Rpython:python/datamkdir/data/db1.2分别执
系统 2019-09-27 17:52:16 1927
尽管内容可能有些老,但是没有关系,对于想深入Python开发的工作者,在选择GUI开发包,乃至可视化IDE方面都还有相当的借鉴意义。Python最大的特点就在于她的快速开发功能。作为一种胶水型语言,python几乎可以渗透在我们编程过程中的各个领域。这里我简单介绍一下用python进行gui开发的一些选择。1、TkinterTkinter似乎是与tcl语言同时发展起来的一种界面库。tkinter是python的配备的标准gui库,也是opensource的
系统 2019-09-27 17:52:05 1927
前言一般情况下,在函数中可以使用一个装饰器,但是有时也会有两个或两个以上的装饰器。多个装饰器装饰的顺序是从里到外(就近原则),而调用的顺序是从外到里(就远原则)。原代码执行结果装饰顺序:就近原则被装饰的函数,组装装饰器时,是从下往上装饰执行顺序:就远原则装饰器调用时是从上往下调用为了更好的理解,找到这段话:被装饰的函数是一个妹子,装饰器是衣服。“办事情”的时候得依次把外套、衬衣、内衣脱掉,事情办完了还要依次把内衣、衬衣、外套穿上。距离“妹子”越近的装饰器代
系统 2019-09-27 17:51:26 1927
主机环境:(Python2.7.9/Win8_64/bs4)利用BeautifulSoup4来抓取www.pm25.com上的PM2.5数据,之所以抓取这个网站,是因为上面有城市PM2.5浓度排名(其实真正的原因是,它是百度搜PM2.5出来的第一个网站!)程序里只对比了两个城市,所以多线程的速度提升并不是很明显,大家可以弄10个城市并开10个线程试试。最后吐槽一下:上海的空气质量怎么这么差!!!PM25.py复制代码代码如下:#!/usr/bin/envp
系统 2019-09-27 17:51:23 1927
模块Module定义包含一系列数据、函数、类的文件,通常以.py结尾。作用让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。有利于多人合作开发。导入import1.语法:import模块名import模块名as别名2.作用:将某模块整体导入到当前模块中3.使用:模块名.成员fromimport1.语法:from模块名import成员名[as别名1]作用:将模块内的一个或多个成员导入到当前模块的作用域中。fromimport*1.语法:fro
系统 2019-09-27 17:51:00 1927
什么是浅拷贝?先看一个例子a=[1,2,3,4]b=aa.pop(0)print(a)print(b)输出:[2,3,4][2,3,4]正常对于这种可变对象的这种赋值,会导致a和b指向一个内存地址,而我们将a中的第0个元素剔除后,实质就是改变了对应的内存地址中的数值,所以会导致b也发生变化下面看一下浅拷贝:a=[1,2,3,4]b=a.copy()a.pop(0)print(a)print(b)输出[2,3,4][1,2,3,4]这种就是浅拷贝,拷贝的列表
系统 2019-09-27 17:50:34 1927
類別定義class類別名:例如:>>>classPoint:...x=0.0...y=0.01.宣告>>>p1=Point()>>>p1.x,p1.y(0.0,0.0)2.賦値>>>p1.x=5.0>>>p1.y=6.0>>>p1.x,p1.y(5.0,6.0)3.位址指向>>>p1<__main__.Pointobjectat0x00000000021B22E8>>>>id(p1.x)30060832>>>id(p1.y)300608084.別名Alia
系统 2019-09-27 17:50:30 1927