文章的主题不要使用可变对象作为函数的默认参数例如list,dict,因为def是一个可执行语句,只有def执行的时候才会计算默认默认参数的值,所以使用默认参数会造成函数执行的时候一直在使用同一个对象,引起bug。基本原理在Python源码中,我们使用def来定义函数或者方法。在其他语言中,类似的东西往往只是一一个语法声明关键字,但def却是一个可执行的指令。Python代码执行的时候先会使用compile将其编译成PyCodeObject.PyCodeOb
系统 2019-09-27 17:45:28 1987
random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串。•random.seed(x)改变随机数生成器的种子seed。一般不必特别去设定seed,Python会自动选择seed。•random.random()用于生成一个随机浮点数n,0<=n<1•random.uniform(a,b)用于生成一个指定范围内的随机浮点数,生成的随机整数a<=n<=b;•random.randint(a,b)用于生成一个指定范围内的整数,a为下限,b为上限
系统 2019-09-27 17:45:26 1987
对于三目运算符(ternaryoperator),python可以用conditionalexpressions来替代如对于x<5?1:0可以用下面的方式来实现1ifx<5else0注:conditionalexpressions是在python2.5之前引入的,所以以上代码仅适用于2.5以及之后的版本对于2.5之前的版本,可以用下面这种形式X<5and1or0对于switch,我们完全可以用dictionary来实现,看下面的例子>>>defswitch
系统 2019-09-27 17:38:18 1987
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了python作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在performance较差的机器上,因此有必要进行一定的代码优化来提高程序的执行效率。如何进行Python性能优化,是本文探讨的主要问题。本文会涉及常见的代码优化方法,性能优化工具的使用以及如何诊断代码的性能瓶颈等内容,希望可以给Python开发人员一定的参考。代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的
系统 2019-09-27 17:38:10 1987
一直想做个能帮我过滤出优质文章和博客的平台给它取了个名叫Moven。。把实现它的过程分成了三个阶段:1.Downloader:对于指定的url的下载并把获得的内容传递给Analyser--这是最简单的开始2.Analyser:对于接受到的内容,用RegularExpression或是XPath或是BeautifulSoup/lxml进行过滤和简化--这部分也不是太难3.SmartCrawler:去抓取优质文章的链接--这部分是最难的:Crawler的话可以
系统 2019-09-27 17:38:09 1987
在学习python的时候,一定会遇到网站内容是通过ajax动态请求、异步刷新生成的json数据的情况,并且通过python使用之前爬取静态网页内容的方式是不可以实现的,所以这篇文章将要讲述如果在python中爬取ajax动态生成的数据。至于读取静态网页内容的方式,有兴趣的可以查看本文内容。这里我们以爬取淘宝评论为例子讲解一下如何去做到的。这里主要分为了四步:一获取淘宝评论时,ajax请求链接(url)二获取该ajax请求返回的json数据三使用python
系统 2019-09-27 17:38:05 1987
前言相信对于python开发人员来说,机器上有不同的python版本是很正常的,因为开发的项目有的用2.6或2.7,有的就要用3.0+版本,如何把这些不同的版本管理好,保持每个环境的干净和独立,方便不同版本之间的切换,这时候就要用到我们的虚拟环境了,所以今天我们就来看看python虚拟环境搭建工具pyenv的使用。1、安装gitclonehttps://github.com/yyuu/pyenv.git~/.pyenvecho‘exportPYENV_RO
系统 2019-09-27 17:38:00 1987
我们最终的视图技巧利用了一个高级python技术。假设你发现自己在各个不同视图里重复了大量代码,就像这个例子:defmy_view1(request):ifnotrequest.user.is_authenticated():returnHttpResponseRedirect('/accounts/login/')#...returnrender_to_response('template1.html')defmy_view2(request):ifno
系统 2019-09-27 17:37:44 1987
多线程开发可能遇到的问题假设两个线程t1和t2都要对num=0进行增1运算,t1和t2都各对num修改1000000次,num的最终的结果应该为2000000。但是由于是多线程访问,有可能出现下面情况:fromthreadingimportThreadimporttimenum=0deftest1():globalnumforiinrange(1000000):num+=1print("--test1--num=%d"%num)deftest2():glo
系统 2019-09-27 17:57:16 1986
djangostatic文件夹下面的内容方法不了出现404500错误需要查看自己的settings文件确保有一下内容importosPROJECT_ROOT=os.path.dirname(__file__)DEBUG=TrueSTATIC_URL='/static/'STATICFILES_DIRS=(os.path.join(PROJECT_ROOT,'static'),)STATICFILES_FINDERS=('django.contrib.sta
系统 2019-09-27 17:56:54 1986
Python队列Queue队列是一种先进先出(FIFO)的数据类型,新的元素通过入队的方式添加进Queue的末尾,出队就是从Queue的头部删除元素.用列表来做Queue:queue=[]#初始化一个列表数据类型对象,作为一个队列defenQ():#定义一个入栈方法queue.append(raw_input('EnterNewString:').strip())#提示输入一个入队的String对象,调用Str.strip()保证输入的String值不包含
系统 2019-09-27 17:56:49 1986
本文实例讲述了Python单链表的简单实现方法,分享给大家供大家参考。具体方法如下:通常来说,要定义一个单链表,首先定义链表元素:Element.它包含3个字段:list:标识自己属于哪一个listdatum:改元素的valuenext:下一个节点的位置具体实现代码如下:classLinkedList(object):classElement(object):def__init__(self,list,datum,next):self._list=list
系统 2019-09-27 17:56:39 1986
student=[]defprint_menu():print("学生管理系统V2.0")print("="*30)print("1.添加学生基本信息")print("2.通过学号删除学生信息")print("3.显示全部学生信息")print("4.通过姓名查找学生的信息")print("5.通过学号修改学生信息")print("6.导出学生基本信息到指定路径的文件中")print("7.查询成绩最高的学生基本信息")print("8.查询成绩最低的学生
系统 2019-09-27 17:56:15 1986
1、json.dumps:是将dict转成str2、json.dump:是将python数据保存成json3、json.load:是将文件中的json数据读取出来,转换成python数据类型
系统 2019-09-27 17:56:12 1986
1.经典类与新式类在了解Python的类与类型前,需要对Python的经典类(classicclasses)与新式类(new-styleclasses)有个简单的概念。在Python2.x及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性;反之,即不由任意内置类型派生出的类,则称之为“经典类”。“新式类”和“经典类”的区分在Python3.x之后就已经不存在,在Python3.x之
系统 2019-09-27 17:55:45 1986