为了账号安全,请及时绑定邮箱和手机立即绑定

遇见好答案---Python编程问答专场

/ 猿问

遇见好答案---Python编程问答专场

慕女神 2016-12-05 18:04:56


Python天生有着开发效率高,部署简单,跨平台等诸多优点,

与Java,C,C++一起成为全球前4大最流行语言。 

So,人生苦短,我用Python

有其他语言编程经验的人,1周内能学会Python基础的内容。


但大部分新手仅仅在Python语法和API层面体验了下,

是无法在实际上胜任工作岗位的!!


随意列举这些的高级Python编程知识点 ↓↓      你可知多少?!

http://img.imooc.com/5845225800014fef03330466.jpg

不懂肿么办?别担心,资深开发工程师告诉你python学习进阶的秘诀。

有问题,就赶紧来提问吧~~


http://img.imooc.com/584524650001453b04020241.jpg

刘硕   资深开发工程师

曾就职于全球领先的半导体公司Freescale、清华大学信研院等知名企业及研究机构。

是国内著名开源项目skyeye中Python架构的贡献者。

具有多年开发及教学双重经验,在慕课网录制了《Python高级编程技巧实战》,点击查看

该课知识点透彻,深受Python学习者的喜欢



  • 在评论区块,发布一条问题并在描述中 @刘硕老师

  • 活动时间:2016年12月6日--12月8日


提问之前希望:

你的问题是关于Python编程技巧、学习进阶相关问题,且描述问题要详细;

千万别再问:Python学来干什么,这个问题慕女神来回答亲(づ ̄3 ̄)づ╭❤~

Python的应用几乎无限制,不仅能在服务器编程、web应用有所作为,

甚至基于Python的数据分析、测试,机器学习都被广泛的运用在行业中。


 

          大家好,很高兴能来到慕课网和大家就Python编程的话题进行交流。


         虽然Python的简洁易用,快速开发对项目有价值,但这不是你的价值,是Python的价值。要想不被代替,你需要的是精进,向更高级的Python进阶。通常自称一个月光速学了会Python的人基本都不是天才,只是浮躁,目标定的比较低而已。不要太过急功近利,慢慢玩, 精进。

         如果你觉着编程有趣,成长也就不再痛苦, 祝学习愉快。


查看完整描述

51 回答

?
tanhouyusheng

@刘硕老师 

我现在在做一些简单的项目,一般用的就是python,本来以前c++用的比较多,现在用过python之后觉得python真的很简单,很简单而且不容易出错,我现在就是做的主要是类似爬虫的探测工作,以及探测得到的数据的比较和存储,虽然没怎么用到那些各种各样的库以及装饰器之类的看起来高大上的东西,但是我用的还是挺(。・∀・)ノ゙嗨的。

其次,我还曾经试着搭建过hadoop的环境,但是mapreduce程序使用python写的因为简单。

下面是我的问题

1、我这样用合适吗,

2、我有个同学跟我说他们做爬虫用java说python不稳定,是这样的吗,我需要注意些什么

3、虽然用的很多,心里还是挺没底的,我对底层了解的并不深入,这么简单,会不会有什么后顾之忧。

4、Python的最适合做的是什么。    

顺便说一下我的理解,我觉得语言不是那么重要,只要能实现相对应的功能就可以了,但是现在好多问题好像都有主流的语言,比如hadoop用java,opencv应C++,这不是主要的,关键是处理的速度与用户感受还有思想。


查看完整回答
27 反对 回复 2016-12-06
  • 程序员硕
    程序员硕
    python是高级语言, 它提供很强的表达能力, 所以用起来很hi. 不用陷入某些繁琐的细节当中, 比如c的内存管理.而且python胶水语言, 可以很好的和其他语言编写的程序兼容, 尤其是c.担心效率的部分可以用c实现, numpy, opencv都是这样.大多时候,有人跟我抱怨python不可靠, 效率差实际是他们没有使用python中处理某类问题的正确方式, 一些人只了解最基本的语法, 就来评价语言好坏.比如有人只知道python有GIL锁这么个事情, 就把python多线程喷得一无是处, 实际他压根没怎么用过.你同样可以找到支持你学习python的证据, 比如NASA使用python做科学计算, google的tensorflow用python开发...深入下去, 即便最终发现python真的有问题也很有收获, 比互相道听途说要好.学python, 没问题.
  • tanhouyusheng
    tanhouyusheng
    谢谢老师的回答,我会好好学习认真研究的
?
inottn

@刘硕老师 

很感谢有这么个机会可以和老师交流,我学python是想用作后端开发。

