Stackoverflow上百万的Python问题|最火的十个
2018-03-09 13:44
423 查看
阅读本文大概需要4分钟
Stackoverflow应该是每个码农耳熟能详的网站,上面有大量的问题,基本上你遇到的编程的也好,环境安装也好,调试出错也好,都有大牛在上面回答!年前我做个爬虫爬取了Stackoverflow上近90万的数据,想后面写一篇可视化的分享报告!今天我们先看一下投票最多的问题,看看你能回答几道?
看来大家对Python里面最yield 这个用法都非常好奇,确实这个用法一开始学的时候非常别扭,一头雾水,别的语言根本没有这个。
yield跟Python里面的生成器紧密相关,刚开始看的时候觉得很别扭,尤其是带有yield的生成器函数用法和逻辑怪怪的,比如用scrapy框架的时候,看到yield头大呢,因为scrapy爬取数据的时候大量的用yield处理。
但是当你用习惯之后,会发现这种用法非常Python之美
metaclass其实就是元类,元类到底是啥,有啥用呢!Python里面有几个非常难懂的概念,比如上面的yield,还有装饰器,初学者可能已经比较头疼了,这里还有更复杂的是元类!
我个人觉得元类算是Python里面最晦涩难懂的概念,比较冷门!要懂元类需要对类非的内部结构和逻辑非常了解,而且在多个类之间继承封装的时候,会考虑用到.
我个人比较喜欢用设计模式来化解,青菜萝卜各有所爱,但是元编程的技巧,却是非常值得学Python的同学好好研究一下。
这个问题看上去很简单啊,为啥这么多都在问。有的小伙伴说os.path.exist(path)不就搞定啦,但是点开看看里面展开了激烈的讨论.
也有人用os.path.isfile(path),也有人用pathlib库,还有人用os.access()等等,各抒己见,让我长见识了!
三目运算,很多有c,c++基础的同学对这个一定不陌生,那么Python里面到底有没有三目运算呢,答案是有的,比如:
上面3种三目运算的写法是不是让你脑洞大开,还能这样。是的,尤其是在做状态机的时候会用到,历史文章里面有一篇”Google面试算法题,两桶水”就用到了这招。
所有学Python的同学,刚上来学的时候一定会碰到这行代码,我自己刚开始的学的时候,就当它是main函数入口函数。
后来学了一段时间,才慢慢体会到,这行代码背后的深意.name其实跟模块的引用有关,如果在模块内部运行这个程序,就是main这个名字,如果是外部引用,则是模块的名字.
这个问题做自动化运维的同学一定不陌生,用Python在linux服务器上调一些其他的脚本,肯定会用到os.system()这招,或者用os.popen(“ls -l”).read(),获取返回的结果,或是用subprocess.Popen()跑一些command.
字典和列表的用法,算是Python里面的最精妙的地方,后面几个问题都和字典有关!字典的merge方法有很多种,非常精妙,这里只罗列部分几种:
字典的排序问题,也是一个非常典型的字典相关问题,发现 Stackoverflow上对字典的用法,还是吸引了大批的爱好者!
字典的排序有很多种方法,详细可以看我一年前写的文章里面,有好几篇都是对这个介绍.
大体可以用sorted,或者获取字典的items()循环排序,或者collections模块里面的most_common().
这个问题非常巧,我前段时间在小密圈分享过一种非常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去处理。
当然如果只是简单的分析热门问题,并不需要深度爬取,只需要点点网页上的排名就行了,我是为了后面写一篇深度分析报告.
欢迎关注“菜鸟学Python“,更多源码,高清电子书下载!
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,158metaclass其实就是元类,元类到底是啥,有啥用呢!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去处理。
当然如果只是简单的分析热门问题,并不需要深度爬取,只需要点点网页上的排名就行了,我是为了后面写一篇深度分析报告.
欢迎关注“菜鸟学Python“,更多源码,高清电子书下载!
相关文章推荐
- 2017年StackOverflow上最好的20个Python问题
- 一周stackoverflow热门问题选登:如何正确的理解python for循环中的else用法?
- 来自stackoverflow的一个关于 python 嵌套类的问题(nested class)
- Stackoverflow上的Python问题精选
- 2017年StackOverflow上最好的20个Python问题
- 一周stackoverflow热门问题选登:如何用Python for循环实现列表中数据两两循环打印?
- Stackoverflow上的Python问题精选
- Windows下使用python-nmap库可能遇到的问题及解决方法(续)
- Python连接mssql数据库编码问题解决方法
- 关于Python中输出文件选择格式问题
- python2.7的编码问题与解决方法
- 关于python的密码字符串的问题
- 详解windows python3.7安装numpy问题的解决方法
- 用python画图时的中文显示问题
- python 中文乱码问题深入分析
- python学习总结----遇到的常见问题
- python multiprocessing ImportError: This platform lacks a functioning sem_open implementation问题 解决方案
- TensorFlow学习笔记7——Win7下Spyder运行python代码出现UnicodeEncodeError问题的解决
- 每天问自己十个问题
- Python100例——第一章----最简单的问题