独家分享 腾讯大神教你如何学习一门新的编程语言-以Python 为例

学习 Python ,进行 Django 开发也有一年了,小结一下,一年的学习历程。

1. 了解新语言产生的背景

ABC 是专门为非专业程序员设计的一种教学语言,但是由于其封闭,并未取得成功。1989年的圣诞节期间,吉多·范罗苏姆开发了一个新的脚本解释器,并命名为 Python,作为 ABC 语言的一种继承。新的脚本解释器开放,完美结合了 Unix Shell 和 C 的使用习惯。

2. 了解新语言应用的场景

网站后台

有大量成熟的框架,如 Django,Flask,Tornado

网络爬虫

Python 写爬虫有很多库可用,如 Scrapy,Beautiful Soup

科学计算

可以替代 R 语言和 Matlab,如 NumPy, SciPy, Matplotlib, Pandas

数据挖掘,机器学习,大数据

Scikit-learn,Libsvm,TensorFlow

系统部署,运维脚本

Shell 适合简单的系统管理工作,但涉及复杂的自动化任务还是需要 Python。

由于篇幅有限,今天分享之前先说下这个,,如果大家喜欢的话我会再更新,专注学习Python技术的小伙伴可以进群(五八八零九零九四二)一起交流学习,群里还有大量学习资料可供大家自行下载参看,欢迎大家一起来交流讨论。

3. 了解新语言的特点

Python 的设计哲学是:优雅、明确、简单。Python 的开发哲学是:用一种方法,最好是只有一种方法来做一件事,有些类似 Unix。与其他语言非常不一样的是,Python 以缩进来确定语句块。

Python 是一门面向对象的动态、解释型语言,具有出色的模块化特性。同时,Python 拥有大量的第三方开源包,可以直接使用,极大地提高了开发效率。Python 编写的代码,可读性强,特别适合多人大型项目的开发。但是 Python 的执行效率比不上 C/C++ 这类编译型语言。

4. 学习新语言的数据结构

Python 中内置类型有整型 int,浮点型 float,布尔型 bool,字符串 str,列表 list,元组 tuple,字典 dict,集合 set。与 C 不同的是,Python 并不依赖于关键字定义各种类型。Python 是动态强类型语言,是通过运行时,自动选择合适的数据类型。字符串、列表、元组、集合、字典等复杂数据类型,并不是 C 语言的内置类型。

5. 学习新语言的逻辑结构

if 条件判断结构

for 循环结构

while 循环结构

6. 学习定义一个独立模块

定义函数:

定义类:

定义包:

Python 中定义一个包,只需要在文件夹里面,创建一个 __init__.py文件即可,如:

那么在其他文件中,就可以通过 from mypackage import views 的语法,从 mypackage 这个包里面导入 views 。

7. 做一个小的项目

尝试完成一次领域实践,是对这个领域最佳的入门方式。学习一门新的编程语言,成长最快的阶段在,利用这门编程语言完成项目需求期间。

Django 是一个十分优秀的 Python 写的 Web 程序框架,广泛用于数据驱动类的网站开发。Django 是一个大而全的开发框架,基本不需要额外的第三方配置,就可以快速地进行开发。

笔者的小项目需求是:利用二维码扫码,查看在线简历。

确定项目需求之后,会迎来一个手足无措的时期,不知道从哪里着手开始做项目。如果有一个过来人指导一下,那么很快就能开始编码了。不幸的是,笔者当时身边并没有这样一个人。在网上查阅资料后,最终选定了Jquery 、Foundation、Django 实现这个项目。

实际上,笔者在此之前一直在写 C++ 程序,并没有 Python 的编程基础,仅仅是因为这个小项目,选定的技术栈后台使用的是 Django ,才开始学习 Python。

除了掌握项目使用到的技术栈,在完成项目的过程中,还可以解锁调试技能、通过搜索引擎解决各种程序问题的能力。

为了完成这个小项目,需要走出舒适区,突破原有的技术栈,最终获得快速的技术成长。

8. 学习使用库完成任务

通常,发布者会将使用频率高、可以复用的功能,打包成库,提供给大家共同使用。

库可以分为两类:

一种是官方的库,通常质量比较高、会维护更新;

一种是第三方的库,质量参差不齐,需要自己甄别。

例如,Django 中提供了 from django.views.decorators.http import require_POST 装饰器用于确保 view 函数的请求方法是 POST。使用这个装饰器可以简化 view 函数中的条件判断,有利于编写简洁易读的代码。当然 ,Django 还有大量的第三方 App可以下载使用,直接提供一个完整功能。

在项目开发的过程中,合理地使用库会起到锦上添花的效果。

9. 学习组织代码结构

研究怎样更好的组织项目的代码是一门管理科学。笔者之前也写过相关的文章

讨论了 Django 工程的目录组织结构。

好的项目代码结构需要学习一些高关注度的开源项目的经验,也需要注意输出,成为大家共同的标准,共同维护,产生影响力。