我想知道Python 与PHP 作为后端服务的编程语言各有什么优劣?

Django和Flask这两个框架让我难以取舍,

我感觉Flask像是轻量级框架,使用起来更为自由。Django则相对全面。

我想知道对于目前这两个框架国内使用率如何,

以及作为初学者,更适合先学哪个框架。

另外,学python也有一段时间了,现在语法都会了,看别人的代码也能看得懂,

但自己做小项目的时候总感觉缺了什么,

想请教老师,这个时候应该做些什么突破自己。

最后在感谢一下老师。希望能从老师的回答中得到启发。

查看完整回答
14 反对 回复 2016-12-08
?
小叶柏杉

@刘硕老师

我现在自学python,和C/C++以及算法,我今年刚刚毕业的学生,因为工作不好找,我就选择了测试这个行业,并且很快进了一家公司实习,并且留在了公司。

但是我不想一直做测试,毕竟我也是计算机专业的学生,上学中也学过编程,但是学的不够深,只是浅浅教我们一种语言的语法,如何使用之类的,但是实际去编程根本不行。所以我现在, 在上班之余自己再重新学习。

我想问老师

1.python为胶水语言,它到底是一个脚本语言还是可以作为一个单独的编程语言?

2.是否能用python单独的写出一个大型的程序么?

3.我还会C/C++,这两种语言可以相互配合么,成为程序中的主力,成为一个结构么?要达到什么样的标准?

4.再说些现实的东西,学会C/C++和python这两种语言好找工作么?

5.除了自学算法和数据结构,还需要再学些什么,才能成为一名资深的工程师?

谢谢老师了,一定给我解答啊。

查看完整回答
11 反对 回复 2016-12-06
  • 程序员硕
    程序员硕
    python可以并且擅长构建大型程序, 大家似乎对脚本语言有偏见, 感觉脚本就是像shell一样调用其他程序, 或像awk, sed一样专门处理文本. 其实应该换个术语叫解释执行.实际上, 你只会python就应付大多开发, 桌面程序, web开发,数据处理..., 好不好找工作取决与你一门语言学习的深度, c, java, python, js...都能找工作, 但每个都只是一点点皮毛的程度, 所有语言都会也没什么用.python学习计划可以看下我手记中的<如何学pyhton?>
?
小毛同学

@刘硕老师 关于Python的学习,你建议是先通读一本教程再开始实践呢还是在实践中查漏补缺式的学习?

查看完整回答
7 反对 回复 2016-12-06
  • 程序员硕
    程序员硕
    动态调整吧, 如果读教程时感觉某些细节目前不太能够理解其应用场景, 就不要硬读了, 做些实战. 实战中感觉自己某些知识掌握不是很精确, 再看看教程深入一下.
?
起个名字真他么难

@刘硕老师

现在算是刚刚接触python学习 因为学习网络安全,python是个很好编程语言,但是平常自己所写出的脚本,感觉代码太过冗杂,看了一下别人的脚本很简单的就解决了一个问题,那么请问老师怎么样才能够写出简洁、高效的脚本程序呢?还有如何控制好自己的程序对内存、cpu资源的调度?望刘硕老师能解答疑问


查看完整回答
6 反对 回复 2016-12-06
  • 程序员硕
    程序员硕
    我觉着简洁高效的代码取决与你对语言理解深度, 很多人是在用python语法写c或java, 编程方式不是python, 肯定不能做到简洁高效.只有在特殊场景才涉及内存管理, 可以看下官方文档中弱引用, 垃圾回收相关模块. 我的课程《Python高级编程技巧实战》中也讲了些实用技巧, 希望对你有用.
  • 起个名字真他么难
    起个名字真他么难 回复 程序员硕
    哦哦 了解 嘿嘿 老师我是不是应该忘掉C的那一套编程习惯 养成自己的python编程风格 (·_·)
  • 程序员硕
    程序员硕
    不需要忘记, 只要使用那种语言时,发挥他们自身威力就好, 没有说c或java是不好的.但有些方式不适合套用到python中, 比如你练泰拳, 然后以散打规则打比赛, 肯定不适应.
点击展开后面1
?
孤独的小猪

@刘硕老师,老师你好,我现在自学python有三四个月了,前段时间出去面试python,发现有好多基础都不会,例如面试问到的map,reduce、生成器这些,而且我发现,我在做web开发中基本都没有用到这些东西。平常看文档学习的时候,map,reduce这些简单用法也都知道。但是实际项目中发现根本用不到这些东西,过了一段时间,这些基础又全部忘掉了。搞得很迷茫啊。

