分享

Python基础入门及学习资源

 网海拾贝网络猪 2017-09-18



Python和Pythonic


Python是一门计算机语言,简单易学,上手容易,深入有一定困难。为了逼格,还是给你们堆一些名词吧:动态语言、解释型、网络爬虫、数据处理、机器学习、Web开发、等等等等。Python目前分为2.x和3.x两个版本,与其它语言不一样的是,它的这两个版本是不兼容的,虽然会其中一个就容易上手另一个,但是鉴于公司目前几乎全是用Python2.7,建议同事们也可以从2.x版本开始,如果没有历史遗留问题,建议初学者直接上手Python3。


Pythonic指的是按照Python推荐的规范,干净美观、可读性强的逼格满满到代码风格,比如多使用Python内置的数据结构,不要重复造轮子。简单来讲,你可以在Python解释环境里输入import this了解一下Python之禅。Python的代码风格上,如果团队有自己的风格则按照自己的风格,否则,比较推荐的是PEP8或Google Code Style。关于PEP8规范,链接在这里(https://www./dev/peps/pep-0008/)。




开发环境搭建


在常见的*inx系统上,默认都安装了Python解释器,你可以直接在终端输入python进入默认的环境。在Windows系统上,你需要去Python官网下载Python的安装包,安装之后可以在“所有程序”中找到“IDLE”,也可以在cmd中通过输入python进入解释器环境。


对于Python常用的IDE(集成开发环境),推荐使用PyCharm,如果土豪请购买正版,如果不是土豪又有情怀,请使用社区版(免费),如果既不土豪又没有情怀,就用盗版吧(不推荐)。


Python之所以非常流行,离不开它千千万万的第三方库,你可以将第三方库理解为我写了一个牛X的功能,发布出来之后你可以直接使用。安装第三方库的话,推荐使用pip,在Ubuntu上,你可以通过apt-get install python-pip安装。




hello, world.


常见情况下,Python代码可以通过两种形式运行:一是直接在刚才所讲的解释环境下(输入python命令后进入的地方)一行一行的执行,或者也可以保存到一个.py的文件中,在终端输入python 文件名来执行。比如新建一个test.py,文件内容为print 'hello, world.',在终端输入python test.py,即可输出hello, world.。



注意⚠️:Python中没有使用花括号{}来表示代码间的层级关系而是使用缩进,这样的好处是在语法层面上限制了不好的代码风格,但是初学者容易混淆。




变量、基础数据类型


变量


Python中变量不需要声明,你可以通过直接赋值的方式使用变量:


a = 1

b = True

c = 1.0

a = 3+2j


在Python中,你可以在给一个变量赋值为一种类型之后重新为其赋值为新的类型(如上面代码第1、4行)。


基础数据类型


Python中的数字有:整型、长整型、浮点型、布尔型、复数。


  • 整形:int,常见的整数(正数/负数/0),通过sys.maxint即可查看当前平台上最大的整型的值。

  • 长整型:long,比整型最大的值还大或者比整型最小的值还小的整数。注意:Python中长整型没有大小限制,你的内存有多大,它就能表示多大。

  • 浮点型:float,即小数。

  • 布尔型:bool,常见形式为True, False,表示逻辑真和逻辑假,其实背后的实现是数字1和0.

  • 复数:complex,Python是为数不多语法层面上支持复数的语言,表现为形如1+2j的形式。可以直接支持两个复数的运算。


Python中的所有数据类型都是对象。你可以通过type()函数查看一个变量的类型。

Python中字符串有4种表现形式:单引号、双引号、三引号:


string1 = 'this is a str'

string2 = 'this is a str'

string3 = '''this is a str

这里还是string3的范围'''

string4 = '''this is a str'''


其中,第3/4种字符串表现形式都是三引号引起来的。如果在字符串的引号之前加上一个u,则表示这是一个unicode字符串,如果加上r,则表示这是一个原始字符串 ,这两种类型,对于初学者暂不讨论。值得注意的是,Python中没有C-Like语言中的字符类型




运算符、控制语句


运算符


Python中没有类似于C/C++/Java的自增自减运算符,因为在Python中,数字是一种不可变类型(immutable),对数字的操作都会产生新的对象而不是修改原来的对象。但是i = i + 1一样可以写为i += 1。

注意:Python2.5以后的除法为地板除,即5/2=2而不是5/2 = 2.5。

Python常见的逻辑运算符为:


  • !=, <>:不等于,表示两边的值不相等,推荐使用前一种。1 != 2。

  • ==:等于,表示两边的值相等。2 == 2。

  • and:逻辑与,如果两边的值都为True则整个值为True,反之为False。1==1 and 2==2。

  • or:逻辑或,如果两边有一个值True则整个值为True,反之为False。1==2 or 2==2。

  • not:逻辑非,如果值为True,则结果为False。not 2==1。


控制语句


条件语句:

Python中的条件语句只有if-elif-else,没有switch-case,但是有经验的开发者通常使用map这一结构来达到比switch-case更加优雅,更加Pythonic的实现,这个后续再说。


if 条件1:

    语句块1

elif 条件2:

    语句块2

else:

    语句块3


elif类似于其它语言中的else if。


循环语句:

Python中有两种方式表达循环语句:


while 循环:


while 条件:

    语句块


for循环:


for 变量 in 集合:

    语句块


值得注意的是Python中没有C-Like语言里的for(int i=0; i<10;>




集合


Python中常见的集合类型有:list,tuple,set,dict。


list


list表达的是一列数据的集合,列表中的元素可以增加、删除、查找等操作:


In [1]: l = ['this', 'is', 'a', 'list']  # 初始化一个list

 

In [2]: type(l)

Out[2]: list

 

In [3]: l.index('is')                     查找元素

Out[3]: 1

 

In [4]: l.append('new item')             新增元素

 

In [5]: l

Out[5]: ['this', 'is', 'a', 'list', 'new item']

In [6]: l.reverse()                       反转列表

 

In [7]: l

Out[7]: ['new item', 'list', 'a', 'is', 'this']

 

In [8]: l.remove('is')                   # 删除元素

 

In [9]: l

Out[9]: ['new item', 'list', 'a', 'this']


tuple


tuple类似于list,同样表示一组数据的集合,不同的是,tuple是写保护的,即:tuple不可以对其元素做任何修改操作(新增、删除等):


In [1]: t = (1,2,3)    # 初始化

 

In [2]: t

Out[2]: (1, 2, 3)

 

In [3]: type(t)

Out[3]: tuple


set


set表示一个不重复元素的集合,值得注意的是:set是无序的


In [1]: s = {'this', 'is', 'a', 'a', 'set'}  # 初始化

 

In [2]: s

Out[2]: {'a', 'is', 'set', 'this'}

 

In [3]: type(s)

Out[3]: set

 

In [4]: s.add('new item')               # 新增元素

 

In [5]: s

Out[5]: {'a', 'is', 'new item', 'set', 'this'}

 

In [6]: s.remove('a')                   删除元素

 

In [7]: s

Out[7]: {'is', 'new item', 'set', 'this'}


dict


dict表示一组数据的对应关系,与set一样,dict是无序的(你可以通过collections中的OrderDict来达到有序)。同时,对于初学者,dict与set的声明方式容易混淆:


In [1]: d = {'a': 'A', 'b': 'B'}  # 初始化

 

In [2]: d

Out[2]: {'a': 'A', 'b': 'B'}

 

In [3]: d['a']  

Out[3]: 'A'

 

In [4]: d['c'] = 'C'            # 新增元素

 

In [5]: d

Out[5]: {'a': 'A', 'b': 'B', 'c': 'C'}

 

In [6]: del d['a']             删除元素

 

In [7]: d

Out[7]: {'b': 'B', 'c': 'C'}


函数(初步)


在Python中声明函数的方式如下:


def add(num1, num2):

    return num1 + num2


通其它语言一样,你可以在函数中通过return返回值。不同的是,Python中函数可以有多个返回值,比如下面的函数,返回了两个数的和以及差:


def calc(n1, n2):

    return n1 + n2, n1 - n2

 

add, sub = calc(5, 1)

print add, sub  # 6 4


其实这里并不是真的返回了两个值,而是将返回值组装成一个tuple再返回。


学习资源


用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的话,用Python来开发游戏的资源也有很多。这是快速学习这门语言的途径之一。


许多程序员都把Python作为编程之旅的开始,然后是像PHP和Ruby这样的语言。它也是2014年最热门的web开发语言之一,并极力推荐学习。但是,Python应该怎么学呢?应该从哪里开始?


这里推荐的一些书和资源,刚开始学习的时候可能会特别令人沮丧,一旦你学完了基础,之后的东西对你来说就很自然了,你都不需要思考就知道要怎么做。


Python for Beginners



如果你的Python开发之旅有一段时间了,这门课程可能是一个很好的开始。Python for Beginners课程是由Alex Bowers讲授的最全面的Python课程之一,这套网络教程非常容易学习。是的,它需要付一定的费用,但你是想单独学习,还是和其他30000名学生一起学?


报名本课程的好处是你将被授权访问一个只有付费会员的论坛, Alex老师自己就驻扎在那,并且很乐意尽可能地帮你解决Python的问题。我的意思是,在这个清单里任何的资源都是值得的,因为你投入了一些成本额外收获了与人沟通的感觉会超越一切。


你可以使用优惠码:CODECONDO——它会给你一个固定的75%的折扣,但激活只能在2014年9月3日之前——所以要快点,您可以随时购买的这个课程然后用于以后的学习,不要把钱浪费在这笔交易上!


译者注:翻译时距这篇原文的发布快两年了,所以想购买这套课程的朋友还得是原价——$99


Learn Python The Hard Way (笨办法学Python)



这本书绝对是学习Python最简单的方法。你会被如此简单的基础学习感到震惊,真实地感受到自己的学习历程,一步一步地获取新的知识。我也感到它非常鼓励学习者去尝试并创造出自己的程序。


代码可能会很少,但是它们肯定会有助于你更好的理解语言本身和语法。Python非常的流行,所以当你遇到了问题时,在类似Stack Exchange这样的网站里有可能会找到答案,遇到问题需要解决的话尽管地Google吧。


你会学到如何去:


  • 在全平台上安装Python环境

  • 写Python程序

  • 理解Python语法和文档

  • 像程序员一样思考

  • 还有更多的东西


本书的HTML在线版本是完全免费的,大部分人使用的都是在线版。我希望你购买完整的书或者给予一些捐赠,毕竟作者花了很大的力气来完成它。如果你感觉视频更容易学习的话,它的高级版里就包含了视频。


The Python Challenge



如果你的编程生涯中从没做过这样的挑战,这可能会有点难度。但是配和上面介绍的那本书的话也不是很难,你应该尝试一下。它有33个关卡(谜题),你可以用Python编程技巧解决。


几百万的人都在试着解决这个,即使你不能完成所有的关卡,你也会将学到很多新的东西,尤其是批判性思维和发散思维。你的大脑会过热,但这是在编程!


Learn Python Programming @ Codecademy


你可能看到许多“大牛”程序员骂这个网站,但那并不重要。我们想要做的是看看或者测试一门编程语言的基本语法是怎么执行的,以及调用函数时做了些什么,除了简单地输出‘Hello World!’。


在这个Codecademy的课程中你将会学到如何使用文件和循环,什么是函数以及他们能用来做什么。这些都是非常基础的,但是对初学者来说都是很好的东西。当需要帮助时有一个用来交流的论坛,但所有的东西都应该在你理解的范围之内。


你不需要安装任何工具,如果你想在你自己的电脑上重写一遍代码以便更好地理解它,你可能唯一需要的就是一个Notepad++编辑器。我就是这样做的,并且我向所有想学习编程的人都推荐Codecademy,不管是Python还是其他的语言。


Intro to Computer Science @ Udacity



Udacity提供了一个很棒的免费课程,引你进入Python编程和学习关于搜索引擎的许多东西,以及如何编写你自己的小型网络爬虫。它的确是一个值得参与的课程,并且还提供了额外的指导和社区支持。


你可以报名成为付费学生得到导师的指导,并且可以在课程结束得到一个证书,或者你可以自己使用免费的课件学习,遗憾的是付费课堂的容量有限,所以你申请后需要加入名单等待。


它总共有11个课程,每一个都有讲解非常深入的文档。去它的官方主页查看更多的信息或者你想问的问题的答案。


Google’s Python Class



Google它本身就被一大堆Python代码驱动着,只有他们提供社区支持并且愿意帮助其他人学习这门语言才更有意义。这是我曾经最喜欢看的指南和课程之一。它真的很详细,而且视频适合初学者,观看起来也很有趣。


去看几分钟它的第一堂课,看看你是否喜欢那个老师,然后决定是否开始学习Python!官方主页有这些练习题和例题的所有链接。


A Byte of Python



非常像LPTHW(笨办法学Python),但是在如何制定完整的学习计划并实施,以及如何迈出第一步上提供了更深层次的引导,而不会让你丧失自信心。对于那些想学Python的人来说它被认为是最好的初学者教程之一,当然你要先看看前几章,是否喜欢它的写作风格。


Think Python



Think Python是一个面向Python初学者的手册。它从编程的基本概念教起,非常详细地定义了所有第一次会遇到的术语,并且很有逻辑地展现新的概念。像递归和面向对象这样大一点的知识板块被分成了一系列更小的步骤,穿插于课程几个章节。


在这个链接里你会发现有大量的示例代码。它是最为专业的书之一,它有一个很严肃的原则: “像计算机科学家一样思考”。它需要将近40美元才能买到,但是你可以下载免费的PDF和HTML版本。如果从头开始学Python的话,肯定会从它上面得到好处。


Python at Learnstreet



你可能会想有个网站提供如何在他们页面上添加HTML代码的课程,哈哈。严肃一点地说,Learnstreet提供了很棒的Python交互式学习教程,就像这篇文章所说的所有东西一样,它对初学者非常友好。如果你遇到了问题,最好用Google去搜索。


我最喜欢Learnstreet的一点是每个练习后面都有许多提示和解释,显示在你编写代码的同一个界面里。


The New Boston



如果你更喜欢使用视频学习,我不确定是否还有比The New Boston的Python系列视频教程更全面的了,许多其他的编程语言也可以在他们的YouTube频道里找到。


它唯一的缺点就是没有可以阅读或者下载的资料,你只能看视频。我是那种不能忍受一直盯着视频看的程序员,这可能与我选择Google的Python课程有关,但它们实在太有趣了。


Python @ Coursera



这个课程是为从来没接触过编程的人准备的。你只需要小学的数学水平就可以了:懂简单的数学方程和算术优先级,以及像f(x) = x + 5这样的函数。


它在十周内应该可以学完,每周大概花10小时来完成课后作业。如果你有时间来做这个,并且不会感到很累,我推荐你注册并完成这个课程,它会巩固你的知识,并可以结合上面介绍的任何一个资源来更好地理解 Python。


Pythonspot



Pythonspot是一个综合教程,划分了很多不同类别的知识板块,首先你将拥有初学者资源来帮你开始Python的学习,然后你继续保持前进你能学到更多关于使用Python开发web,创建图形界面,开发游戏的内容,到那时你可以准备学习一些更高级的板块,像网络等等。这些都在一个地方,非常容易使用。


Python Practice Book



从根本上说,这是Anand Chitipothu在他讲授Python课程时使用的资源,但即便你不与Anand本人一起学习,你仍然可以利用这个资源来获取Python在不同角度的见解,以及看到不同开发者的观点。


Python Tutor



我认为这是新手程序员近期能够上手的最好的项目之一,Python Tutor都是在教你当执行你写的代码时到底发生了些什么。清楚地了解到如何写一段程序,能够理解后台程序的每个命令都是截然不同的。你可以使用自己写的代码,也可以使用平台提供的代码。


Real Python



虽然这是一个收费的资源,但最新的评论看起来还是相当不错的,所以不管怎样我决定加上这一条。在Real Python需要花费60美元来开始你的学习,将会有超过1300页的内容和10个多小时的视频供你访问,还包括以后可以免费更新。你能得到来自Real Python团队的导师的帮助,不过这需要额外的费用。以及博客里有适量与代码相关的教程能够给你帮助。


Full Stack Python



你能比较熟练地使用Python了,但是你不知道接下来该走什么样的方向?这个网络课程就是为你解决这个问题的,通过给你一个真正的项目去做,帮助你理解怎样用你学到的Python知识建立一个web应用程序和网站。学会怎样积累一些真正的知识。


Invent with Python




教你怎样使用Python创造一款你自己的电脑游戏。每章为你提供了一个新游戏完整的源代码,通过这些例子教你编程的概念。它在网站上可以免费阅读,或者在亚马逊购买。


PythonLearn



你是一个对信息学感兴趣的家伙吗?整个网站的资源都围绕着确切的话题,所以如果你感兴趣的话,去看看可能会是一件好事。


Dive Into Python3



迟早有一天,大多数的东西都会使用Python3来构建,尽管Python2仍然非常稳定并被大量使用,但Python3在过去的两年里确实发展的非常完整了。这本在线书籍所有的内容都在帮助你理解Python3是什么,以及如何最好地掌握它。


扩展阅读,点下面超链接:

她发明了WiFi                      北漂IT人的未来在哪儿

T级攻防:大规模DDOS防御架构

黑掉一台根本不联网的电脑  怎样逼死一名程序员

攻下隔壁女生路由器后  网站渗透思路全方面总结

他是最牛黑客              怎样获取他人计算机ip地址

QQ是如何监控你的聊天记录的     VR、AR、MR

程序员从入门到结婚                        Google面试题

数据恢复工具软件               多功能U盘启动工具盘

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多