您的位置:首页 > 编程语言 > Python开发

Python源码学习笔记 · 初识

2018-05-24 23:25 423 查看
版权声明:不允许私自转载,请联系wxz@xkzhineng.com https://blog.csdn.net/qq_33367068/article/details/80445506

Python源码学习笔记 · 初识

标签(空格分隔): Python 源码解析 学习笔记

  接触Python的日子并不算长久,要说精通更会遭人耻笑。很早我就听说,Python在爬虫领域的辉煌成就,后来开始学习Python,也因之爬虫。如今,Python因为人工智能的热门,在众多编程语言中强势崛起,脱颖而出。因为谷歌TensorFlow等深度学习框架的支持,俨然使得Python成为人工智能学习的入门语言。
  我对一项新技术的学习,往往起缘于一个小小的想法,觉得有些许可行性,就决定行动起来,最后成败与否,都已不是关键。第一次使用Python,是来自的春运火车票的烦恼。仔细想一下,为什么不能通过服务器来抢呢,于是开启了12306抢票之旅,走进了Python的世界。
  简洁明了,这是Python给我的第一印象。几行代码,清晰可读,便将我心中的想法,如实的演示在荧屏之上。这也许就是Python的魅力所在吧,少了诸多声明的繁杂,也就更符合我们的阅读习惯。要想更直观的领略代码的风骚,那就请从阅读代码开始吧。

#代码清单1-1
argument = docopt(__doc__)
from_station = stations.get(argument['<from>'].decode('utf-8'))
to_station = stations.get(argument['<to>'].decode('utf-8'))
date = argument['<date>']

print '起点:',argument['<from>'],from_station
print '终点:',argument['<to>'],to_station
print '日期:',argument['<date>']

url = 'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(date, from_station, to_station)
r = requests.get(url, verify=False)
available_trains = r.json()['data']['result']
available_place = r.json()['data']['map']
analysis(available_trains,available_place)

  这是我第一份认真读过的Python代码,并没有太多特殊之处,但寥寥数语,却将一个较为完整的编程逻辑包罗其中,命令输入、命令解析、网络数据获取、数据处理、数据输出显示等一应俱全。相比起我PHP网络爬虫项目的复杂,这里的代码显得优雅许多,代码量也减少了许多。
  以英语为母语的人,一眼就能看出这段代码的含义,对于我而言就稍显得困难,但也能猜出一二。第一部分是获取命令行输入的参数,因为有中文的输入,为了避免乱码,我加入了utf-8编码,即

decode('utf-8')
。这部分代码获取了用户输入的起点、终点和日期信息,接下来用作火车车次的查询。第二部分是输出查询信息。第三部分则是通过12306网站,查询所需的车次信息,解析数据并显示出来。

  运行这段代码,你会发现,运行速度并不快,等了一会结果才出来。不可否认其中网络延时的影响,但其牺牲运行速度来优化某些特性也是事实。与C、JAVA等静态语言不同,Python是一门解释性语言,其本身不会编译成机器码,而是生成一个中间语言,最终通过虚拟机来执行。Python本身的交互能力非常强大,是一个动态的,可以随时进行人机交互的编程工具。要想更好了解Python,实践是一个最好的过程。
  我与Python的结识,就是来源于这样的实践。随后我开始接触深度学习,Python成了我与理论间沟通的桥梁,有些概念看书并不能理解,Python上一运行,强大的可视化工具,一下子便融会贯通。这期间不仅熟悉了Python的各种用法,也接触到了各种Python库。丰富的库资源,给Python带来了强大的功能,同样的,也会带来某种限缩。
  开始走上Python源码的学习之旅,可以说是必然,也可以说是一时的兴血来潮。Python是用C语言写的,对于C本身我也比较熟悉,在一系列的思想碰撞之下,我下定决心啃下这些源码。学习笔记将记录下我的学习历程,我的风格更偏向于想法的探讨,以及思维的梳理,而不是知识的归纳总结。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: