美文网首页Python程序员联盟程序员我爱编程
Stackoverflow上十大最火的Python问题

Stackoverflow上十大最火的Python问题

作者: 菜鸟学python | 来源:发表于2018-03-01 21:01 被阅读154次
    1111.png

    阅读本文大概需要4分钟
    Stackoverflow应该是每个码农耳熟能详的网站,上面有大量的问题,基本上你遇到的编程的也好,环境安装也好,调试出错也好,都有大牛在上面回答!年前我做个爬虫爬取了Stackoverflow上近90万的数据,想后面写一篇可视化的分享报告!今天我们先看一下投票最多的问题,看看你能回答几道?

    1.What does the “yield” keyword do?

    投票人数:7700 围观人数:1,591,544
    看来大家对Python里面最yield 这个用法都非常好奇,确实这个用法一开始学的时候非常别扭,一头雾水,别的语言根本没有这个。
    yield跟Python里面的生成器紧密相关,刚开始看的时候觉得很别扭,尤其是带有yield的生成器函数用法和逻辑怪怪的,比如用scrapy框架的时候,看到yield头大呢,因为scrapy爬取数据的时候大量的用yield处理。
    但是当你用习惯之后,会发现这种用法非常Python之美

    2.What are metaclasses in Python?

    投票人数:4232 围观人数:565,158
    metaclass其实就是元类,元类到底是啥,有啥用呢!Python里面有几个非常难懂的概念,比如上面的yield,还有装饰器,初学者可能已经比较头疼了,这里还有更复杂的是元类!
    我个人觉得元类算是Python里面最晦涩难懂的概念,比较冷门!要懂元类需要对类非的内部结构和逻辑非常了解,而且在多个类之间继承封装的时候,会考虑用到.
    我个人比较喜欢用设计模式来化解,青菜萝卜各有所爱,但是元编程的技巧,却是非常值得学Python的同学好好研究一下。

    3.How to check whether a file exists?

    投票人数:3592 围观人数:2,553,760
    这个问题看上去很简单啊,为啥这么多都在问。有的小伙伴说os.path.exist(path)不就搞定啦,但是点开看看里面展开了激烈的讨论.
    也有人用os.path.isfile(path),也有人用pathlib库,还有人用os.access()等等,各抒己见,让我长见识了!

    4.Does Python have a ternary conditional operator?

    投票人数:3590 围观人数:1,209,596
    三目运算,很多有c,c++基础的同学对这个一定不陌生,那么Python里面到底有没有三目运算呢,答案是有的,比如:

    #way1
    1 if a > b else -1
    #way2
    (falseValue, trueValue)[test == True]
    #way3
    a=1
    b=2
    print ({True: 100, False: 200}[a > b])
    

    上面3种三目运算的写法是不是让你脑洞大开,还能这样。是的,尤其是在做状态机的时候会用到,历史文章里面有一篇"Google面试算法题,两桶水"就用到了这招。

    5.What does if name == “main”: do?

    投票人数:3590 围观人数:1,209,596
    所有学Python的同学,刚上来学的时候一定会碰到这行代码,我自己刚开始的学的时候,就当它是main函数入口函数。
    后来学了一段时间,才慢慢体会到,这行代码背后的深意.name其实跟模块的引用有关,如果在模块内部运行这个程序,就是main这个名字,如果是外部引用,则是模块的名字.

    6.Calling an external command in Python ?

    投票人数:3276 围观人数:2,324,850
    这个问题做自动化运维的同学一定不陌生,用Python在linux服务器上调一些其他的脚本,肯定会用到os.system()这招,或者用os.popen("ls -l").read(),获取返回的结果,或是用subprocess.Popen()跑一些command.

    7.How to merge two dictionaries in a single expression?

    投票人数:2858 围观人数:1,024,003
    字典和列表的用法,算是Python里面的最精妙的地方,后面几个问题都和字典有关!字典的merge方法有很多种,非常精妙,这里只罗列部分几种:

    x = {'a':1, 'b': 2}
    y = {'b':10, 'c': 11}
    x.update(y)
    print (x)
    x = {'a':1, 'b': 2}
    y = {'b':10, 'c': 11}
    z = {**x, **y}
    print (z)
    x = {'a':1, 'b': 2}
    y = {'b':10, 'c': 11}
    z = dict(x, **y)
    print (z)
    

    8.How do I sort a dictionary by value?

    投票人数:2650 围观人数:1,604,329
    字典的排序问题,也是一个非常典型的字典相关问题,发现 Stackoverflow上对字典的用法,还是吸引了大批的爱好者!
    字典的排序有很多种方法,详细可以看我一年前写的文章里面,有好几篇都是对这个介绍.
    大体可以用sorted,或者获取字典的items()循环排序,或者collections模块里面的most_common().

    9.How can I create a directory if it does not exist?

    投票人数:2643 围观人数:1,645,881
    这个问题非常巧,我前段时间在小密圈分享过一种非常Pythonic的用法,不仅仅是路径不存在,还有文件不存在的情况!
    没有想到stackoveflow这是排名第九的热点问题!我们一般通俗的做法是用if/else,或者if not 来判断一下路径是否存在os.path.exist(),不存在则新建一个路径.

    10.Does Python have a string 'contains' substring method?

    投票人数:2496 围观人数:2,226,231
    总于有字符串的问题了!我一直在想前面文件,字典,模块,生成器,对象,怎么没有字符串呢!
    啊哈发现第十个问题是关于字符串的,这个问题其实涉及很多字符串的技巧,深挖出来,可以挖出一箩筐关于字符串的技巧!
    一般我们来判断一个小字符串在大的字符串里面,可以用in,find,或者用正则去search,甚至关于字符串的大量处理,大规模的可以用pandas里面的str去处理。

    当然如果只是简单的分析热门问题,并不需要深度爬取,只需要点点网页上的排名就行了,我是为了后面写一篇深度分析报告.

    好上面就是10大热门问题,我自己一路读下来,发现收获不少!也可以检测一下自己学的掌握情况,有的时候答题不仅是帮助别人,也是提高自己,温故而知新 可以更强矣!小伙伴不知道大家都打出几道了,欢迎留言报个数吧!

    相关文章

      网友评论

      • 菜鸟学python:欢迎去公众号“菜鸟学Python”获得更多好玩,有趣的文章源码

      本文标题:Stackoverflow上十大最火的Python问题

      本文链接:https://www.haomeiwen.com/subject/vxbnxftx.html