查看完整回答
4 反对 回复 2016-12-07
  • xiaoq1024
    xiaoq1024
    用,多用,不懂就学,学了再用,,用!!!
  • 程序员硕
    程序员硕
    不是这些技术手段在实际项目中无用, 是你难以跳出自己习惯了的编程方式.我说了很多人在用python语法写java或c, 语言变了, 思路没变.这种情况下, 你需要学习.很多技术点都很有用,前提是你会用. 元类可能只有1%的python程序员在用, 但元类对会使用他的人确实是利器.
?
Zeroinger

@刘硕老师

老师好,我是一名大三学生,其实我最开始学的语言是c,因为参加ACM的原因,平常常用C++,出于兴趣吧,自学了Python,平常用来在乌班图上写一写脚本,上周还写了一个爬虫来获取课程实验所需要的测试文件(大量英文单词),我的感觉就是Python短小精悍,但是感觉入门容易,提升有点困难,我就想问一下,如何系统的提升Python功力,有什么好的项目推荐?Python有哪些库我应该掌握?因为我感觉自己就是无从下手,网上的答案千奇百怪,五花八门,希望老师能指导一下。

查看完整回答
4 反对 回复 2016-12-06
  • 秋名山车神
    秋名山车神
    建议你看一下requests库作者写的一本开源书《The Hitchhiker’s Guide to Python!》,上面提到很多有用的东西。 中文版:http://pythonguidecn.readthedocs.io/zh/latest/ 英文原版:http://docs.python-guide.org/en/latest/ python有很多方向,看你想学什么方面了,多在活跃的社区与人交流,多回答别人的问题,在stackoverflow看别人提问的关于python的问题,自己知道了就回答,不知道了就自己找到答案,或者看别人的回答,这都是很好的提升途径。 上面那本书中提到很多开源项目,可以看看他们的源代码,一开始的几个项目都非常的简单,基本都是单个文件,看了以后都能明白,对于提升python能力很有帮助。
  • Zeroinger
    Zeroinger 回复 秋名山车神
    多谢车身,你是老司机吗?哈哈哈
  • Zeroinger
    Zeroinger
    是车神,打错,Sorry
点击展开后面1
?
Arey_jy

@刘硕老师请问您的学习方法是什么呢?不管是哪一门语言,如何浅出深入呢,请教!!现在大多数语言都只是在应用层阶段,如何能像您一样做一名开发工程师呢?

查看完整回答
4 反对 回复 2016-12-06
  • 程序员硕
    程序员硕
    我建议先选择一门作为主语言, 不能平均主义, 把学习时间平分到python, java, c, c++, ruby...上去.这样每一种语言都只是了解了一点皮毛, 或者说是只在语法层面体验了一下, 领会不到精髓的部分.达到一定熟练程度, 在进行宽度的拓展.
  • Arey_jy
    Arey_jy 回复 程序员硕
    谢谢您的意见
?
LeungADa_StudyHard

@刘硕老师  您好,零基础学python,之前没有任何编程基础,现在已经刷完笨方法,核心编程快要完结,之后想做Web,请问接下来该学习哪些知识??python部分如何进阶??我想很多零基础学python的同学跟我有同样的问题,麻烦您抽空回复一下,谢谢

查看完整回答
3 反对 回复 2016-12-06
  • 程序员硕
    程序员硕
    我觉着编程不是应试教育, 不应以"刷"的思想来学习. 其中难免有急功近利的成分.读完几本书并不能代表能灵活的运用python进行编程, 就像在场下能颠球100下, 不代表能上场踢比赛一样.web编程还包含很多python以外的知识, 网络协议, 多线程, 正则表达式...很多过程需要积累.关于学习路径, 可以参看我手记中的文章. 慢慢玩, 愉快.
?
慕粉1472929484

@刘硕老师 您好,能请教下关于java和Python在爬虫方面,两者之间各有什么优势?

查看完整回答
3 反对 回复 2016-12-06
  • 程序员硕
    程序员硕
    我想不出java在爬虫中会比python有什么优势, 因为爬虫是io密集型操作, java比python运算快的优势也并没有什么体现.python在文本处理方面使用起来更简单.
?
junlz

@刘硕老师

前段时间公司的一个平台要做数据迁移,因此需要编写迁移脚本,我本身一直在用PHP进行开发,正好在慕课网看到了您的课程,果断买下进行学习。还真的解决了不少实际的问题,比如字符串的一些处理等等。再次表示感谢!我也有几个问题需要请教您

