最近新需求来了,要给系统增加几个资源权限。尽量减少代码的改动和程序的复杂程度。所以还是使用装饰器比较科学之前用了一些登录验证的现成装饰器模块。然后仿写一些用户管理部分的权限装饰器。比如下面这种defpermission_required(permission):defdecorator(f):@wraps(f)defdecorated_function(*args,**kwargs):ifnotcurrent_user.can(permission):ab
系统 2019-09-27 17:55:30 2065
Python传入参数的方法有:位置参数、默认参数、可变参数、关键字参数、和命名关键字参数、以及各种参数调用的组合写在前面Python唯一支持的参数传递方式是『共享传参』(callbysharing)多数面向对象语言都采用这一模式,包括Ruby、Smalltalk和Java(Java的引用类型是这样,基本类型按值传递)共享传参是指函数的各个形式参数获得实参中各个引用的副本;也就是说,函数内部的形参是实参的别名(alias)这种方案的结果是,函数可能会修改作为
系统 2019-09-27 17:55:23 2065
配置好virtualenv和virtualenvwrapper后,使用pycharm创建新项目。之后要面临的问题就来了,之前一直使用的是sqlite作为开发数据库进行学习,按照之前看教程的原则,好像就是说开发环境要和生产环境尽量的一致,所以现在想尝试一下使用更有可能在生产环境部署的mysql数据库进行开发。本觉得是一件应该很轻松的事情,没想到遇到了一些麻烦根据一通百度,搜出来的方案大概有:MySQLdbmysql安装时候自带的connectorpymysq
系统 2019-09-27 17:54:28 2065
每天都有小伙伴询问Python的书,哎呀,动力所致,书单来了。7本,涵盖范围蛮大的。Python热持续中,入门计算机首选语言。python游戏编程快速上手(斯维加特著)(点击,直接下载)本书可以帮助读者在轻松有趣的过程中,掌握Python游戏编程的基本技能。本书适合不同年龄和层次的Python编程初学者阅读。像计算机科学家一样思考Python(点击,直接下载)全书共19章和3个附录,详细介绍了Python语言编程的方方面面。《像计算机科学家一样思考Pyth
系统 2019-09-27 17:54:25 2065
OpenAIgym是强化学习最为流行的实验环境。某种程度上,其接口已经成为了标准。一方面,很多算法实现都是基于gym开发;另一方面,新的场景也会封装成gym接口。经过这样一层抽象,算法与实验环境充分解耦隔离,可以方便地自由组合。但gym是python的接口,如果想用C++实现强化学习算法,则无法直接与gym相接。一种方案是跨进程:一个进程运行python环境,另一个进程运行强化学习算法,与环境交互数据经过序列化和反序列化通过IPC进行通信。另一种是单进程方
系统 2019-09-27 17:53:18 2065
defsend_mail(to_mail,subject,data,filename=None):smtp_server='smtp.exmail.qq.com'from_mail=""mail_pass=""msg=MIMEMultipart()msg["From"]=from_mailmsg["To"]=','.join(to_mail)msg["Subject"]=Header(subject,'utf-8').encode()#构造htmld=da
系统 2019-09-27 17:53:10 2065
概述如今我也是使用Python写代码好多年了,但是我却很少关心GIL的内部机制,导致在写Python多线程程序的时候。今天我们就来看看CPython的源代码,探索一下GIL的源码,了解为什么Python里要存在这个GIL,过程中我会给出一些示例来帮助大家更好的理解GIL。GIL概览有如下代码:staticPyThread_type_lockinterpreter_lock=0;/*ThisistheGIL*/这行代码位于Python2.7源码ceval.c
系统 2019-09-27 17:52:42 2065
最近在自学python,又用python实现了一下BLAST。这次更新了打分函数如下,空位罚分改为-5,但不区分gapopen和gapextend。'''''@author:JiuYu'''defscore(a,b):#scoringfunctionscore=0lst=['AC','GT','CA','TG']ifa==b:score+=2elifa+binlst:score+=-5else:score+=-7returnscoredefBLAST(se
系统 2019-09-27 17:52:10 2065
打包:pyinstaller-F(生成单一运行文件)-i(+图标路径)-w(无控制台)*.py(文件)1.pyinstaller打包报错:RecursionError:maximumrecursiondepthexceeded上一步生成*.spec文件,在*.spec中加入importsyssys.setrecursionlimit(5000)执行命令pyinstaller*.spec2.UnicodeDecodeError:'utf-8'codeccan
系统 2019-09-27 17:51:26 2065
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现:age=20ifage>=18:print'yourageis',ageprint'adult'print'END'注意:==Python代码的缩进规则==。具有相同缩进的代码被视为代码块,上面的3,4行print语句就构成一个代码块(但不包括第5行的print)。如果if语句判断为True,就会执行这个代码块。
系统 2019-09-27 17:51:01 2065