python开发中遇到什么问题问题

相信大家去面试前端开发职位的時候面试官都会提到是否了解和熟悉后端开发,有后端开发经验者优先录取所以对于工程师,在的同时应该去关注和学习后端开发嘚技术知识,毕竟多一份技能多一点“工资”,多一点竞争优势现在流行全栈工程师,这个职位很吃香工资又高,相信很多人都想挑战下吧OK,那就来吧今天一起来了解下此次分享主题:用python开发中遇到什么问题进行Web开发中常用的框架。

我们知道Web开发最重要的是选择匼适的框架一个好的框架可以极大的提高我们开发的效率,也能帮助我们的应用能按照需求快速迭代Web框架的数量和质量是一个语言是否成熟的标志之一。PHP下有Lararel、CodeIgniterYii、TP等著名框架使得PHP成为最流行的Web语言之一。Ruby借助其强大框架Rails以RoR(Ruby on Rails)生态开辟了一番天地很多RoR应用以强大的功能和敏捷能力而闻名,比如知名Git服务器系统Gitlab那么时下最流行的语言python开发中遇到什么问题 Web框架的情况怎么样呢?今天虫虫就来给大家介紹这个

python开发中遇到什么问题和PHP一样,也有着大量的Web框架其Web框架生态圈非常广泛和多样化。在进入具体主题之前我们先介绍下Web框架。

Web框架是对常见通用功能的打包比如Web权限认证模块、导航路由模块、HTTP解析模块、ORM模块以及做扩展使用的插件体系等,打包这些功能可以让開发人员轻松地创建Web应用程序是一种高层次的代码和应用逻辑重用方法,可以极大的它减少了开发人员花在编写代码上的时间从而提高開发效率通过提供现成的解决方案,Web应用程序框架可以帮助开发人员短时间内完成应用的开发并持续的迭代

说到python开发中遇到什么问题嘚Web框架,无疑最想到的必然是DjangoDjango和Larael最初都是借鉴了RoR的强大思想(动态、DDD、约定优于配置、低重复、及时反馈)。Django框架使用了类MC的MT(模型、視图、模板)模式用Django ORM和数据库联系。

Django ORM内置的管理面板可以轻松实现数据库内容的管理。使用很少的配置就可能自动生成数据库模型。

视图可以包括函数和类视图的URL路由分配在urls.py文件中完成,可以设计出完美优雅的URL调度

Django的模板的系统则相当简单,甚至不支持直接嵌入玳码需要预先生成Tag、Filter才能调用。

Django支持强大的解决方案:

Django是典型的"大而全"的逻辑这可以极大的方便大多数开发者。但是这就导致其灵活性不足要引入其他更好的第三方优秀组件就基本上很难,比如想要在Django里用SLAlchemy或Mako需要打上很多补丁,而且会导致管理面板授权,会话处悝或生成表单等功能都不能使用

当然Django最人性化的地方是其强大的社区支持和详细文档完美的文档Django 书。文档在***后就完全嵌入系统的各個部分使用非常方便,这使得其开发的入门门槛很低

最后给一个Django网站模型的示例:

Pyramid也是一个常用的热门python开发中遇到什么问题 Web框架,它源于Pylons和repoze.bfg模块在吸取精华的基础上使得Pyramid快速成长为了一个成熟和稳定的框架。

虽然两者出现的时间差不多(2005)Pyramid和Django的设计思想则大相径庭。Pyramid非常灵活很容易定制,可以非常自我的方式以创建特征Pyramid不会强迫使用框架的习语,对于复杂或高度非标准的项目来说这点非常有鼡。

虽然也内置ORM模块但是更倡导使用成熟的SLAlchemy ORM。你也可以按照喜好来定制比如你可能喜欢peewee ORM,使用原始SL查询或与NoSL数据库集成

Pyramid中所有选项嘟是开放式的,所以需要动手能力强一点可能最初学者稍有点门槛。

web2py源于一个教学范例框架其最关心的是是易于开发和部署。

Web2py框架也源于RoR和Django思想的启发奉行约定优于配置的想法,web2py中有很多合理的默认值允许开发人员快速启动。

Web2py框架自带了很多模块比如内置服务器,生成HTML的帮助器表单,验证器等等但是Web2py多数据库引擎的支持很简单。其他内置的功能有:

事件工单系统允许自动将生产环境中发生嘚问题分配给开发人员。

Web2py也宣称提供全栈式解决方案,提供可能需要的一切模块

Web2py在线提供了大量文档:

从零开始逐步指导入门,比如簡要介绍python开发中遇到什么问题语言以友好的方式展示web2py的各个功能,包括大量代码示例和屏幕截图等

尽管具有一定竞争优势,但web2py的社区遠远小于Django和Pyramid其官方邮件列表也不大活跃。另外web2py目前还不能和python开发中遇到什么问题 3不兼容

web2py一个典型的广告模型示例:

与大而全思想相反嘚设计思想是,小而精致的设计这就是微框架。微框架的好处就是没有冗余因而性能都很好。

Flask是除了Django外最流行的python开发中遇到什么问题 Web框架Flask是一个微框架,具备了基本功能也支持轻松的扩展。因此Flask更适合做为胶水来用,来粘合各个Web库

Flask框架的座右铭是轻量,"一次一滴"(one drop at a time)这也在其文档中得到全面反映。关于如何构建Flash应用程序可以通过点点滴滴方式学习阅读几段文档后,就能适应其开发任务了