第一、PHP开发我用了两年多了,基本上一直在用框架写。(PHP感觉水平也就那么回事)目前的公司会经常写脚本而且都是要求凌晨执行的那种,您的课程我目前还没有看完,我想问问您怎样结合Python和PHP去深入学习?我不想那种语言都学的不够深入,最后影响自身的发展。

第二、工作中也会常用到一些Shell脚本来分析log文件,通过接触Python也感觉到他比Shell处理某些log文件要方便的多。关于shell和python的学习我也想听听您的一些建议,因为我对他们的了解不够深入。

第三、Django、Flask等框架建议怎样去学?

第四、自己关于编程的学习方式一直是这样的   在学完PHP后,自己再去了解别的语言基本上就是 先了解基础知识--> 然后找个博客啥的小应用练习一下,发现基础学的不够扎实,再返回来学不扎实的地方。-->然后再去找个项目啥的去做 -->再去补漏基础知识。 如此反复    不知道这样的学习方法你苟同吗?  自己感觉收获不是很好,或者您有什么好的建议

查看完整回答
2 反对 回复 2016-12-07
  • 程序员硕
    程序员硕
    使用框架让我们开发产品变轻松了, 在生产角度是好的. 但我们以自身做为程序员的角度, 复杂的事情被写框架的程序员处理掉了, 只是让你简单填空就好, 如果你做的应用又没有什么复杂性的话, 长期下来你就没有训练出解决复杂问题的能力.你做的容易, 其他人也一样容易, 这样就感觉自身没有什么价值了. 逃离舒适区, 去解决复杂问题.可以看看框架是怎么实现的, 自己是是写写.也可以练习构建需求更负责的应用.shell工作范围只是python的子集.每个语言只做出一个博客其实没多少价值, 专精.
?
唯有我最酷

@刘硕老师 我是一名普通二本的学生,学校教java和c++但是局限于语法,所以自学了Python当作自己语言,但是Python有好多地方感觉不尽如人意,代码本身阅读无问题,想问问是继续学习第三方库还是自己造轮子,Python的算法是不是会显得鸡肋点,感觉在大的项目上,Python不如c++,大多的算法和数据结构又都基于cc++java为主,当然伪代码也是

查看完整回答
3 反对 回复 2016-12-06
  • 程序员硕
    程序员硕
    作为学生,自造一段轮子还是很有必要, 库是他人帮我们解决了复杂问题, 在工程上利用前人成果肯定是提高效率的.但自造轮子是提升你的自身解决复杂问题的能力.python练习算法并不积累, 它抽象程度更高, 易于描述一个算法.练习算法时不能只关注跑算法程序运行时间, 主要是表达.感觉python不"尽如人意"的地方, 或许是你没有找到恰当的处理方式.
?
time_is_everything
@刘硕老师 老师您好,Python作为一个代码简洁的语言,尤其是在web方面,而我学习的是java web方面的知识,经常在面试要求上看到会java的同时也要熟悉一门脚本语言,例如Python,这样的要求是为了在web端与java相辅相成吗?还望老师解惑……
查看完整回答
2 反对 回复 2016-12-06
?
wangaaty

@刘硕老师 其实平常也在群里问问题,老师和群里的朋友都会耐心解答,就不在这里问问题了,刘硕老师的课是我在慕课买的第一门课,里面的讲解让我知道了原来python还可以这样用,受益匪浅,非常感谢老师,希望慕课越办越好,刘硕老师推出新的课程,造福pythoner~

查看完整回答
1 反对 回复 2016-12-08
?
qq_侨_0

@刘硕 老师您好!身为一个初学者python的优雅和简洁很吸引我。但是,老师我的问题是作为一个后端语言python的弱点是什么?因为我看到的各种课程都是介绍python好处,却很少有人告诉我python的弱点。语言各有所长,我想多了解一下python,趋利避害提升效率,希望刘硕老师能够帮我解答,多谢!

查看完整回答
1 反对 回复 2016-12-08
?
DangCode

@刘硕老师

今天真是机会难得,以前学python的时候有个问题,百度了好多,问了好多群,至今还压在心底没有解决。都是关于编码问题的。

在pyhton中经常会有’\u‘开头的编码 这个编码是不是python编译器实现的unicode编码,除了python在别的语言里是不是也有这种编码 还是这个是python独有的。

在python3中,编辑器编辑的代码都是utf-8编码,如果定义了一个字符串变量,那这个字符串肯定是utf-8编码,编译器在处理这个字符串的时候是不是先转换成‘\u’形式的unicode编码,然后在按照需要进行处理或者解码成其他的编码。

在python2中,编辑器编辑的代码编码是根据编辑器设定的编码,如果设定的为utf-8,也定义了一个字符串变量,字符串要是加个u那是不是编译器就直接存储为’\u‘那种格式的unicode编码了,不加u就存储为utf-8了

