一、用 python 能够做什么?解决什么问题?

A1:理论上来说,计算机能做什么,python 语言就能让它做什么,也即 python能做什么。

数值计算、机器学习、爬虫、云相关开发、自动化测试、运维自动化、web开发、poc脚本、网络编程等

A2:根据TIOBE的公开资料,Python 作为世界上第五大编程语言,应用十分广泛。

从Web后台开发到大数据处理;从自动化测试到运维开发Python都是兵器谱的前三名。

Web开发:国内著名的豆瓣、知乎都是用 Python 作为主力语言编写的网站,在很多公司内部,很多 Web 化的工具也都是Powered by Flask、Django

大数据处理:从编写 MapReduce 到各种统计工作,从 PySpark 到 Notebook,不会 Python,你很难踏入大数据的殿堂半步。

自动化测试:从各种 Test case 的编写,到测试自动化系统的构建。拥有几乎所有的测试库(Selenium、UT)支持的Python,一直是测试大神的首选。

运维开发:Bash功能太弱、Perl又那么晦涩,几乎所有的Linux发行版都把 Python作为默认安装。无论是 OpenStack 这样的巨无霸、还是各种运维自动化小系统、小工具。

二、应该学习最新版本的 Python 3 还是旧版本的Python 2.7?

A1:似乎每个学 python 的初学者都喜欢问这个问题,我当初也一样。反过来想想,为什么问这个问题的都是初学者呢?没见过玩 python 很资深的人问版本的问题。总结下我理解的原因

(1):对学习 python 没有安全感,担心学错了版本,用不上白学了。 这点焦虑大可不必。python2,3 确实有区别,但作为初学者,打好基础才是最重要的,还没到考虑区别的阶段

(2):关于 python2.7  和 python3.0 的使用范围的担心。目前是有一些公司生产环境用 python3,但 python2.7 目前仍然是主流。不用担心学了2.7找不到工作

抛开上面的焦虑,如果要学习就选择资料最多,最容易上手的版本来学,坦白讲目前能找到的资料。python2.7是最多的,遇到问题搜到的答案也最多。

A2:自己玩或者学习,可以选择 Python3.X,毕竟新东西是趋势。如果是公司重要项目,选择 Python2.7 稳重,如果是不太重要的可以选择用新版本。

注意:语言是人和机器的沟通工具,目的也是表达你的意思给计算机,不管是Python2.X还是Python3.X都行,需要重点了解人如何让机器按照自己的意识去工作(思路、想法)

A3:先强调一点,Python2 和Python3 的差别,大概俩小时就可以完全掌握,所以版本并不是重要问题。

如果一定要选一个版本,看你现在或者以后要去的公司,用的什么版本,你就学什么版本。

如果没有明确的目标,现在开始学的话,建议从 Python3 开始学,虽然我也一直用2.7,但是以后的潮流还是 Python3 的世界。

举个例子,就像刚开始学打dota的时候,不要纠结于你的电脑CPU是i5还是i7的,都是好东西,而且之间的差别对新手并没有影响。

最怕的就是纠结于选择i5还是i7,纠结了一个月,还没有开始启动dota,最终只能看别人超神,自己继续纠结。

三、怎么理解Python中的filter?应用于什么场景?

A1:Python 内建的 filter()函数用于过滤序列。

和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

例如,在一个list中,删掉偶数,只保留奇数,可以这么写:

把一个序列中的空字符串删掉,可以这么写:

可见用filter()这个高阶函数,关键在于正确实现一个“筛选”函数。

A2: help 和dir

根据定义的函数的返回值过滤掉(return Fal;se)代元素(list, tuple等)中的元素

定义函数模板

def filter_callback(x):

return True/False

比如我要过滤出range(0, 10)中所有偶数的元素

四、能不能详细解答下flask和django的区别?

A1:这种问题搜一搜到处都是,就推荐一个关于两者区别的总结吧:

( 1 ) Flask

Flask 确实很“轻”,不愧是 Micro Framework ,从 Django 转向 Flask 的开发者一定会如此感慨,除非二者均为深入使用过。

Flask 自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的 Python 库。

入门简单,即便没有多少 web 开发经验,也能很快做出网站

   非常适用于小型网站

   非常适用于开发 web 服务的 API

   开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验

   各方面性能均等于或优于 Django

   Django 自带的或第三方的好评如潮的功能, Flask 上总会找到与之类似第三方库

   Flask 灵活开发, Python 高手基本都会喜欢 Flask ,但对 Django 却可能褒贬不一

   Flask 与关系型数据库的配合使用不弱于 Django ,而其与 NoSQL 数据库的配合远远优于 Django

   Flask 比 Django 更加 Pythonic ,与 Python 的 philosophy 更加吻合

