0
点赞
收藏
分享

微信扫一扫

Python基础教程(上)

程序员伟杰 2022-03-16 阅读 51

Python – Life is pathetic, let’s pythonic

把Python放在第一位并不是出于意外,Python在一个传统的C/C艹程序员眼里往往称不上最好(甚至“比较好”)的语言,然而它却是如此流行,考察Python的语法,像是过程语言和函数语言的杂交体,最大的特征是这个缝合怪出奇的简单。我接触Python的时间不长,往往是有需要的时候才想起Python,然后直接去找需要的功能。令人惊奇的是,那些用C看起来“一辈子都干不完”的工作,用Python只要短短的几十行代码就能搞定。当前网上讲授Python的似乎特别多,我想这正验证了它的简单。

很多培训机构的广告里把Python说成世界上最好的语言,这种讨论本身没有什么意义,程序员的寂寞而已,和风油精一样。我很乐意说Python是世界上最好的语言,Python的设计使得在未来很长的一段时间里,Python不具备的优点很快就会变成Python具备的。至于到了它不擅长的地方,使用的人自然会放弃它;到了其它更先进的语言大行其道的时候,它也一样变成教科书上的Pascal(尽管它们似乎是两个极端)。Python在大多数情况下令人感到庆幸——难道这还不够好吗?

Python的历史很简单,一个叫Guido von Rossum的荷兰人发明了这门语言,它的创意来源于一门叫做ABC的语言,而它骨子里的思想则是C。Python这个名字来自Guido喜欢看的BBC电视剧Monty Python’s Flying Circus。最初的Python关注易用性、普适性和可扩展性,前者是脚本语言的优点,后者则是C的强势。对这些特性的盲目追求给它的发展带来了许多意想不到的“好处”,Python社区的社员越来越多,就像linux社员对linux的打磨一样,Python社员们乐于给Python充电,他们为Python提供了铺天盖地的扩展和各种奇妙的语言特性,在这个过程中,Guido则充当了裁决者的角色。Python的发展似乎再次印证了两点:第一,人们永远倾向于简单和实用;第二,永远不要小看群众的力量。

Python的社区目前有着良好的生态,我想,最好的Python资源都可以在官网上找到,没有必要去看任何额外的课程和书籍,从安装到放弃都到了保姆级。官网入口如下,如果你想要一头扎进Python,去吧!

P Y T H O N

在这里不仅可以得到Python各平台下的通行版本安装包,有丰富的链接资源,包括文档、开发团队、包索引、求职、社区等,一应俱全。安装Python只不过就是下载安装的傻瓜操作,Windows下,将Python添加到环境变量的话有利于在命令行l中使用Python。一个系统中可以安装多个版本的Python,在命令行中,默认启动环境变量中找到的第一个Python解释器。如果你想使用其它的Python解释器运行脚本,那么可以采用如下形式的指令(例如我们要用3.6版本Python运行a.py):

python -3.6 a.py

值得留意的是,在第一次安装Python的时候Python的环境变量会被同时添加到系统变量当中。因此,如果你移动了Python的安装目录,不要忘记同时修改系统变量里的路径,如果你只修改了用户变量是没用的。

社区是Python的灵魂,好的社区需要一个好的包管理器——尽管pip说不上有多好。pip是Python的包管理器,它最大的特点就是简单。一句pip install xxx即可轻松地获取各种Python包。Python3.4+版本都会自带pip模块了。用pip下载的包一般就放在Python的lib目录下,Python社区提供了极为丰富的包,加上贯彻KISS原则的设计,Python几乎无所不能。满网上飘的爬虫,网页的前端后端,从数据处理到深度学习,以及丰富的插件和小游戏,我们捉住了Python的尾巴,却不知道它的头会出现在什么地方。Pypi是Python包的上游,在这里你可以找到无数有趣的脚本——和灵魂。

Python是一门解释型语言,运行Python脚本是启动一个Python解释器实例并解析脚本内容的过程。简单的Python练习可以在Python自带的IDLE编辑器里完成,尽管这个编辑器提供的功能极为有限,但是基本的功能它都有,自带调试功能,可以自定义快捷键。我推荐的第三方Python编辑器是Sublime Text,它就是用Python写的,这个软件是付费软件,但是可以免费使用大部分的功能。它具备丰富的插件库,使用CSS样式表,因此,你可以用package-install和customer.css随心所欲地将它打造成自己想要的IDE。比起ATOM,它最大的优点就是启动快,这与Python小而轻便的特性完全一致。如果你需要一个大型的万能IDE,可以选择JetBrain的PyCharm,这是一个企业级的付费软件,同样有着免费的社区版。当然,别忘了地表最强的VScode,它提供简单的Python环境。以上是在Windows或者Mac下的操作,如果是Linux下,各位见仁见智,我单推elpy。

