Python核心技术与实战
景霄
Facebook资深工程师
立即订阅
13891 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从工程的角度深入理解Python
免费
基础篇 (14讲)
01 | 如何逐步突破,成为Python高手?
02 | Jupyter Notebook为什么是现代Python的必学技术?
03 | 列表和元组,到底用哪一个?
04 | 字典、集合,你真的了解吗?
05 | 深入浅出字符串
06 | Python “黑箱”:输入与输出
07 | 修炼基本功:条件与循环
08 | 异常处理:如何提高程序的稳定性?
09 | 不可或缺的自定义函数
10 | 简约不简单的匿名函数
11 | 面向对象(上):从生活中的类比说起
12 | 面向对象(下):如何实现一个搜索引擎?
13 | 搭建积木:Python 模块化
14 | 答疑(一):列表和元组的内部实现是怎样的?
进阶篇 (11讲)
15 | Python对象的比较、拷贝
16 | 值传递,引用传递or其他,Python里参数是如何传递的?
17 | 强大的装饰器
18 | metaclass,是潘多拉魔盒还是阿拉丁神灯?
19 | 深入理解迭代器和生成器
20 | 揭秘 Python 协程
21 | Python并发编程之Futures
22 | 并发编程之Asyncio
23 | 你真的懂Python GIL(全局解释器锁)吗?
24 | 带你解析 Python 垃圾回收机制
25 | 答疑(二):GIL与多线程是什么关系呢?
规范篇 (7讲)
26 | 活都来不及干了,还有空注意代码风格?!
27 | 学会合理分解代码,提高代码可读性
28 | 如何合理利用assert?
29 | 巧用上下文管理器和With语句精简代码
30 | 真的有必要写单元测试吗?
31 | pdb & cProfile:调试和性能分析的法宝
32 | 答疑(三):如何选择合适的异常处理方式?
量化交易实战篇 (8讲)
33 | 带你初探量化世界
免费
34 | RESTful & Socket: 搭建交易执行层核心
35 | RESTful & Socket: 行情数据对接和抓取
36 | Pandas & Numpy: 策略与回测系统
免费
37 | Kafka & ZMQ:自动化交易流水线
38 | MySQL:日志和数据存储系统
39 | Django:搭建监控平台
40 | 总结:Python中的数据结构与算法全景
技术见闻与分享 (4讲)
41 | 硅谷一线互联网公司的工作体验
42 | 细数技术研发的注意事项
加餐 | 带你上手SWIG:一份清晰好用的SWIG编程实践指南
43 | Q&A:聊一聊职业发展和选择
结束语 (1讲)
结束语 | 技术之外的几点成长建议
Python核心技术与实战
登录|注册

01 | 如何逐步突破,成为Python高手?

景霄 2019-05-10
你好,我是景霄。
工作中,我总听到很多程序员抱怨,说现在的计算机编程语言太多了,学不过来了。一些人 Java 用了很多年,但是最近的项目突然需要用 Python,就会不知所措,压力很大。
众所周知,Facebook 的主流语言是 Hack(PHP 的进化版本)。不过,我敢拍着胸脯说,就刚入职的工程师而言,100 个里至少有 95 个,以前都从未用过 Hack 或者 PHP。但是,这些人上手都特别快,基本上一两周后,日常编程便毫无压力了。
他们是怎么做到的呢?
事实上,他们遵循的,正是我在开篇词中提到的方法,也是本专栏学习的中心观点:“从工程的角度去学习 Python”。那么具体来说,到底要怎么学,学习的过程中又要特别注意哪些地方呢?

不同语言,需融会贯通