( 2 ) Django

Django 太重了,除了 web 框架,自带 ORM 和模板引擎,灵活和自由度不够高

   Django 能开发小应用,但总会有“杀鸡焉用牛刀”的感觉

   Django 的自带 ORM 非常优秀,综合评价略强与 SQLAlchemy

   Django 自带的模板引擎简单好用,但其强大程度和综合评价略低于 Jinja

   Django 自带 ORM 也使 Django 与关系型数据库耦合度过高,如果想使用 MongoDB 等 NoSQL 数据,需要选取合适的第三方库,且总感觉 Django+SQL 才是天生一对的搭配

   Django 目前支持 Jinja 等非官方模板引擎

   Django 自带的数据库管理 app 好评如潮

   Django 非常适合企业级网站的开发:快速、靠谱、稳定

   Django 成熟、稳定、完善,但相比于 Flask , Django 的整体生态相对封闭

   Django 是 Python web 框架的先驱,用户多,第三方库最丰富,最好的 Python 库,如果不能直接用到 Django 中,也一定能找到与之对应的移植

   Django 上手也比较容易,开发文档详细、完善,相关资料丰富

简单来说,Flask 和 Dj ango 都是很优秀的框架。基础功能来说,二者都支持。Flask更轻量级,Django 则比较重。

二者的区别,其实在很多框架里面都存在这种情况。一种风格是走极简,只保留核心部分;一种是大而全,啥都有。

从理解一个框架上来说,flask 更容易理解。毕竟只有核心的内容在。理解了一个之后,再去看其它的也很方便。

从实际应用说,只能说看个人喜好。一般的项目,这俩框架都ok。但无疑 Django 功能插件更丰富。

A2:Python 在国内应该是除了PHP以外最流行的开发语言了(在国外的或许ROR能竞争,但在国内估计用的人没多少)。在 PHP 的世界里面,有一堆开发框架,有国产的 ThinkPHP、YII、CI,稍微新一点的Larvel5,每个都有不少的用户而且项目的活跃度都不错。相对来说Python就会略微逊色,名义上是有 Django、Flask、Bottle、Pyramid、Web2Py等,但实际真正活跃的却不多。阵营来说划分还是比较明确:以 Django 为首的重量级框架和以 Bottle、Flask 为首的轻量级框架,因此在这里我选择两个社区相对活跃的两个典型作为比较。

Django

Django 是基于中间件的一个大型框架。框架本身的内容相当丰富,基础部分:模版引擎、ORM、表单、路由分发这些标配,还有不少的中间件:登陆、后台管理,这些还是官方中间件,另外还有不少的第三方中间件。关于第三方的我没有详细研究过,质量不太好评论。还有由 ROR 带起的基于命令的 Web 开发方式和扩展、还有内建的数据库迁移,基本上你呢想到的 Django 都有。可以说 Django 和 Python 相当匹配,前者是 Web 开发的万金油,后者是开发领域的万金油。

另外 Django 这个框架本身还有一个专门的基金会,这个基金会是由 Django 的母公司成立的,估计有不少用这个框架的公司也对期捐助过。框架本身相当活跃,每隔大概8个月就有一个大版本。

社区也是相当活跃,官方的 Community、非官方(StackOverflow)和IRC(据说IRC是比任何一个开源项目都要活跃)基本上你碰到的问题大家都会有解决或者Workout方案。

Flask

Flask 框架本身只包含路由分发,请求和响应的封装和插件系统,在加上作者自己的Werkzeug (处理WSGI)、jinja2(模板引擎)和Flask-SQLAlchemy扩展(Model层),这几个同一个作者的项目构成一个完整的MVC框架。

对于 Flask 本身,一个微框架,这已经足够了,而且它也只能提供这么多。

如果你需要表单处理,请安装 Flask-WTF;如果你需要基于命令的开发模式,请安装 Flask-Script 和 Flask-CLI (这是一个Flask1.0的backport模块);如果你要登陆验证,请装 Flask-Login;如果你要后台管理,请装 Flask-Admin。什么?!你全部都要?请装 Django。

对 Flask 就是这么一个框架。这是一个典型的社区项目,作者在实现了一个牛X的核心以后,就撒手交给社区。各个插件的文档分散(虽然Flask曾经出了一本书,试图打通各个插件和 Flask 关系,但是当需要真正使用的时候,查文档还是需要在不同的Chrome Tab 里面切换),而且社区插件的质量、支持和活跃度也需要话很大的力气去确认。