茬Flash中你不需要一次就学习很多东西,尤其高级的功能知道你真正需要的时候再学不迟,这样可以避免无实践的"尴学"

Flask的最大问题是,没囿大量Flask扩展支持和功能打包常常遇到扩展插件停更或者文档过时的情况,需要花费大量的精力处理这些情况

Flask一个简单示例如下:

Falcon 猎鹰吔是一个比较流行的微框架。其目标是创建一个简洁、轻量地Web应用程序基础官方宣称Falcon是一个裸壳(bare-metal),无限膨胀(bloat-free)的工具集用于快速的构建后端代码和微服务。Falcon兼容python开发中遇到什么问题 2和3不用担心python开发中遇到什么问题的版本问题。

Falcon的一大优势在于其性能非常高非瑺快。其官方网站基准测试显示其比Django或Flask等具有很高的性能优势(27~75倍)。 

Falcon缺点是其打包模块有点太少有路由,中间件钩子,除此之外僦不提供其他功能了(裸壳)额外其他功能,比如验证等都需要开发人员来开发扩展因为其设计中就假设用于构建REST API。

当然其高性能的高度定制的特点确实是一个很好的卖点毕竟有时候"最简单的解决方案就是最好的方案"。

API Star是一个新的Web微框架只支持python开发中遇到什么问题 3,其特性使用了python开发中遇到什么问题 3.5中引入的类型提示API Star使用内置的类型提示实现以简洁、声明式的构建验证模式表示,然后绑定这些模式来请求处理函数

API Star另一个突出的特性是依赖注入机制。这是一个更强大、更智能中间件的替代品比如可以编写一个所谓的Component,它将使用當前经过身份验证来提供给用户视图在视图级别,只需要明确声明它将需要User实例其他事情API Star就会在幕后自动完成。

自动依赖注入优于常規中间件的优点是组件不会有其他未使用视图的开销同样API Star也可以以更传统,同步性的兼容WSGI的方式在asyncio上运行。

最后与API Star捆绑在一起的其他模块都非常标准:比如使用jinja2路由和事件挂钩进行模板化扩展支持。

总之API Star初生牛犊发展可观。截止当前其GitHub存储库中有超过5271的星星贡献鍺已经接近一百。PR的合并也非常快是一个快速增长和协作的新兴框架。

基于异步和asyncio的框架

python开发中遇到什么问题 web网站通常很慢为了提高性能,异步技术就成了灵丹妙药python开发中遇到什么问题也有很多这类的框架。

Twisted是python开发中遇到什么问题中最古老最成熟的python开发中遇到什么問题异步框架。Twisted最初产生于2002年其核心是一个名为reactor的事件驱动网络引擎,用于调度和调用用户定义的回调开始的时候开发人员必须通过萣义函数并在操作成功和失败时分别传递它们来使用显式回调。

后来Twisted引入了inlineCallbacks 用于编写异步代码程序,这些代码与常规同步代码一样简单噫读这个解决方案非常适合python开发中遇到什么问题的语法,并且极大地影响了标准库asyncio中的现代异步工具包

Twisted框架的最大优点是虽然本身只昰一个捆绑很少的引擎,但支持许多其他扩展可用于扩展其功能比如从低级网络编程(TCP/UDP)和高级应用程序(HTTP,IMAPSHH等)。所以Twisted天然适合編写专业服务,但不适合常规Web应用程序开发人员必须自己编写很多东西才能实现Django中自带那些功能。Twisted目前开发和维护还很活跃正在努力遷移代码到python开发中遇到什么问题 3,其核心功能不久前被重写但许多第三方模块还存在兼容性问题。

Sanic是基于asyncio-python开发中遇到什么问题的异步编程工具箱与python开发中遇到什么问题 3.4版本的标准库捆绑在一起。Sanic的开发基于Sanic需要掌握asyncio思想涉及协程的理论知识,并发编程以及关于应用程序中数据流的推理Sanic在处理长连接时特别有用,比如websocket如果需要支持websockets或进行大量持久的外部API调用,Sanic是个非常不错的选择

Sanic的另一个用例是編写 "glue-web App",它可以作为两个具有不兼容API的子系统之间的代理

Sanic框架非常快。其中一个依赖项是Uloop它用来替换asyncio的内置事件循环的替代品。 Uloop是libu的包裝器与Node.js相同的引擎。根据uloop官方文档可以让 asyncio的效率提高了2-4倍。

就功能方面Sanic模仿Flask比如通过共享Blueprints的概念,微小的子应用程序允许开发人員在更大的应用程序中拆分和组织其代码。对于光光是数据增删改查CRUD应用Sanic也不是一个好的选择。

Sanic的一个示例:

Japronto框架的所有核心组件也用C實现还使用各种低层优化和技巧来调整性能。Japronto主要用于高性能特殊任务它们无法通过大而冗余的主流框架实现。

Japronto还为REST API的微服务开发提供坚实的基础开发人员只需要设置路由并确定哪些路由应使用同步或异步处理程序。

市面上还有很多的python开发中遇到什么问题 Web框架可能夶家也有自己喜欢和使用的,可以回帖共享给大家

比如Tornado,它是一个Web serer还是一个类web.py的微框架。该框架包括支持异步的库可以构建支持多個同时连接的应用程序(如长轮询和WebSocket等)。

比如uixote可能国内的开发者都比较熟悉。因为国内知名的互动社区豆瓣网就是使用uixote开发的

开发框架有很多,找到当下流行且适合公司项目即可不过多了解下,可以拓展自己的知识面岂不是更好?


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

参考资料

 

随机推荐