其实,如果你在学一门语言的时候多阅读、多练习、多思考,你就会发现,不同语言都是类似的。编程语言本就是人类控制计算机的指令,语法规则等方面自然大同小异。
而在原有基础上,学习一门新的编程语言,其实也没有那么难,你首先要做到的是明确区分。比如,在学习 Python 的条件与循环语句时,多回忆一下其他语言的语法是怎样的。再如,遇到 Python 中的字符串相加时,你能分析出它的复杂度吗?再联想到其他语言,比如 Java 中字符串相加的复杂度,它们之间有什么相同点、又有什么区别呢?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Python核心技术与实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(95)

  • 夜路破晓
    编程零基础自学Python半年一直在门口打转转,水平局限于leetcode刷题复写代码,会看不会写,更没有信心自己上手项目,更别提找到相应的工作了。
    我有些业务经验基础和对数据的好奇心,目前希望转行先做数据分析逐渐往自动化运营方向发展,边做边学,打算报考在职研究生系统地学习下计算机科学,主要方向是机器学习和人工智能。
    我的问题是,现在年龄也不小了,半路出家“工程师”不知道能不能成?但明知道悬崖在前,不得不自我鞭策,每天工作、生活与学习交织并行,感到鸭梨山大,焦虑感与日俱增。
    我对学习不迷茫,因为我发自内心信任地学习,但我对转行这件事以及未来的就业感到迷茫。一边是希望能够在未来人机协同的创新社会中找到自己的价值与地位,一边是自己心里真的是一点底也没有。

    作者回复: 我和你有过相同的经历,但是那时我还处在本科,年龄还小,对于你的case:
    首先你要相信自己。我身边很多的同事,朋友都是半路出家,不少28,29,甚至30了才转的计算机,甚至是从文科转的。但是你也要做好心理准备,这肯定是一个漫长艰苦的过程。

    leetcode可以说是基础吧,因为算法题的练习可以锻炼你的逻辑思维。重要的是,一定要多做项目,多写,多和优秀的人交流,很多工程上的经验都是通过遇到实际问题然后去解决积累起来的。其次对于方向的问题,现在太多的人想做机器学习,我的建议是工程的开发也不要落下,比如后端开发之类的,多去通过项目了解一下自己的擅长什么和喜欢做什么,再做决定。

    最后祝你成功!

    2019-05-10
    1
    26
  • Clany
    老师,Python中循环结构while和for谁的效率高呢?

    作者回复: 这个看你怎么写了。代码中所有直接调用C的操作的语句肯定比通过Python间接调用C(Python的解释器是C写的)快的多。比如下面的例子B用for循环比例子A用while循环快很多,因为range这个函数是C写的,直接调用。但是i += 1这个操作得通过解释器间接调用C,而这个简单的增值操作又涉及到object的创建和删除(i是immutable的),因此相对来说很耽误时间。这个作为了解就可以啦
    (A)
    i = 0
    while i < 100000000:
        i += 1

    (B)
    for i in range(0, 100000000):
        pass

    2019-05-11
    19
  • 大圣归来
    我是自学路上的,就是看视频看书,然后跟着一些demo能做出来一些东西,但是自己做的时候还是没有思路,可能练得还是太少

    作者回复: 往往需要一个需求,一个场景,多练习,多和别人交流,这样才能提高

    2019-05-10
    18
  • 水木刀
    困惑:
            1、学习过一阵子但工作中没怎么用,过了一段时间也就忘了。
            2、真做一个项目时,发现自己有想法,可是实现落地却是很痛苦,各种查找后都不是自己想要的效果,实现起来进度特别慢,就产生畏惧了。

    作者回复: 你和我大学里的经历一样。工程这种东西没办法,都是得逼自己去做项目,练出来的,当然最好有小伙伴一起合作,这样能够相互督促

    2019-05-10
    14
  • geek_holic
    请问学习数据分析与建模有什么建议吗?

    作者回复: 首先熟悉基本的工具,比如机器学习的框架,TensorFlow等等,然后找一些项目练手,比如可以参加kaggle比赛。当然,最重要的是得通过实际的业务积累经验,比如大公司上亿的用户,就是很宝贵的机会,如果你能去大公司机器学习的组工作,这样海量的数据加上不停的practice和分析,肯定大有所为

    2019-05-12
    8
  • 非鱼
    您可以推荐一些优秀项目代码
    2019-05-10
    6
  • Wen
    谢谢,看完很有收获。想请教一个问题,对于零编程基础,想通过学python找到相关岗位的工作。怎么选python方向呢?感觉其他的方向都挺难,爬虫还好,学完基础就可以做一些简单的爬虫练习项目,我选python爬虫是不是没啥问题呢?

    作者回复: 最简单的应该是数据分析的工作吧,就是用python实现一些简单的数据统计分析的功能,往往只需要高中的数学知识就够了。爬虫这种属于服务器端的工作,对于服务器端的工作,应该也不难,对数学都没有高要求,但是需要工程经验的积累。门槛最高的应该是机器学习这块,需要较高的数学基础。
    综合下来,我觉得你应该定位于服务器端的开发,自己先做项目试手,找到工作后,多积累经验,然后一步步可以更深入

    2019-05-10
    6
  • 么西卡
    qa一名,感觉学了很多,一直没机会做太大的项目,都是一些脚本类型的,很难突破啊

    作者回复: 1. 公司相关的代码库建议阅读了解一下,多和研发人员交流,看看他们在干什么
    2. 实在不行,只能自己私底下做项目,优势是灵活,劣势是用户很少,很多线上的问题无法遇到

    2019-05-10
    5
  • 🐠仙鱼🐠 lggl.cn
    老师,能不能每日一更新,我很“饥渴“啊!

    作者回复: 哈哈。每周更新3次。每日都更新,我来不及写啊

    2019-05-11
    4
  • 阿哔
    python小白,之前只接触过C++但是也只懂一点点最基础的东西,现在转专业,需要写代码,开始学习python,但总是感觉力不从心,再简单的问题也要去百度,别人怎么做,可能还是基础不牢固

    作者回复: technical的问题尽量用google,可以买个代理。百度基本查不到啥的。

    你这种情况还是得多练,通过项目练习,积累工程经验

    2019-05-10
    4
  • AI悦创
    脑图的第三步中编辑器没有sublime text3
    ,是不适用还有有什么原因呢?想了解了解

    作者回复: 谢谢补充

    2019-05-10
    3
  • ahee
    接触python一年左右了,Django和Flask各做过一个项目,基础用法都掌握了,但就是感觉没有摸到门路,实现的功能也都是google一下相关模块,拿过来就用,希望跟着老师学习能够登堂入室
    2019-05-10
    3
  • 烟火不坠
    学一门语言,关键在于输出吧~一直想学好Python,但是没用它来写什么东西,学习路上有点迷茫
    2019-05-10
    3
  • NEVER SETTLE
    目前一直重点学三门语言,1. 使用C++做基础架构,2. 使用Go做服务端业务开发,3. 使用Python做算法与数据分析。
    2019-05-22
    2
  • 追逐
    我现在马上就要转入软件工程了。
    现在是在看c++和python,不知道该如何分配时间比较好。

    作者回复: 可以同时学习。Python更适合入门,C++稍微难一些,建议学习了基本知识,多去做一些小项目

    2019-05-14
    2
  • 首席民工
    关于字符串相加的复杂度,这个具体指什么?可以请您举个例子吗?

    作者回复: 后面会讲道。简单的来说,你认为Python中字符串相加的过程是是重新分配一块内存空间,然后把2个字符串分别拷贝进去吗?其实是不对的

    2019-05-10
    2
  • ldw
    我20年前学过一点点编程。后来没用全忘光了。
    python主要领域有数据挖掘和数据分析。我要把日常的数据采集和报表更新工作在ubuntu环境下通过python编程和一点shell编程实现。ubuntu用微软wsl工具下的命令行。编辑器用VI和VIM。这样不但可以练习python,还可以熟悉Linux环境和shell编程。

    作者回复: 👍

    2019-05-10
    2
  • mykgzy
    自学 python 的,主要还是看书和视频,相当于基本语法什么的都已经掌握了,但只是会写一些简单的脚本,对于如何做项目或参与开源等却不了解,就好像已经手里已经有砖头了,但对于怎么造房子却不清楚。求指引
    2019-05-22
    1
  • Da.L.Vinci.Hbuger
    老师,30岁开始入门学习Python知识,来得及么……?以后希望往爬虫这方面发展,希望老师给点学习的建议………
    2019-05-21
    1
  • 南山
    打卡,一定不断练习,不能像以前一样光看书不练,要把知识运用到实际应用,学习新语言,要对比联想思考分析,才能把知识串起来
    2019-05-16
    1
收起评论
95
返回
顶部