Flask 这个项目毫无疑问是优秀的:完善的官方文档,详细的教程(还有一个牛X的作者作为光环加持)。但是和 Django 完全不在一个应用层面,我会在下一段作出比较和说明。而且 Flask 这个项目基本已经处于沉睡期,最新的版本0.10.1是2013年发布的,项目的代码仓库也是比较低的活跃度(大概是一个月10次左右的Commit和PR),1.0的发布从2014年到2016年一直说要发布,一直没有出来。各个插件更新也是停留在2015年中。和 Django 比较活跃度确实令人捉急。

Flask和Django的应用场景

鉴于 Flask 和 Django 的特点,如果你是开发一个 REST API 的系统,没有复杂的分层和逻辑的话,Flask 会是一个不错的选择,因为框架内建的功能已经足够你完成这个任务;又或者,你是打算实现一个大型的系统,需要自己重新实现大部分插件的内容,Flask 也还是不错,因为它足够的简单,能让你快速的读懂和扩展。

其他的情况我还是推荐你用回 Django。尤其是当你需要安装大量的 Flask 插件,去实现 Django 本来就有的功能时,你就应该意识到你需要放弃 Flask。

当然这只是个人的看法,也没有绝对这一说,主要还是看你想在框架上花费多少的时间。

 Python交流QQ群:238757010

关于 Python 入门的一些问题?的更多相关文章

  1. python入门简介

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  2. python入门学习课程推荐

    最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化 ...

  3. Python运算符,python入门到精通[五]

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...

  4. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  5. Python基本语法,python入门到精通[二]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...

  6. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  7. python入门教程链接

    python安装 选择 2.7及以上版本 linux: 一般都自带 windows: https://www.python.org/downloads/windows/ mac os: https:/ ...

  8. Python学习【第二篇】Python入门

    Python入门 Hello World程序 在linux下创建一个叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello. ...

  9. python入门练习题1

    常见python入门练习题 1.执行python脚本的两种方法 第一种:给python脚本一个可执行的权限,进入到当前存放python程序的目录,给一个x可执行权限,如:有一个homework.py文 ...

  10. Python入门版

    一.前言 陆陆续续学习Python已经近半年时间了,感觉到Python的强大之外,也深刻体会到Python的艺术.哲学.曾经的约定,到现在才兑现,其中不乏有很多懈怠,狼狈. Python入门关于Pyt ...

随机推荐

  1. jupyter的交互小工具-----ipyleaflet

    ipyleaflet(一个用于创建简单的交互式地图的平移和缩放的库,ipyleaflet支持诸如多边形,标记和更一般的任何地理编码地理数据结构的注释) from ipyleaflet import M ...

  2. 一键架设FastDFS分布式文件系统脚本,基于Centos6

    一.使用背景 业务驱动技术需要,原来使用 FTP和 Tomcat upload目录的缺陷日渐严重,受限于业务不断扩大,想使用自动化构建,自动化部署,Zookeeper中心化,分布式RPC DUBBO等 ...

  3. window.open()被拦截问题

    最近做项目的时候遇到一个需求,在商品详情页面中点击购买按钮,之后再新标签页中打开生成的订单页面,所以想用window.open()来实现.但是测试的时候发现打开的链接被浏览器拦截. 之后,开始在网上查 ...

  4. UVA 11324 The Largest Clique(强连通分量+缩点DAG的DP)

    题意:给定一个有向图,求出一个最大的结点集,这个节点集中的随意两个点之间至少一个能到达还有一个点. 思路:假设一个点在这个节点集中,那么它所在的强连通分量中的点一定所有在这个节点集中,反之亦然, 求出 ...

  5. canvas雪花

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Elasticsearch全文搜索——adout

    现在尝试下稍微高级点儿的全文搜索——一项传统数据库确实很难搞定的任务. 搜索下所有喜欢攀岩(rock climbing)的雇员: curl -XGET 'localhost:9200/megacorp ...

  7. Shell编程之文本处理

    cut 截取自定列 可以按照某个字符进行分割,然后取出其中的指定列: [root@iz8vbbqbnh4ug2q9so5jflz logs]# --.txt /Dec/::: +] - /Dec/:: ...

  8. 《Java NIO (中文版)》【PDF】下载

    <Java NIO (中文版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062530 NIO (中文版)>[PDF]& ...

  9. 【CSS3】盒模型

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. MySQL数据库常见操作

    数据库连接与关闭:mysql -h 服务器主机地址 -u 用户名 -p 用户密码 创建新用户并授权:grant 权限 on 数据库.数据表 to 用户名@登录主机 identified by &quo ...