知行编程网知行编程网  2022-03-12 10:00 知行编程网 隐藏边栏 |   抢沙发  6 
文章评分 0 次,平均分 0.0

菜鸟学Python的第141篇原创文章

阅读本文大概需要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里面到底有没有三目运算呢,答案是有的,比如:

<span style="color: #75715e;">#way1
</span><span style="color: #ae81ff;">1 </span><span style="color: #66d9ef; font-style: italic;">if </span>a <span style="color: #f92672;">> </span>b <span style="color: #66d9ef; font-style: italic;">else </span><span style="color: #f92672;">-</span><span style="color: #ae81ff;">1
</span><span style="color: #75715e;">#way2
</span>(falseValue<span style="color: #cc7832;">, </span>trueValue)[test <span style="color: #f92672;">== </span><span style="color: #66d9ef; font-style: italic;">True</span>]
<span style="color: #75715e;">#way3
</span>a<span style="color: #f92672;">=</span><span style="color: #ae81ff;">1
</span>b<span style="color: #f92672;">=</span><span style="color: #ae81ff;">2
</span><span style="color: #66d9ef; font-style: italic;">print </span>({<span style="color: #66d9ef; font-style: italic;">True</span><span style="color: #f92672;">: </span><span style="color: #ae81ff;">100</span><span style="color: #cc7832;">, </span><span style="color: #66d9ef; font-style: italic;">False</span><span style="color: #f92672;">: </span><span style="color: #ae81ff;">200</span>}[a <span style="color: #f92672;">> </span>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方法有很多种,非常精妙,这里只罗列部分几种:

<span style="background-color: #472c47;">x</span> <span style="color: #f92672;">= </span>{<span style="color: #a5c261;">'a'</span><span style="color: #f92672;">:</span><span style="color: #ae81ff;">1</span><span style="color: #cc7832;">, </span><span style="color: #a5c261;">'b'</span><span style="color: #f92672;">: </span><span style="color: #ae81ff;">2</span>}
y <span style="color: #f92672;">= </span>{<span style="color: #a5c261;">'b'</span><span style="color: #f92672;">:</span><span style="color: #ae81ff;">10</span><span style="color: #cc7832;">, </span><span style="color: #a5c261;">'c'</span><span style="color: #f92672;">: </span><span style="color: #ae81ff;">11</span>}
<span style="background-color: #3c3c57;">x</span>.update(y)
<span style="color: #66d9ef; font-style: italic;">print </span>(<span style="background-color: #3c3c57;">x</span>)

<span style="background-color: #472c47;">x</span> <span style="color: #f92672;">= </span>{<span style="color: #a5c261;">'a'</span><span style="color: #f92672;">:</span><span style="color: #ae81ff;">1</span><span style="color: #cc7832;">, </span><span style="color: #a5c261;">'b'</span><span style="color: #f92672;">: </span><span style="color: #ae81ff;">2</span>}
y <span style="color: #f92672;">= </span>{<span style="color: #a5c261;">'b'</span><span style="color: #f92672;">:</span><span style="color: #ae81ff;">10</span><span style="color: #cc7832;">, </span><span style="color: #a5c261;">'c'</span><span style="color: #f92672;">: </span><span style="color: #ae81ff;">11</span>}
z <span style="color: #f92672;">= </span>{<span style="color: #f92672;">**</span><span style="background-color: #3c3c57;">x</span><span style="color: #cc7832;">, </span><span style="color: #f92672;">**</span>y}
<span style="color: #66d9ef; font-style: italic;">print </span>(z)
x <span style="color: #f92672;">= </span>{<span style="color: #a5c261;">'a'</span><span style="color: #f92672;">:</span><span style="color: #ae81ff;">1</span><span style="color: #cc7832;">, </span><span style="color: #a5c261;">'b'</span><span style="color: #f92672;">: </span><span style="color: #ae81ff;">2</span>}
<span style="background-color: #472c47;">y</span> <span style="color: #f92672;">= </span>{<span style="color: #a5c261;">'b'</span><span style="color: #f92672;">:</span><span style="color: #ae81ff;">10</span><span style="color: #cc7832;">, </span><span style="color: #a5c261;">'c'</span><span style="color: #f92672;">: </span><span style="color: #ae81ff;">11</span>}
z <span style="color: #f92672;">= </span><span style="color: #66d9ef;">dict</span>(x<span style="color: #cc7832;">, </span><span style="color: #f92672;">**</span><span style="background-color: #3c3c57;">y</span>)
<span style="color: #66d9ef; font-style: italic;">print </span>(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】

 

 推荐阅读:

2017年度电影榜单出炉

双十二来了,我爬取了淘宝上所有的羽绒服

探秘全国近1600个Python岗位数据分析

学好Python薪水有多少|我爬取了所有的Python职位

一份值得了解的Google Python风格规范指南

南京楼市火吗|16000套二手房数据分析

5分钟带你了解Python2和3的区别|从此不再纠结

 

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享