OSC第51期高手问答 ----- 聊聊python那些事

阿娇OSC 发布于 2014/07/23 11:06
阅读 15K+
收藏 47

细节体现态度,细节决定成败,不管是多么高大上的架构/设计/算法,终将依赖代码的有力执行,代码就是魔鬼细节。常常发觉,使用他人的优秀代码容易,而真正理解其设计与实现就要狠下功夫,至于写出同等水平的代码,往往是可望不可即。通过代码能发觉开发者的思维是否严谨,逻辑是否清晰,代码就是开发者的自白。

Python是一门十分灵活的动态语言,给了开发者极大的自由度,但要写出高质量代码,要求并不比传统语言低。有写过自己也看不懂的代码?有写过运行效率极差的代码?有写过深得我心的代码?一切尽在细节中。

本期“高手问答”很高兴请到“Python大神”赖勇浩老师与我们畅聊python那些事。
 

专家介绍:

@赖勇浩 ,资深软件开发工程师,自2006年起以编写Python代码为生,现已创业。在Python领域有深厚的积累,是珠三角技术沙龙创始人之一,从2009年起担任沙龙组委,长年活跃在社区第一线,在国内Python圈子里有较高的知名度和影响力。有超过7年的游戏开发经验,擅长Python、C++等网游相关的技术,曾就职于网易等网游研发厂商;现专注于中国彩票事业,开发互联网、电话和自助终端彩票销售平台,以促进行业信息化为己任。

为了鼓励踊跃提问,@华章  图书会在问答结束后从提问者中抽取 5 名幸运会员赠予《编写高质量代码:改善Python程序的91个建议》一书。

作者: 张颖  赖勇浩  

购买地址:http://item.jd.com/11482761.html

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家向python方面的问题向@赖勇浩 提问,请直接回帖提问。 

加载中
1
机器猫123
机器猫123

@赖勇浩 :老师,你好。我想问一个关于彩票销售终端的问题,我现在有一家彩票站,想实现网站买彩票,终端自动出彩票,不知道使用python做彩票终端的开发,能否实现?

因为彩票终端要实现自动出票,是不是需要编写一个底层的接口机器和彩票终端相连接呢?

还有一个问题,我一直做的是Java开发,如果用python个人开发的话,这个时间周期大约要多长时间?

机器猫123
机器猫123
老师,我还想问一个问题,对于初接触python开发的人,python3和python2会有区别吗?
赖勇浩
赖勇浩
回答被我放在后面了。
1
RobinsonLiao
RobinsonLiao
@赖勇浩 : Python 3 会导致Python的什么前景?最终由3统一,还是一直分裂?各自用自己的版本? 对个人来说,好像无所谓,哪里需要用哪里,有时候处理处理版本问题,但对python的推广应用,新手感觉这样子不太好。
赖勇浩
赖勇浩
以下是我个人的看法,跟python开发团队无关:我觉得py3是未来,但也赞同两个割裂的版本影响推广。
1
赖勇浩
赖勇浩

引用来自“achan2090”的评论

@赖勇浩 : Python 3 会导致Python的什么前景?最终由3统一,还是一直分裂?各自用自己的版本? 对个人来说,好像无所谓,哪里需要用哪里,有时候处理处理版本问题,但对python的推广应用,新手感觉这样子不太好。

py3自发布以来,进步很大,解决了很多py2无法解决的问题,所以我是坚信大家最终会转到py3。

现在py3已经有许多非常吸引人的特性,比如yield from,比如asyncio,比如更漂亮的库结构,等等。

但我承认py3还没有一个巨大的吸引让大家转过去,yield from 算半个,另外半个我觉得是jit,想像一下py3自带jit,运行速度是py2的3到10倍,大家肯定一窝蜂转过去了。

说到jit,我说的不是pypy,我觉得它那条路是错的。我前段时间在python-cn的邮件列表看到有人发布cyjit,基于cython的,我觉得这个方向才有未来。期望这个项目能够得到更多高手的关注,最终成熟起来。

