编辑推荐: |
本文给大家讲解Python总体架构,Django,Falsk轻量级Web框架,Tornado两大核心模块,希望对大家有帮助。
本文来自于csdn,由火龙果软件Delores编辑,推荐。 |
|
深入学习Python ,用Django做Web后端开发
现在Python的用途愈来愈广,服务器、Web、游戏、爬虫、数据分析 以及人工智能 学习之路还很长
技术之路 不能回头 陷进去 就出不来 就跟恋爱一般,
学习中、项目中 印象笔记、有道云笔记、Onenote都记了好多
Python属于 面向对象 解释型 高级动态计算机程序设计语言
了解一门语言 当先了解它的整体架构、基本语法、内置数据结构、内置函数、标准库以及运行模式、编程模式等。
1、Python总体架构
Python的整体架构可以分为主要三个部分:
左边是 Python提供的内置模块 库 及用户自定义模块
右边是Python的运行环境,包括对象/类型系统、内存分配器、运行状态信息
中间是Python的核心 解释器。Python运行时的数据流 词法分析、语法分析、编译、执行
常用标准库
下面是在逛CSDN每天都被灌的鸡汤,总结一下缺养时可以补补:
编程之久除了算法和数据结构,什么也不属于我们。
编程就是算法和数据结构,算法和数据结构是编程的灵魂。
编程中最没用的东西是源代码,最有用的东西是算法和数据结构。
算法和数据结构是程序的第一秘诀,缺之算法和数据结构是编程的最大原因。
算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。
尽管少写那么多代码,但省下来的时间又在哪里呢?
代码是程序员的朋友,虽然没有热情,但是非常忠实。
当你还不能写出自己满意的程序时,你就不要去睡觉。
有些代码不应该被忘记,也没有源代码不应该被记住。
对代码不满足,是任何真正有天才的程序员的根本特征。
有编过程的人的代码,比那些无知的人使用的软件更有价值。
编程是一种美德,是促使一个人不断向上发展的一种原动力。
程序员的一生时间90%是用在编程上,而剩余的10%是活在世界上。
程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。
调试的错误就是编程给你最好的东西,因为在每个错误上面都标志着前进的一步。
假如编程易懂得,那么程序员就不会热情地写出注释,也不会有得到编程的快乐。
代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你
由于Python的简洁 易读 强大 高效 现在Python应用在文件处理、网络编程、数据库编程、游戏、Web开发、数据分析、机器学习等各个领域。
就Web开发而言,为了提高开发效率,应运而生了很多框架,如Django、Flask、Tornado、Web2py等。
框架很多,根据业务需求、选择适合的框架。
1、Django
最早接触Django,在我心中的形象是:Web框架界的变形金刚
Django的MVT架构、自带ORM、强大的Admin后台管理、自带数据库、还自带开发测试用的服务器、不得不说服务周到。
如此大而全,重量级的Django给开发者提供了超高的开发效率。
淌着Python血液
MVT三大轮子 连接浏览器 数据库开跑
一身装备 可变形 可扩展
多领域 跨平台 协调作战
自我测试 自我管理 自我保护
友好 开放 国际化
装备很多:
用户认证 缓存 日志 邮件 组织 分页 消息 序列化 会话 网站地图 静态文件处理 数据验证
Django支持第三方扩展:
比如:富文本编辑器 缓存 全文检索 celery等
Django项目布署 用nginx做静态资源代理、负载均衡 可以提高高并发能力。
一些Web项目开发 无论用户量、服务群体、上来总谈高并发。没用户 天天愁高并发问题 还没解决也许项目已经黄了。
项目有了、业务有了、用户有了、性能优化、高并发顺势解决嘛。
当然一些大型网站,在高性能的要求下,框架的各个部分往往都需要自己定制,这样用Django也就没有太大优势。
2、Falsk
相较于Django ,Falsk属于轻量级Web框架,也称‘microframework’。
Flask一个简单的核心,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。其他功能开发者根据业务需求 与喜好 添加。
如此 Falsk 自由、灵活、可扩展性很强。很适用于开发小型应用、开发大型网站也没有压力,自己设计架构、选择合适第三方扩展,各方面性能完全不输Django。
常用拓展包:wtf、sqlalchemy、login、script、migrate、mail
3、Tornado
传说中实现高并发、高性能的框架。Tornado的全称是Torado Web Server,可用作Web服务器,同时也是一个Python Web的开发框架。
Tornado两大核心模块:
iostream :对非阻塞式的 socket 的简单封装,用来处理 socket 的异步读写
ioloop :核心的 I/O 循环。基于 epoll,可以高效的响应网络事
其作为Web框架的主要模块
web:包含了 Tornado 的大多数重要的功能
escape :XHTML, JSON, URL 的编码/解码方法
template :基于 Python 的 web 模板系统
httpserver : 非阻塞 HTTP server
httpclient : 异步 HTTP client 用来和web 及 httpserver 协同工作
auth :第三方认证的实现
locale:针对本地化和翻译的支持
等等
Tornado 走的少而精的路子,除了Web开发需要的基本模块,剩下的则都需要开发者自己扩展。比如需要ORM支持,那自己来扩展
Python web框架很多,在于精通。选择适合自己的,开始搞起来。
我做项目用的多的还是Django,不自己重复造车轮子嘛。
题外话:
目前有一些公司选择Go语言 做所谓的高性能的开发
Go语言 号称可解决现今多核心处理器这一大挑战。
Go语言 专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
语言皆是工具
框架提高效率的工具
套用CSDN每天的鸡汤:
编程之久除了算法和数据结构,什么也不属于我们。
编程就是算法和数据结构,算法和数据结构是编程的灵魂。
算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。
真的不知道开发者还剩下什么,当机器可以自己优化数据结构与算法,也许我们就真的只剩下灵魂了。
斐波那契数列(Fibonacci sequence)Python实现的三种方案:列表 递归 生成器
# -*- coding:
utf-8 -*-
import itertools
from functools import lru_cache |
# 列表实现。生成一个斐波那契数列列表
def fibo(num):
fibo_list = []
if num <= 0:
return fibo_list
else:
x, y = 0, 1
for i in range(num):
fibo_list.append(y)
x, y = y, x + y
return fibo_list |
# 生成器实现。迭代时一次生成一个值
def fibo_genetator():
x, y = 0, 1
while True:
yield y
x, y = y, x + y |
# 递归实现。[添加缓存装饰器,提高效率]
@lru_cache(maxsize=None)
def fibo_recursive(num):
if num < 0:
return 0
if num <= 1:
return num
return fibo_recursive(num - 1) + fibo_recursive(num
- 2)
print(fibo(10))
print(list(itertools.islice (fibo_genetator(),
10)))
print([fibo_recursive(i) for i in range(1, 11)]) |
递归实现 使用缓存后 效率便会极大提升
|