作者:HelloGitHub-ProdesireHelloGitHub的《讲解开源项目》系列,项目地址:https://github.com/HelloGitHub-Team/Article前言在前面三篇介绍argparse的文章中,我们全面了解了argparse的能力,相信不少小伙伴们都已经摩拳擦掌,想要打造一个属于自己的命令行工具。本文将以我们日常工作中最常见的git命令为例,讲解如何使用argparse库来实现一个真正可用的命令行程序。本系列文章默认
系统 2019-09-27 17:52:35 1588
由于工作的需求,需要用python做一个类似网络爬虫的采集器。虽然Python的urllib模块提供更加方便简洁操作,但是涉及到一些底层的需求,如手动设定User-Agent,Referer等,所以选择了直接用socket进行设计。当然,这样的话,需要对HTTP协议比较熟悉,HTTP协议这里就不做讲解了。整个python的代码如下:#!/usr/binenvpythonimportsockethost="www.baidu.com"se=socket.so
系统 2019-09-27 17:52:30 1588
一位置传递没什么好过多讲解.#位置传递实例:deffun1(a,b,c):returna+b+cprint(fun1(1,2,3))输出:6二关键字传递更具每个参数的名字写入函数参数#关键字传递deffun2(a,b,c):returna+b+cprint(fun2(1,c=3,b=2))输出:6三参数默认值传递给函数的输入参数设定一个默认值,如果该参数最终没有输入,则使用默认参数出入函数.#默认值传递deffun3(a,b=2,c=3):returna+
系统 2019-09-27 17:52:29 1588
今天模拟定义map函数.写着写着就发现Python可变长度参数的机制真是灵活而强大.假设有一个元组t,包含n个成员:t=(arg1,...,argn)而一个函数f恰好能接受n个参数:f(arg1,...,argn)f(t)这种做法显然是错的,那么如何把t的各成员作为独立的参数传给f,以便达到f(arg1,...,argn)的效果?我一开始想到的是很原始的解法,先把t的各个成员变为字符串的形式,再用英文逗号把它们串联起来,形成一个"标准参数字符串":str_
系统 2019-09-27 17:52:29 1588
前言学习一个库的最好的方式是了解这个库的源码和组成原理,有时候源码可能会略显生涩,这时候我们想通过查看文档来了解,所以我们可以通过输出库自带的描述文档来了解一个库。Numpy和Scipy模块numpy提供了数组对象,面向的任何使用者。scipy在numpy的基础上,面向科学家和工程师,提供了更为精准和广泛的函数。scipy几乎实现numpy的所有函数,一般而言,如果scipy和numpy都有这个函数的话,应该用scipy中的版本,因为scipy中的版本往往
系统 2019-09-27 17:52:27 1588
目录第十五章、Python多线程同步锁,死锁和递归锁1.引子:2.同步锁3.死锁引子:4.递归锁RLock原理:不多说,放代码总结:5.大总结第十五章、Python多线程同步锁,死锁和递归锁1.引子:1.创建线程对象t1=threading.Thread(target=say,args=('tony',))2.启动线程t1.start()后面又说了两个点就是join和守护线程的概念以上就是python多线程的基本使用说明:前面说的两个功能是相互独立的,
系统 2019-09-27 17:51:52 1588
感觉这种理解有问题,举个例子来说。classDog(object):name='dog'definit(self):self.age=18d1=Dog()d2=Dog()这里有两个实例d1,d2吧。d1.name#输出dogd2.name#输出dogd1.name='abc'd1.name#输出abcd2.name#输出dogDog.name#输出dog原因是d1.name输出dog不是因为这个实例共享了类属性,而是因为这个实例没有dog属性,所以pyth
系统 2019-09-27 17:51:12 1588
一、定义函数def函数名():函数体代码例:#定义函数defemail():print('sendemail')#调用执行函数email()二、函数的返回值defemail():print("sendemail")return"发送成功"#没有return,默认返回Noneret=email()#函数return后面是什么值,ret等于返回值print(ret)注意:一旦遇到return,函数内部return以下的代码不再执行。三、函数的普通参数defem
系统 2019-09-27 17:51:12 1588
在用BeautifulSoup进行抓取页面的时候,会各种各样的编码错误。可以通过在beautifulsoup中指定字符编码,解决问题。复制代码代码如下:importurllib2fromBeautifulSoupimportBeautifulSouppage=urllib2.urlopen('http://www.163.com');soup=BeautifulSoup(page,from_encoding="gb2312")printsoup.origi
系统 2019-09-27 17:51:09 1588
不管是啥语言都离不开加减乘除这些算法,但是在Python里面你知道这些符号代表什么运算吗?“/”这个是除法运算,那么这个“//”呢?“*”这个是乘法运算,那么这个“**”呢?下面来一一介绍下。“//”运算除法运算符是“/”,这个人人皆知道,但是这个二元运算符“/”求出来的结果都是取决于操作数本身的,比如:复制代码代码如下:20/3620/3.06.66666666666666720.0/36.66666666666666720.0/3.06.6666666
系统 2019-09-27 17:51:01 1588