10. 学习让代码易维护

代码维护分为两类:

Bug 易修复,需要代码具有良好的命名习惯、注释、日志输出,实现相同的功能编写尽量少的代码

新功能的扩展,通常是在原有逻辑上,创建新的分支。这类分支又可以分为代码级别和常量级别。我们需要的是通过常量的配置扩展新功能,而减少代码级别的修改

11. 提高代码复用率

随着使用新语言年限的增长,参与项目的增多,会出现一个显而易见的问题:在不同的项目中,会有一些非常类似的功能。甚至在开发新项目时,有时还会去以前项目中拷贝代码。

这时,应该思考如何提高代码的复用率,如何提供公共组件。

代码的复用可以分为:

代码片段(Snippets)

维护一个 Snippets List 是个不错的注意

公共组件(Components)

公共组件需要从项目中分离,会有一定的工作量,但收益很大

从项目中分离公共组件的过程,需要关注模块内的高内聚,模块间的低耦合。在模块分离的过程中,我们会更加深入地去理解应用系统。这一过程的完成,又将极大地提高开发效率。

更重要的是,我们不仅仅从项目中分离出一个公共组件,在使用其他人提供的公共组件时,也会变得容易。

下一次项目开发时,需要一个新功能,你首先想到的可能不是编码,而是去公共组件库或 Github 搜索有没有类似的包,然后经过简单的改造就能在项目使用。

12. 关注性能

针对 Web 应用,高并发、高可用、高一致性始终是亘古不变的议题。在对应用系统不断发起挑战时,那些隐藏的曾经被忽略的问题才会逐渐显现。在这个过程中,不断地发现应用系统的瓶颈,解决这些瓶颈,循环往复,不断加深对业务、对应用系统的理解。

性能报告是性能测试输出的结果。性能报告就像质检报告一样,是让用户信任和使用产品的凭证。高并发、高可用、高一致,并不是口号,需要数据的举证,需要不断的优化性能。

13. 源码阅读

阅读源代码有利于提高自己的代码水平。阅读 Python 解释器的源码,有利于编写高性能的代码。阅读 Django 源码有利于编写易维护、易更新的 Django App。从开始学习这门新语言时,就可以开始尝试阅读源代码。

本文来自企鹅号 - 我爱Python媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏存储

集群NAS和对象存储的区别

这个话题乍一看可能有些奇怪,因为一个是集群NAS存储,一个是对象存储,没什么相同的地方,为啥还要比较? 而实际上,在考察两种技术的实际应用场景时,我们会发现,两...

41510
来自专栏架构说

如何阅读源码

从哪里开始读起,怎么读 这个问题简单,程序从哪里开始就哪里开始读起。譬如,C 代码,当然是从 main(),其他语言也是类似的。但阅读的时候,要带着问题去读。...

5625
来自专栏喵了个咪的博客空间

zephir-(1)开篇介绍

#zephir-开篇介绍# ? ##前言## 先在这里感谢各位zephir开源技术提供者 笔者在学习phalcon的过程中了解到,phalcon2.x版本通过了...

3799
来自专栏恰同学骚年

操作系统核心原理-1.操作系统导论

PS:操作系统原理是大学计算机专业最为重要的一门专业基础课程之一,对于操作系统核心原理的理解对于一个合格的程序员来说十分重要,于是我继续我的“三大原理,两个协议...

1082
来自专栏机器学习算法与Python学习

Python:10篇不可错过的~热文~》》真的很热》》

以下是精选了“ Python开发者” 5月份的10篇 Python 热文。其中有基础知识,项目实战等。 《Python 爬虫建站入门手记(1):环境搭建》 本文...

3243
来自专栏清晨我上码

第一节 DDD领域驱动概述

总结出一个原则:分析设计层面和实现层面完全是两个独立的层面,即使实现层面通过某种技术手段可以把两个完全独立的概念合二为一,在分析设计层面,我们仍然(至少在头脑中...

1923
来自专栏编舟记

架构整洁之道导读(二)

我是《架构整洁之道》(Clean Architecture) 中文版的技术审校者,在审校的过程当中略有感悟,所以希望通过撰写导读的方式分享给大家。

1242
来自专栏城域网光通信

城域网100G 光传输系统实现客户接入链路告警

摘要:为了确保一种小型化、低成本100G传输系统的可靠运行,提出了一种方案实现传输系统中的故障诊断和告警信息传递,分析了告警信息传递的关键技术和实现流程,并通过...

1320
来自专栏北京马哥教育

Python —— 一个『拉勾网』的小爬虫

本文将展示一个 Python 爬虫,其目标网站是『拉勾网』;题图是其运行的结果,这个爬虫通过指定『关键字』抓取所有相关职位的『任职要求』,过滤条件有『城市』、...

5295
来自专栏企鹅号快讯

学习Python语言,这些酷毙的工具你知道几个?

工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法,下面这几个工具给我的工作也带来...

2438

扫码关注云+社区

领取腾讯云代金券