A. 如何系统地自学 python
是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?
幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。
Python 的设计哲学之一就是简单易学,体现在两个方面:
语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。
切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
废话不多说,学会一门语言的捷径只有一个: Getting Started
¶ 起步阶段
任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。
°1 硬知识
“硬
知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一
种语法,实际是建立了一种思维。例如:让一个 Java 程序员去学习 Python,他可以很快的将 Java 中的学到的面向对象的知识 map 到
Python 中来,因此能够快速掌握 Python 中面向对象的特性。
如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。
下面列出了一些适合初学者入门的教学材料:
❖“笨方法学 Python”:http://learnpythonthehardway.org/book/
这本书在讲解 Python 的语法成分时,还附带大量可实践的例子,非常适合快速起步。
❖“廖雪峰的 Python 2.7 教程”:Home - 廖雪峰的官方网站
Python 中文教程的翘楚,专为刚刚步入程序世界的小白打造。
❖“The Hitchhiker’s Guide to Python!”:The Hitchhiker’s Guide to Python!
这本指南着重于 Python 的最佳实践,不管你是 Python 专家还是新手,都能获得极大的帮助。
❖“Python 官方文档”:Our Documentation
实践中大部分问题,都可以在官方文档中找到答案。
❖ 辅助工具:Python Tutor
一个 Python 对象可视化的项目,用图形辅助你理解 Python 中的各种概念。
Python 的哲学:
用一种方法,最好是只有一种方法来做一件事。
学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。
必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用 Python 中的对象模型有着很大的帮助。
°2 软知识
“软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即使完全不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。
对
这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择 Python 版本时徘徊不决,一会儿看 2.7
一会儿又转到 3.0,或者徜徉在类库的大海中无法自拔,Scrapy,Numpy,Django
什么都要试试,或者参与编辑器圣战、大括号缩进探究、操作系统辩论赛等无意义活动,或者整天跪舔语法糖,老想着怎么一行代码把所有的事情做完,或者去构想
圣洁的性能安全通用性健壮性全部满分的解决方案。
很多“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。
还不如告诉初学者,学习本来就是个需要你去走弯路出 Bug,只能脚踏实地,没有奇迹只有狗屎的过程。
选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。
自己走了弯路,你才知道这么做的好处,才能理解为什么人们可以手写状态机去匹配却偏要发明正则表达式,为什么面向过程可以解决却偏要面向对象,为什么我可以操纵每一根指针却偏要自动管理内存,为什么我可以嵌套回调却偏要用 Promise...
更重要的时,你会明白,高层次的解决方法都是对低层次的封装,并不是任何情况下都是最有效最合适的。
技术涌进就像波浪一样,那些陈旧的封存已久的技术,消退了迟早还会涌回的。就像现在移动端应用、手游和 HTML5 的火热,某些方面不正在重演过去 PC 的那些历史么?
因此,不要担心自己走错路误了终身,坚持并保持进步才是正道。
起步阶段的核心任务是掌握硬知识,软知识做适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。
¶ 发展阶段
完成了基础知识的学习,必定会感到一阵空虚,怀疑这些语法知识是不是真的有用。
没错,你的怀疑是非常正确的。要让 Python 发挥出它的价值,当然不能停留在语法层面。
发展阶段的核心任务,就是“跳出 Python,拥抱世界”。
在你面前会有多个分支:科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道 Python 语法就能解决的问题。
拿
爬虫举例,如果你对计算机网络,HTTP协议,HTML,文本编码,JSON一无所知,你能做好这部分的工作么?而你在起步阶段的基础知识也同样重要,如
果你连循环递归怎么写都还要查文档,连 BFS 都不知道怎么实现,这就像工匠做石凳每次起锤都要思考锤子怎么使用一样,非常低效。
在这个阶段,不可避免要接触大量类库,阅读大量书籍的。
°1 类库方面
“Awesome Python 项目”:vinta/awesome-python · GitHub
这里列出了你在尝试解决各种实际问题时,Python 社区已有的工具型类库,如下图所示:
你可以按照实际需求,寻找你需要的类库。
至于相关类库如何使用,必须掌握的技能便是阅读文档。由于开源社区大多数文档都是英文写成的,所以,英语不好的同学,需要恶补下。
°2 书籍方面:
这里我只列出一些我觉得比较有一些帮助的书籍,详细的请看豆瓣的书评:
科学和数据分析:
❖“集体智慧编程”:集体智慧编程 (豆瓣)
❖“数学之美”:数学之美 (豆瓣)
❖“统计学习方法”:统计学习方法 (豆瓣)
❖“Pattern Recognition And Machine Learning”:Pattern Recognition And Machine Learning (豆瓣)
❖“数据科学实战”:数据科学实战 (豆瓣)
❖“数据检索导论”:信息检索导论 (豆瓣)
爬虫:
❖“HTTP 权威指南”:HTTP权威指南 (豆瓣)
Web 网站:
❖“HTML & CSS 设计与构建网站”:HTML & CSS设计与构建网站 (豆瓣)
...
列到这里已经不需要继续了。
聪明的你一定会发现上面的大部分书籍,并不是讲 Python 的书,而更多的是专业知识。
事实上,这里所谓“跳出 Python,拥抱世界”,其实是发现 Python 和专业知识相结合,能够解决很多实际问题。这个阶段能走到什么程度,更多的取决于自己的专业知识。
¶ 深入阶段
这个阶段的你,对 Python 几乎了如指掌,那么你一定知道 Python 是用 C 语言实现的。
可是 Python 对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开 Python 的黑盒子,深入到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。
这里推荐一本书:
“Python 源码剖析”:Python源码剖析 (豆瓣)
这本书把 Python 源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对 C 语言内存模型和指针有着很好的理解。
另
外,Python 本身是一门杂糅多种范式的动态语言,也就是说,相对于 C 的过程式、 Haskell 等的函数式、Java
基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在 Python
中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深刻的理解,也能了解到 Python 语言的根源。
这里推荐一门公开课
“编程范式”:斯坦福大学公开课:编程范式
讲师高屋建瓴,从各种编程范式的代表语言出发,给出了每种编程范式最核心的思想。
值得一提的是,这门课程对C语言有非常深入的讲解,例如C语言的范型和内存管理。这些知识,对阅读 Python 源码也有大有帮助。
Python 的许多最佳实践都隐藏在那些众所周知的框架和类库中,例如 Django、Tornado 等等。在它们的源代码中淘金,也是个不错的选择。
¶ 最后的话
每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人。虽然听上去有点鸡汤,但是这是事实。
希望想学 Python 想学编程的同学,不要犹豫了,看完这篇文章,Just getting started~
B. 关于Python 的经典入门书籍有哪些
我接触的如下:
《Python学习手册》,死贵的书,但是看完了似乎没什么卵用。我一直拿来跟学习Perl的时候做对比,学习Perl的时候一个星期就能够熟练写代码。这本书将近1000页,让我学了一个多月。看完了几本还处于Hello world、字符串的级别。
《简明Python教程》:网络版本,Free。大致了解了一下Python架构。
Pythoner:这个是网站,中谷教育的课程看完了。感觉效果相当于花一天的时间看了Perl小骆驼。
《Python核心编程》:终于开始入门,慢慢开始用到了工作中解决各种问题。
值得一说的是,第一本是Python 3.X,剩下的都是Python 2.X。感觉相当不兼容,干脆放弃3.X,先把2.X搞定,能够用了再转移3.X也不坏。毕竟,现在的3.X还不是很完善,2.X的库相对来说还是比较多的。
如果有朋友刚刚开始,建议直接从《Python核心编程》开始吧!
C. 0基础学习python怎么入门呢
该如何学习Python呢?
(1)选择学习方向。学习Python主要目的是用语言来解决问题,而不是了解这门语言。Python应用方向有很多,Python基础知识学习完后,应用方向不同需求也不同;虽然Python需要系统化的学习,但是在学习Python的时候,想要告诉大家还是需要提前确定一下自己感兴趣的方向,有针对性的学习更为重要。
(2)规划学习路线。当确定好自己的发展方向之后,下一步就是顺着方向去学习,建立好自己的学习路线。要有系统化的学习路线,需要完成什么样的目标,需要学习哪些知识,需要懂哪些知识,这样每次学习一个部分,就可以有实际的结果输出,结果的输出才可以鼓励进行下一步的学习。
(3)合理规划时间。划好自己的学习时间,每天进度是什么,每天学习几个小时都是需要提前确定的,有计划有规划的去学习,坚持下来才会有意外的收获。
用任何编程语言来开发程序,都是为了让计算机工作。目前有很多种流行的编程语言,如难学的C语言,普遍的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等,Python适合初学者的一种计算机程序设计语言。
D. python基础教程-数据类型详解
python提供了多种的数据类型,用来存放数据。其中数据类型中又包括:字符串,布尔类型,整数,浮点数,数字,列表,元组,字典,日期。
1、字符串
a='this is string'print aa="this is string"print aa='''this is stringthis is stringthis is string'''print a
布尔类型
常见的用于循环判断中
整数
a=int(80.9741)print a
浮点数
a= float(80.974)print a
字符类型的转换
int(x [,base]) 将x转换为一个整数
float(x ) 将x转换到一个浮点数
complex(real [,imag]) 创建一个复数
str(x) 将对象x转换为字符串
repr(x) 将对象x转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) 将序列s转换为一个元组
list(s) 将序列s转换为一个列表
chr(x) 将一个整数转换为一个字符
unichr(x) 将一个整数转换为Unicode字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串
列表
L1 = [1,2,3]print L1L2 = ['abc']print L2L3 = ["a","b","c"]print L3L = list("Python")print Lprint L[0]print L[3]print L[-1]
Python的元组与列表类似,不同之处在于元组的元素不能修改;元组使用小括号(),列表使用方括号[];元组创建很简单,只需要在括号中添加元素,并使用逗号(,)隔开即可,例如:
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";
字典(dictionary)是除列表之外python中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典由键和对应的值组成。字典也被称作关联数组或哈希表。基本语法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'};
时间日期
import time, datetime;localtime = time.localtime(time.time())today = datetime.date.today()print "Local current time :", today
E. 零基础如何学习Python
第一:找到一个好的教程
可以买本书,跟着书学习,书上的例子可以跟着写,课后的习题尽量做。没有买书的朋友,可以从网上找教程,在浩瀚如烟的互联网上,没有你找不到的,只有你想不到的。
彻底0基础的朋友,建议先确定自己是否对Python感兴趣,兴趣是好的老师,只有在兴趣的驱动下你才能坚定不移克服学习上遇到的困难。课课家Python从入门到精通视频教程
第二,循序渐进
既然是零基础,就不要着急了。你需要做的是,盯住一个教程,从基础语法,变量类型开始学起,接下来是运算符,条件语句,循环,字符串,list,元组,字典,日期时间,文件读写,函数,模块,异常处理。
第三,照葫芦画瓢
这个过程中,如果遇到不懂的,不要深究。不懂就问,不会就敲。能看懂多少就懂多少,重要的是按照教程编写代码,你看不懂的,可能照着例子写了,就懂了。再者,有许多知识,其实对非计算机行业的人来说,过于专业了,你也没有必要懂。
第四,贵在坚持
我不建议大家花费太多的时间在Python学习上,你每天能用30分钟看看教程,然后照着例子写代码就可以了,根本来讲,你要学习的不是Python,而是一种思维模式,这种思维模式的建立需要反复的练习,短期内用力过猛是无济于事的。
你永远不能叫醒一个装睡的人,也永远帮不了一个不努力的人。任何工作要做到优秀都需要不断的付出和学习,想要成为一名优秀的程序员也是一样,如果你热爱Python,热爱这门语言就应该持续的走下去,人真的去努力。
F. Python 中当前时间表示方法详解
在Python中,处理当前时间和日期操作是基础且实用的。本教程详述了如何使用datetime模块获取、展示和格式化当前时间,以及其中的各类细节和选项。
首先,通过datetime类的datetime.now()方法轻松获取当前时间,这个方法返回一个包含年、月、日、小时、分钟和秒的完整日期时间对象。默认输出遵循ISO 8601标准,但Python在打印时使用空格分隔,而非标准的T字符。此外,Python提供了灵活性,允许定制输出格式,如通过isoformat()方法获得自定义ISO时间戳。
想要查看特定部分的时间,如月份、日期,可以直接访问对象的相应属性。通过dir()函数或文档探索,你会发现众多可选属性和方法。同时,注意datetime对象的表示方法可能会引发关于星期和工作日数字表示的困惑。
提升时间戳的可读性,可以使用.strftime()方法,通过格式代码指定输出格式,如全称的星期和月份。通过例子,你学会了如何将时间按照'星期, 月份 日'这样的格式呈现。
深入理解,Unix时间是计算机内部通用的时间表示法,将时间转换为自1970年1月1日UTC午夜以来的秒数。通过timestamp()方法,你可以得到精确到秒的Unix时间戳。虽然它便于计算,但在处理时区和人类可读性上,ISO 8601格式更为理想。
时区是处理国际时间的一个关键环节。你学习了如何使日期时间对象具备时区信息,这有助于在输出时明确表示时间与UTC的关系。例如,秘鲁利马的时间戳会显示出-06:00的偏移,显示了时区的差异。
总结来说,本教程带你领略了Python中表示当前时间的多样方法,从基本操作到高级格式化和时区处理,为时间相关的编程任务提供了坚实的基础。通过这些技巧,你能够更好地理解和操作时间戳,以满足各种场景的需求。