Raymin
Raymin
看好 PyPy! 在速度上仅次于 luajit > nodejs。
1
轩辕剑
轩辕剑
@赖勇浩 :python学习的进阶?基本知识掌握后,该怎么学习?
赖勇浩
赖勇浩
如果已经在工作了,那就直接尝试用python去解决工作需求就好了;如果是学生,那就去复制已存在的网站,把它的功能都弄来,比如oschina。
1
小杨阿哥哥
小杨阿哥哥
@赖勇浩 :你好,前辈。python 适合开发比较复杂的web项目吗?是否支持多线程,有没有像java类似的ssh框架。 
李宇飞
李宇飞
回复 @李宇飞 : https://docs.python.org/2.7/library/multiprocessing.html#module-multiprocessing
李宇飞
李宇飞
Python的多线程是Java的一个子集,不支持中断,恢复,切换等操作,GIL的存在不会影响网络传输方面多线程的性能,如果需要并行化,还是用多进程吧,
小杨阿哥哥
小杨阿哥哥
回复 @赖勇浩 : 两个版本2.x和 3.x 到时候会不会不想不兼容。应该用哪个版本,似乎都在更新
小杨阿哥哥
小杨阿哥哥
回复 @赖勇浩 : 了解了。多线程查了下,是支持的。
赖勇浩
赖勇浩
在我看来,python适合开发小中大巨多种复杂程度的项目,因为能不能把项目做成,最关键的因素还是人。python支持多线程,我对java的ssh框架不了解,但python对web支持不错,有许多第三方库,也有django/flask等许多人叫好的框架。
下一页
1
Ryan-瑞恩
Ryan-瑞恩
@赖勇浩 : Python的高质量代码体现在什么地方了???只是很简单的几句代码就能实现复杂的事情,这门语言的学习成本比较高。。。。。最后我想问的是,Python的继承、多态、私有属性、接口这些东西如何去理解???
Ryan-瑞恩
Ryan-瑞恩
回复 @赖勇浩 : 恩。。谢谢。完全可以考虑。。。。、。
赖勇浩
赖勇浩
python高质量的代码体现在什么地方,这个问题真的不容易回答啊,因为展开来讲,可以写本书哦;只能简单说一句,不论什么语言编写的代码,高质量就是让人感觉优雅漂亮,python也如是。如何理解继承、多态、私有之类的问题,也不便于在这里展开答复,但我书里堪堪有所讨论,不如先看一下?
0
泥瓦匠BYSocket
泥瓦匠BYSocket
@赖勇浩 : Python功能全面,所以不要担心自己想的问题Python解决不了 (基本上Python解决不了的问题,别的语言也没戏)。
Python的灵活是不是会恰恰成了弊端
z_zhang
z_zhang
python一秒不能处理100万个数据包 0-0 , 然后打个广告,只有c能做到。在i7的硬件上. hhh 其实配置用python, c来干这种高性能的,绝配
疯人院主任
疯人院主任
你说的都可以,只是没人这么干。
Raymin
Raymin
这话 Python Creater 都不敢说。
pendows
pendows
是嘛?python能原生支持真正的多线程吗?python能写出操作系统吗?pyhton不行其他语言就肯定也不行吗?说这种话的,要多无知就有多无知,讨论python不要搞成python吹捧大会,多讨论讨论python的不足和缺陷对开发的帮助更大
0
赖勇浩
赖勇浩

引用来自“机器猫123”的评论

@赖勇浩 :老师,你好。我想问一个关于彩票销售终端的问题,我现在有一家彩票站,想实现网站买彩票,终端自动出彩票,不知道使用python做彩票终端的开发,能否实现?

因为彩票终端要实现自动出票,是不是需要编写一个底层的接口机器和彩票终端相连接呢?

还有一个问题,我一直做的是Java开发,如果用python个人开发的话,这个时间周期大约要多长时间?

你好。终端自动出票有两个方案,一个是 hack 终端的通信,这个是加密的,很难;个人的话,我觉得弄个自动帮你按键盘的机械臂是比较可行的。

驱动机械臂的硬件选择有很多,没怎么留意它们有没有java的支持,但是python支持的是很多的,比如树莓派以及它的山寨版都可以,所以在这方面选择python可能真的不错。

我个人没有做过相关的硬件,对机械设备的研发也不清楚,估算不出时间,请见谅。

机器猫123
机器猫123
回复 @金和 : 很感谢你的解答,我目前也在研究,因为网络够彩已经成为趋势,已经影响到实体店的销售,所以,自己开始往这方面发展。
SunnyGo
SunnyGo
回复 @金和 : 而且,我感觉那两家公司都是和体彩有关系的。目前,基本上上体彩的都会买这两家的程序,然后找个地方弄一些终端机出票。
SunnyGo
SunnyGo
还是我来回答吧。中国彩票,福彩是福彩中心有统一的出票口。体彩没有统一的出票口,需要HACK出票机器,这个程序基本只有两家公司搞,其中一家是南京的。hack的方法两个,一个是插卡,一个是程序中断拦截。前一种比较早,后一种现在常用。
fly08
fly08
点击此处输入评论
机器猫123
机器猫123
谢谢你的解答
0
赖勇浩
赖勇浩

引用来自“泥沙砖瓦浆木匠”的评论

@赖勇浩 : Python功能全面,所以不要担心自己想的问题Python解决不了 (基本上Python解决不了的问题,别的语言也没戏)。
Python的灵活是不是会恰恰成了弊端

你好。这个说法很有意思,目前编程语言领域有两个语言是以灵活闻名的,一个是lisp及其方言,一个是C++,在这里只说一下C++。

目前大家对C++的看法是它有许多好的东西,我们只用我们想用的、能用的就够了。所谓博观而约取是也。

python并不算是灵活的语言,它追求解决问题的唯一方法,所以有时候你还会觉得它不够灵活呢,这方面就算不跟C++比,跟ruby比一下也差远了。功能全面跟灵活是没有关系的。

0
轩辕剑
轩辕剑
高质量的代码是怎么写的,怎么提升自己的代码的质量?
轩辕剑
轩辕剑
@赖勇浩 谢谢,赖老师!81
赖勇浩
赖勇浩
个人看法:1、熟悉语言的细节;2、熟悉语言和库的最佳实践;3、多看一些提升代码质量的指导书籍;4、同行评审;5、多学几门语言,博采众长。
返回顶部
顶部