Pytho怎样自学?

如题所述

第1个回答  2017-12-26

我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个动态网站(没有用任何框架)。相比于计算机大牛,我更加知道一个小白将会遇到什么坑,遇到哪些难点。我把我的学习过程写在下面,并附上在每个阶段的学习资料,希望对零基础的Python学习者有所帮助。

想学习编程但不知如何开始的朋友。回答这类问题的人往往只是列出书单资源然后给出一个大致的方向。有些朋友一开始就扎入了理论学习的汪洋大海,从苦读类似《算法导论》开始,能够坚持读下来的寥寥无几,学习的积极性也被不断的挫败感消磨的所剩无几。

一直以来,编程对我而言是一种「黑魔法」般的存在。今年阿里月饼门,当很多人都参与到是非之争的时候,我更加着迷于程序员区区几行代码的脚本所展现出的威力,对于外行而言,这是超乎他们想象之外的某种能力——为什么我守在电脑面前盯着秒针然后拼命点击鼠标都不一定能抢到的礼物,程序员只需要提前花5分钟写3行代码就轻松搞定?

所以,我的心底深处一直都想变成这样的一位魔法师。今年的8月,刚好工作上想要开发一个基于微信的英语学习网站,借此机会,我决定好好学习一下编程。在此之前,我所有关于程序的知识仅仅来源于两部分,一是本科时期的C语言必修课,现在已经忘的一干二净,不过好歹我从中明白编程是怎么回事;第二部分是大概两年前由于工作关系学的一些Python,不过只是皮毛,现在忘的七七八八。

简单说,我的目标是建立一个网站,不过这个网站是动态的,也就是说它能识别谁登陆,然后对不同的人显示不同的内容。而当时的现实是,我完全不明白网页是如何显示出来的?譬如每个人登陆知乎的时候看到的是定制化的页面,后台是如何基于每个ID来组织出不同的页面的?所有我们看到的问题,回答,参与的评论在背后的服务器上是以一种什么样的形式存在的?又比如为什么有些页面只能在微信端打开,在电脑上就会出错?(不知道你有没有发现这一点)

当时我的心中充满了无数个类似的问号?当然如果你也是小白,一定有着同样的疑问。

好处是一开始就明确了学习的目的:Web建站。所以我的学习方案基本就是通过做项目学习,哪里不懂就解决哪里,边做边学习,不断推进。另外,由于知道很多成功的网站在用Python做服务器开发,比如知乎,所以我就自然选择了Python。

于是我就开始了我充满着挫败感和成就感的编程之路……

从8月到12月的四个月里,除去本来的工作,为了学习质量,我会保证平均每天4个小时的学习时间,周末也不例外。另外,所有的文档,问答都尽量看英文的,这可以帮你剩下大量的时间。12月13日,我做的网站上线了,3天时间大概有5000人访问了这个网站,我有时在后台看着日志,不免有些心潮喷涌,我想把自己的经验写下来,希望对于那些有心学习编程但无从下手的朋友提供一些帮助和鼓励。

现在回头看,我认为这一段时间的造轮子是提升编程能力最快的时候。比如为了写ORM,就必须去花很多时间学习SQL,去了解Python里面的metaclass,而如果用一个现成的框架,我很有可能偷懒不去关注某些细节。而不出问题还好,一旦出问题,我就只能跪。另外,造轮子迫使我在开始的时候就构思整个框架,因为我必须尽可能的考虑到所有的情况,于是就会不断的强迫自己完善知识体系,和别人的代码作对比从而改进自己的,这个过程充满了无尽的挫败感,但是得来的成就和快乐也是无可比拟的。

SQL书籍:Sams Teach Yourself MySQL in 21 Days

Python:Python核心编程(第二版)

Github上的优质Python资源:CodementorIO/Python-Learning-Resources

过程中还牵涉到部署,我的网站是跑在Linux上的。关于部署网上有非常多的优质教程,一搜一大把。这里就不再赘述。

这些是我学习大致路线,当然过程中充满着小的磕磕绊绊,虽然网站上线了,貌似运行还比较顺利,但是如果以一个程序员的标准来要求自己,自己依然非常菜鸟。不过我并没有以前那样惧怕技术了,就像你明白魔术的背后的原理后,会更多的思考原理本身。

第2个回答  2017-12-26

"Flat is better than nested."

发一个地图

Growth:全栈增长工程师指南全栈工程师是未来技术的革新史软件开发的核心难题:沟通大公司的专家与小公司的全栈全栈工程师的未来:无栈

基础知识篇工具只是辅助WebStorm还是Sublime?

语言也是一种工具

提高效率的工具快速启动软件

IDE

DEBUG工具

终端或命令提示符

包管理

环境搭建OS X

Windows

GNU/Linux

学好一门语言的艺术一次语言学习体验