我始终坚持学习一门语言应当先了解如何使用调试器再学习如何编译工程。编译器如机关,需慢慢磨合,调试器如刀刃,能多快就多快。让我感到惊奇的是很多Python程序员依旧采用最原始的插入print(就像每一个C的初学者那样)的方法调试Python程序——这也算是解释型语言的特色之一,解释型语言的单步实际上是对脚本的转义执行,相对于编译语言,本身是十分安全的。pdb的功能是精简的,很像dos的debug,提供基本的断点和跟踪功能。使用pdb模块的命令是:

python -m pdb a.py

python -m调用当前系统默认的Python环境所拥有的模块。我们可以使用更强大的第三方模块ipdb,它提供在代码中直接写入断点、查看临时变量等功能。使用pdb调试常常利用Python的一个特性——装饰器。我们hack某个程序常用的手段是将某个call变成fake call,把这个地方的call换成我们自己写的函数,然后等我们做完要做的事情之后再返回对原函数的call(也可以先返回到我们自己写的接收函数里面收集一下数据)。

干这种事恰好用的上装饰器,因为装饰器说白了就是给函数套壳。Python支持用十分简洁的语法创建多层装饰器,这也体现了它具有的AOP特性。不过,就调试而言,单纯追求方便的角度来说,支持断点可视化、多窗口的单步要友好的多,这时候IDE们就派上用场了。不过,写Python代码的人需要的更多的也许是代码检查,而不是调试。能在代码层面减少不必要的bug实在是再好不过了。

gdb7.0+支持对Python程序进行调试。你可能需要预先下载python调试用到的符号表,在这之后就可以像调试C程序一样用gdb去调试Python程序了。

现在回头看Python主程序,Python的主程序是Python解释器,与一般的程序相似地,它支持命令行参数。Python命令的一般格式如下:

python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]

这里不解读每个参数具体是什么意思,因为文档讲的很清楚。Python解释器提供适用于不同平台的版本,事实上,Python在设备兼容性这方面非常强大,因为它有很多不同的语言实现。比如说,使用C语言开发,也就是Cython,实质是它在运行时将脚本转译为C函数,如果转译为Java函数那么就是适用于JVM的Jpython。当然,Python早就实现了二代编译器,也就是Python版本的Python。Python是开源的,你很容易在*nix系统下使用cmake构建Python。你还可以根据自己的需要选择各种嵌入/捆绑包。

作为一门解释型语言,Python提供tty交互功能。在Windows下,你可以在powershell中进行交互。Python默认的编码格式是utf-8,这一点非常友好。你可以用它轻松地处理各种语言的文本。

>>> print("こんばんは")
こんばんは

不过,这在Windows下面可能会出现问题,因为有的Windows机器的默认编码不是utf-8。

声明Python源码编码的方式为在开头写一行特殊的注释:

# -*- coding:utf-8 -*-

另一种方式是在命令行下设定临时环境变量,在windows下使用Python的很多教程都依赖于windows的控制面板,事实上,即使是Windows,用命令行设定临时环境变量是很方便的事情。比如,使用dos命令:

set PYTHONUTF8 1

这条命令将环境变量PythonUTF8在当前命令行窗口的上下文中置为1,这意味着在当前窗口下将使用utf-8作为Python文本的默认编码。欲永久修改环境变量则应使用setx命令。此外,在Windows下使用Python安装器进行安装时,可以一键勾选添加到环境变量。

Python解释器支持高度的个人定制(事实上整个Python都尽可能的允许用最简单的方式进行搭积木般的定制),在Python标准库中提供了解释器基类code,这个基类可以创建一个Python模拟器(几乎一模一样),基于这个类你可以扩展出自己的个性化Python模拟器(比如使用asciiart作为交互的输出)。

Python受C的影响很深,甚至,某些从C那里抄来的特性与Python环境是格格不入的。但这也许是Python优胜的地方,人们喜欢简单的东西,很少有人会出于完美主义去花费大量的时间和精力学习一件不流行的东西,哪怕它是一件小提琴般的艺术品,比如和声键盘。Python吸收了来自很多不同语言的特性,却并没有引起反感,大家都乐于一面尝试这些特性,一面尝试着为它添加更多的特性,这大概是出于某种保守性吧,毕竟是技术宅呢。

by gynamics

以前写的东西现在看真是好笑,如果对您有帮助真是再好不过了。

举报

相关推荐

0 条评论