除了字符串变量,编辑器里的其他的字符,比如关键字字符 def 或者变量名字符,这些文本上的东西被编译器编译的时候是不是也都先转换成'\u'形式的编码,在处理。

编译器内部怎么运行的实在没办法看到,只能通过一些现象进行推测了,这些问题都是当初学习的时候的思考的一些问题,虽然对使用python并没有啥大的影响,但是今天机会难得,希望老师给解惑,谢谢。

查看完整回答
1 反对 回复 2016-12-07
  • 程序员硕
    程序员硕
    编辑器编码, 是独立与python解释器的, 编辑器的编码也就是源码文件的编码. 像#coding: utf8这样的一行是告诉解释器, 源码文件所用的编码.python2默认情况下, 认为源码文件编码是ASCII. python3默认是认为源码文件的编码是utf8.
?
DangCode

@刘硕老师

今天碰上一个问题 在字典解析中无法使用三元运算符

list_data=[ _ for _ in range(10)]

#此段被注释起来的代码语法错误 不知道怎么样才能正常工作
# dict_data = {k:1 if k%2==0 else k:2 for k in list_data}

#此段代码是变相实现上边那个代码 这中实现方式在效率上比上边的低么
dict_data = dict([(k,1) if k%2==0 else (k,0) for k in list_data])
print(dict_data)

问题在注释了

1:如和在列表解析中用三元运算符

2:两种实现方式在效率差多少

谢谢老师

查看完整回答
1 反对 回复 2016-12-07
  • 程序员硕
    程序员硕
    dict_data = {k: (1 if k%2==0 else 2) for k in list_data}, 第二种先生产列表, 再传给dict构造器, 肯定慢些.
  • DangCode
    DangCode
    老师好厉害 我还是思维被禁锢了 看了你的答案恍然大悟啊
?
艾尔森

@刘硕老师,我是一名软件工程的学生,然而我认为每天跟随课堂学习那些知识并不能完全满足我的好奇心,所以我开始不断的学习各种有趣的语言,之前有自学php 后来现在又开始在自学python(因为学校培养计划都没有这几项),但是我一直有一些问题: 您觉得我应该要先学一种语言学精?还是像这样先不断的尝试自己的兴趣,再向自己的兴趣进发?

还有在学python的过程中,有时会像课堂那样,学完一个知识点后尝试做一个小项目来巩固,在做项目的时候会有很多不了解的地方,我通常会去百度,但我还是依然不知道在学习python的过程中是以知识点驱动项目(学习很多的知识然后不依靠外界自己完成项目)好还是以现在这样以项目来驱动知识点(在做实验的过程中学习更多的知识)好?

最后是近来发现的一个问题,现在主流的python版本有2.7和3.5 但是有些课程会告诉我们2.7会被逐步的替代,而有些课程却依然使用2.7的函数和语法等 老师的建议是什么呢?

查看完整回答
1 反对 回复 2016-12-07
  • 程序员硕
    程序员硕
    兴趣可以广泛, 但应该有一个专精.我觉着学技术像挖一口井, 想挖得深口径需要足够宽, 才有施展空间, 但口径过宽的话, 精力就被消耗掉了.适度吧.知识点和项目结合着来, 相互检验.趋势上肯定是往python3走, 但差异并没有想象的大, 尤其对于新手.学会一个版本过度到另一个, 成本很低.
  • 艾尔森
    艾尔森
    谢谢老师 受益匪浅
?
NoBB_

@刘硕老师

关于Python的运行效率优化问题,程序员应注意些什么,能做些什么?

查看完整回答
1 反对 回复 2016-12-07
  • 程序员硕
    程序员硕
    我们通常使用是cpython, 也就是c实现的. 能了解或猜想出一条python的底层实现, 能避免写出效率糟糕代码.多了解一下技术细节, 比如了解列表切片背后意味的拷贝操作, 这样就不会在多重for语句中迭代切片.还有就是了解python的哪些函数内部是c的速度运行, 比如while比for慢, for比列表解析慢.
  • NoBB_
    NoBB_ 回复 程序员硕
    十分感谢
?
进击君

@刘硕老师 老师您好,对于因为业务导致的长期、间歇性用户并发量突增的网站,如果使用python开发,需要在开始之前做些什么设计?

查看完整回答
1 反对 回复 2016-12-06
首页上一页123下一页尾页

添加回答

回复

举报

0/150
提交
取消
意见反馈 去赚学费 帮助中心 APP下载
官方微信