输出是最好的输入

如何应用一门新的技术

Web编程基础从浏览器到服务器

从HTML到页面显示

HTMLhello,world

中文?

其他html标记

小结

CSS简介

样式与目标

选择器

更有趣的CSS

JavaScripthello,world

JavaScriptFul

面向对象

其他

前端与后台后台语言选择JavaScript

Python

Java

PHP

MVCModel

View

Controller

更多

后台即服务API演进史

后台即服务

数据持久化文件存储

数据库

搜索引擎

前端框架选择Angular

React

Vue

jQuery系

前台与后台交互Ajax

JSON

WebSocket

编码编码过程

Web应用的构建系统Web应用的构建过程

Web应用的构建实战

Git与版本控制版本控制

Git

Tasking如何Tasking一本书

Tasking开发任务

写代码只是在码字

如何编写测试测试金字塔

如何测试

测试替身Stub

Mock

测试驱动开发红-绿-重构

测试先行

可读的代码命名

函数长度

代码重构重命名

提取变量

提炼函数

Intellij Idea重构提炼函数

内联函数

查询取代临时变量

重构到设计模式过度设计与设计模式

上线运行环境硬件抽象层:虚拟机

容器

Web容器: Tomcat

语言虚拟机

语言运行环境

Docker结合Tomcat

LNMP架构Linux

HTTP服务器

代理服务器

Web缓存数据库端缓存

应用层缓存

前端缓存

客户端缓存

HTML5离线缓存

可配置

TogglePropertyPlaceHolder

自动化部署

数据分析数据分析数据分析的过程

Google Analytics受众群体

流量获取

移动应用

SEO爬虫与索引

什么样的网站需要SEO?

SEO基础知识

内容

Hadoop分析数据数据源

数据分析

学习

UX什么是UX

UX入门什么是简单?

进阶

用户体验要素

认知设计

持续交付持续集成前提条件

瀑布流式开发

小步前进

持续交付配置管理

持续集成

测试

构建与部署

自动化

遗留系统与修改代码遗留代码什么是遗留代码

遗留代码的来源

遗留代码的问题

如何修改代码

网站重构速度优化

功能加强

模块重构

回顾与架构设计自我总结吾日三省吾身

RetroWell

Less Well

Suggestion

Action

浮现式设计意图导向

重构

模式与演进

架构模式预设计式架构

演进式架构

每个人都是架构师如何构建一个博客系统

第3个回答  2017-12-26

现在编程这么火,有多少人想学习?又有多少小伙伴们瞄准了人工智能Python语言的学习,今天我把自己自学Python的经历分享给大家,希望对大家有帮助。

学习准备:

刚开始我也看了一些自学的教程,感觉都是东拼西凑,没有一个系统的学习,知道我后来认识了一位Python工程师,他给我说可以看一下黑马程序员视频库的Python入门基础教程,小白都可以看得懂的。至此开始了我学习的道路!

教程分为了三个阶段,

第一阶段(1-3天):

介绍不同的操作系统,对操作系统的认识、发展。及Linux系统的文件目录结构让大家对Linux系统有一个简单的认识,同时知道为什么要学习Linux命令。

知识点:

1.文件和目录命令:ls,cd,touch,mkdir,rm

2.拷贝和移动命令:tree,cp,mv

3.文件内容命令:cat,more,grep

4.远程管理命令:ifconfig,ping,SSH的工作方式简介以及ssh命令

5.用户权限及用户管理命令:chmod,chgrp,useradd,passwd,userdel

6.软件安装及压缩命令:apt简介及命令,tar,gzip压缩命令,bzip2压缩命令

7. vim的基本使用

第二阶段(4-10天)

进入Python这门语言的学习,首先了解Python语言的起源,Python语言的设计目标,Python语言的设计哲学,Python语言的优缺点和面向对象的基本概念,以及Python语言的执行方式,还有Python集成开发环境PyCharm的使用为我们接下来的学习做铺垫。

int,string,float三种简单的变量类型,

变量间的计算,

变量的输入输出,

if判断语句,

while循环语句,

for循环语句,

break和continue的使用,

函数的基本使用,

模块的使用,

列表,

元组,

字典三种高级变量,

字符串的常用操作。

之后又实际操作,名片管理系统的案例,通过这个案例巩固学习的知识点。

第三阶段(11-13天)

有类和对象的基本概念,

dir函数,

self的作用,

初始化方法__init__,

内置函数__str__,__del__,

单继承,

方法重写,

私有属性和方法,

多继承,多态,类属性,静态方法。

单例模式,异常的捕获,异常的抛出,

from import局部导入,from import导入同名工具, from import导入所有工具,包的使用,制作模块,pip的使用以及文件的相关操作。

第四阶段(14-15天)

