前言
毕业设计总算顺利完成了。
但是看着自己的代码,心中总不是滋味,因为那是各种的平拼凑凑得来的代码,只要求能够运行,不求简单,不求规范。到研究生生活还有三四个月罢,想利用这段时间好好地,系统地学习一下Python,为自己的研究生学习打下一个坚实的基础。这里学习的教程是Github上面的一个大佬的项目
Python-100-Days,讲的是通过一百天来从Python新手变成大佬的一个系列教程。我并不打算用100天来完成这个教程的学习,只是尽可能的在我计划范围内来做好这件事情。我这里很多内容是从这个项目中直接Copy过来的,当然在博客中肯定会有自己的理解。如果大家有幸看到这个学习笔记,希望可以指出笔记中的不足之处,欢迎各位小白或者大佬共同交流。好了,废话就不多说了,直接开始吧。
Python 简介
Python 的历史
- 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。
- 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他实现),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,同时提供了“列表”和“字典”等核心数据类型,同时支持以模块为基础的拓展系统。
- 1994年1月:Python 1.0正式发布。
- 2000年10月16日:Python 2.0发布,增加了实现完整的垃圾回收,提供了对Unicode的支持。与此同时,Python的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。
- 2008年12月3日:Python 3.0发布,它并不完全兼容之前的Python代码,不过因为目前还有不少公司在项目和运维中使用Python 2.x版本,所以Python 3.x的很多新特性后来也被移植到Python 2.6/2.7版本中。
目前我们使用的Python3.7.x的版本是在2018年发布的,Python的版本号分为三段,形如A.B.C。其中A表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(如修复了某个Bug),只要有修改就增加C。如果对Python的历史感兴趣,可以查看一篇名为《Python简史》的博文。
Python的优缺点
优点很多,可以总结为以下几点。
- 简单和明确,做一件事只有一种方法。
- (不是很理解上面这句话,做个标记)
- 学习曲线低,跟其他很多语言相比,Python更容易上手。
- 开放源代码,拥有强大的社区和生态圈。
- 解释型语言,天生具有平台可移植性。
- 支持两种主流的编程范式(面向对象编程和函数式编程)都提供了支持。
- 可扩展性和可嵌入性,可以调用C/C++代码,也可以在C/C++中调用Python。
- 代码规范程度高,可读性强,适合有代码洁癖和强迫症的人群。
Python的一些缺点如下。
- 执行效率稍低,因此计算密集型任务可以由C/C++编写。
- 代码无法加密,但是现在的公司很多都不是卖软件而是卖服务,这个问题会被淡化。
- 在开发时可以选择的框架太多(如Web框架就有100多个),有选择的地方就有错误。
这里的第一点可以解释,在利用TensorFlow深度学习框架的时候,在安装GPU版本tensorflow的时候会要求安装VS(Visual Studio),原因是其中的很多底层计算都是通过调用C语言的函数实现的。
Python 的应用领域
目前Python在云基础设施、DevOps、网络爬虫开发、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等一系列的职位。
Python编译环境搭建
这一部分我就不写了,惭愧四年以来一直都是用Windows系统,未曾长期使用过Linux系统,等到我熟悉Linux系统之后,再来补上这一个环境搭建的问题。具体的搭建很简单, 网上教程资源很多,这里不细述。
代码的注释
注释是编程语言的一个重要组成部分,用于在源代码中解释代码的作用从而增强程序的可读性和可维护性,当然也可以将源代码中不需要参与运行的代码段通过注释来去掉,这一点在调试程序的时候经常用到。注释在随源代码进入预处理器或编译时会被移除,不会在目标代码中保留也不会影响程序的执行结果。
注释分两种:
- 单行注释 -以#和空格开头的部分
- 多行注释- 三个引号开头,三个引号结尾
"""
content: 这里是多行注释,三个引号之间没有空格号
Author: 大大洪大大
Time: 2019-5-19
"""
print("我开始写博客啦");
# 这里是单行注释,'#'后面跟一个空格
一个隐藏的tip
在交互命令行中输入import this
,然后回车,会出现有意思的故事。如下:
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
总结
Day1的内容还是非常简单的,毕竟没有太多的知识点。突然想到,如果每天的任务就这样轻松,那么100天的任务也没什么的,但是,事实好像不是这样的。下一节见。
下一节:Python中的语言元素