我也学了这个项目,是开发飞机大战游戏的,学会之后能更好的掌握知识点,除此之外,还看了黑马程序员的其它的项目视频,多多的实践。

结后语:

学习编程更重要的是实践、对编程感兴趣,如果想要视频可以私信我哦。

第4个回答  2017-12-26

如果我是小白,我满足什么条件可以学Python呢?

再给大家分享之前呢,我介绍一下我弄的一个学习交流群,有什么不懂的问题,都可以在群里踊跃发言,需要啥资料随时跟我说,入门资料什么的都有,无偿分享。这个python群就是:小编期待大家一起进群交流讨论,讲实话还是一个非常适合学习的地方的。各种入门资料啊,进阶资料啊,框架资料啊爬虫等等,都是有的,风里雨里,小编都在群里等你。

——会使用电脑,但从来没写过程序;

——还记得初中数学学的方程式和一点点代数知识;

——想从编程小白变成专业的软件架构师;

怎样才能在python界占有一席之地呢?

除了上述的三条,还要有:

——6个月早上9:00到晚上10:30全力以赴不间断学习的毅力

——不骄不躁不退缩不认输的决心

如果我是小白,学Python要准备什么呢?

学习Python必不可少的一部肯定是工具,一种是编码器,一种是解释器:

编码器就是Python。目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的,因为现在Python正在朝着3.x版本进化,在进化过程中,大量的针对2.x版本的代码要修改后才能运行,学习群所以,目前有许多第三方库还暂时无法在3.x上使用。

IDE工具。IDE集成开发环境(简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。

常见使用的工具是:

Pycharm: PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。

IDLE: Idle 是一个纯Python 下使用 Tkinter 编写的相当基本的 IDE。

Ipython: ipython 是一个python 的交互式 shell,比默认的pythonshell 好用得多。

第5个回答  2017-12-26

转眼已到三月,感觉时间过的飞快,作为一名普通的程序员,总觉得不应该这么颓废,趁着还有精力学习,总觉得该学点什么。

于是有了这样一个决定,学习一门新的语言。

一、学习何种语言

其实一直很纠结去学习哪种语言,说实话,如今技术迭代真的很快,想要不被淘汰,就要不断自我充电。

在选择语言方面,我考虑了这么几点:

1.学一门热门语言

全世界差不多有600多种编程语言,主流的有20多种。

为什么要选择热门语言呢?首先它的社区一定很活跃,有一群人在,在你自学的道路上能帮助你很多。其次,网上有很多较为全面的参考资料,源码项目供你学习,同时一些大牛的博客心得你都可以参考学习,大大降低了自学成本。

2.学一门高级语言

对于我来说,首先自身的基本功相对来说没有那么扎实。其次,对我来说,编写代码最终是为了解决实际的应用问题。

我不是研究底层,开发高效率的应用系统那块料的人。所以找一门高级语言,通过学习,通过利用第三方库,第三方组件,自己去处理拼接从而开发出满足自己需求的小工具,这对我来说意义比较大。

3.最重要的,学一门你感兴趣的语言

如果你学习的过程中一点兴趣都没有,那你是痛苦的,同时学习的效果也一定不理想。

二、为何选择Python

最初我有三个方向,java、js、python。

至于为什么最后选择了Python,也是最后根据自己的实习情况来的。

首先排除了java,因为自己本身是c#方向的,再学一门java其实对于自身来说需求不大,java能开发的c#也基本都能够满足,复杂度来说两者也较为接近,兴趣度上也不是很高。

其次是js,目前来说js真的越来越火了,身边的很多同时也在学,对于纯后端的我来说确实学习js也不错,自己本身也有一定的基础。js也能开发一些有趣实用的脚本,对于工作和生活都有一定的帮助。

但是后来为什么没有选择呢,我想是因为从心底来说,还是更想学Python吧。

Python目前来说真的很火,很多产品和其他职业的人或多或少也都会点,其实Python真的可以做很多事情,主要也希望通过学习Python去开发一些有意思的小工具,丰富下生活,提高下工作效率。

三、学习计划

学习是一个长期和坚持的过程。既然决定学习,打算每天花1-2个小时的时间去学习Python,周末的话投入4小时左右。

1.第一个周期:了解

主要系统的了解下Python,整理下Python到底可以做哪些事。

整理下比较有用的学习资料,博客,社区,网站等,方便自己的学习。

2.第二个周期:基础

搭建环境,学习语法,并能初步的习惯Python,使用Python

3.第三个周期:实战

利用Python去开发一些小工具,由小到大,同时也会记录下我学Python的过程,作为自己的积累,也希望对其他要学Python的人有一些借鉴。

四、总结

虽然学习是件痛苦的事情,但付出总是有回报的,亲们,有兴趣一起从零开始学习的欢迎一起交流,互相监督。

相似回答