文章目录
- Python名称由来
- Python历史版本
- 变量命名规则
- Python安装
- 操作系统如何运行程序
- Python 开发常用工具
- 代码规范
- Python标准库模块导入
- 使用Python 包(package)组织代码
Python名称由来
Python的创始人为 Guido van Rossum,当时他在阿姆斯特丹的荷兰数学和计算机科学研究学会工作。1989年的圣诞节期间,Guido van Rossum为了在打发时间,决心开发一个新的脚本解释编程,作为ABC语言的一种继承,替代使用Unix shell和C语言进行系统管理,担负同Amoeba操作系统(英语:Amoeba (operating system))的交互和异常处理。之所以选中Python作为编程的名字,是因为他是BBC电视剧——《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus)的爱好者。
Python历史版本
Python 历史上有几个重要的版本节点:
- January 1994,Python1.0 发布
- 2000年10月16日,Python2.0 发布
- 2010年7月3日,Python2.7 发布,这是Python2.x的最后一个版本,Python2.x 和 Python3.x不兼容
- 2008年12月3日,Python3.0 发布,Python3引入多个和Python2.x不兼容的特性,Python 从2.x到3.x的迁移经历了比较长的时间,编程语言版本不兼容有时候会是个致命错误(例如Perl6),好在Python挺过来了。
- 2021年10月5号,Python3.10 发布,这是目前到2021年为止最新的版本
- 而最新的开发中版本是 Python3.11
变量命名规则
- 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。
- 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
- 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
- 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
- 慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;
注意:应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的注意。
Python安装
不同平台对Python环境的默认支持是不同的:
- Windows 平台没有默认安装 Python
- Linux/Mac 平台大部分默认安装了 Python2.7
安装Python3.x 版本:
Windows
:下载 Windows 安装包安装:https://www.python.org/downloads/windows/
CentOS
: 使用yum包管理器,执行命令:yum install -y python3
Ubuntu
: 使用apt-get包管理器,执行命令:apt-get install -y python3
MacOS
: 安装brew包管理器,执行命令: brew install python3
操作系统如何运行程序
人和操作系统如何交互?最早Ken Thompson设计Unix的时候,使用的是命令解释器,命令解释器接受用户的命令,然后解释他们并执行。 Shell是人和机器交互的界面,分为GUI和命令行(CLI)两种方式,这里重点介绍命令行的方式。概念Shell路易斯·普赞(Louis Pouzin)在1964年至1965年间首次提出,随后在Multics(MULTiplexed Information and Computing System)项目中首次被实现出来。肯·汤普逊(Ken Thompson)以Multics上的shell为范本实现的第一个Unix壳层(Unix shell):Thompson shell。AT&T贝尔实验室的史蒂夫·伯恩在1977年实现了Bourne shell,或sh,它是Version 7 Unix默认的Unix shell,替代执行文件同为sh的Thompson shell。微软的Windows操作系统也提供了命令行壳层的功能,它们是Windows 95 / 98下的command.com、Windows NT内核下的cmd.exe以及PowerShell。 下面的Python 列表包含了Unix系统常见的shell: shells = [ ‘Bourne shell(sh)’, ‘Almquist shell(ash)’, ‘Debian Almquist shell(dash)’, ‘Bourne-Again shell(bash)’, ‘Korn shell(ksh)’, ‘Z shell(zsh)’, ‘C shell(csh)’, ‘TENEX C shell(tcsh)’, ‘EMACS shell (eshell)’, ‘Es shell(es)’, ‘esh (Unix) – Easy Shell’, ‘friendly interactive shell(fish)’, ‘rc shell(rc)– shell for Plan 9 from Bell Labs and Unix’, ‘scsh(Scheme Shell)’, ‘Stand-alone Shell(sash)’, ‘BeanShell(bsh,bsh.Interpreter , bsh.Console)’, ‘Rhino JavaScript壳层(org.mozilla.javascript.tools.shell.Main)’ ] 通过shell,我们可以让操作系统执行Python程序。而Python是解释型语言,源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。有两种基本的方式运行 Python
- repl: 交互式编程( Interactive )
- source: Python 源代源文件( File )
Python 开发常用工具
IDEL(https://docs.python.org/3/library/idle.html),,) Python 内置的IDE,功能比较一般。, VIM(http://www.vim.org/),,)如果你是个VIM爱好者,可以用VIM编写Python,但是Python的缩进处理会比较麻烦。当然,你在 Linux 服务器上的时候有时候就只能用VI/VIM了。 Visual Studio Code(https://code.visualstudio.com/)),VSCode 对Python的支持非常友好,配合几个插件后几乎是对 Python 开发最友好的IDE了。 PyCharm(https://www.jetbrains.com/pycharm/)),jetbrains 出品的 PyCharm 也是 Python 开发者常用的IDE。
代码规范
CodeChina上有一个中文镜像仓库:zh-google-styleguide,可以看到 Google Python 代码风格指引十分简短:python_style_rules 此外,Python 官方代码风格文档是:PEP8。你会问PEP是什么?PEP是Python Enhancement Proposals的缩写。一个PEP是一份为Python社区提供各种增强功能的技术规格,也是提交新特性,以便让社区指出问题,精确化技术文档的提案。
Python标准库模块导入
Python 语言通过模块(module)来组织代码。Python 标准库十分庞大,由C语言编写的内置模块,和由 Python 编写的解决常见开发需求的模块。下面的Python数组列举了常用标准库。
代码语言:javascript复制python_modules = [
"os --- 多种操作系统接口",
"os.path --- 常用路径操作",
"re --- 正则表达式操作",
"datetime --- 基本日期和时间类型",
"heapq --- 堆队列算法",
"enum --- 对枚举的支持",
"math --- 数学函数",
"random --- 生成伪随机数",
"itertools --- 为高效循环而创建迭代器的函数",
"functools --- 高阶函数和可调用对象上的操作",
"shutil --- 高阶文件操作",
"sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块",
"csv --- CSV 文件读写",
"hashlib --- 安全哈希与消息摘要",
"hmac --- 基于密钥的消息验证",
"time --- 时间的访问和转换",
"argparse --- 命令行选项、参数和子命令解析器",
"logging --- Python 的日志记录工具",
"threading --- 基于线程的并行",
"multiprocessing --- 基于进程的并行",
"socket --- 底层网络接口",
"email --- 电子邮件与 MIME 处理包",
"json --- JSON 编码和解码器",
"urllib --- URL 处理模块",
"http --- HTTP 模块"
]
使用 import 相关的语句可以引入 Python 标准库模块。特别地,import 可以被动态的从任何地方调用。
使用Python 包(package)组织代码
稍微正式一点的项目,都会通过将代码组织成有层次结构的组织,以便于管理和持续维护。Python 通过包(package)的方式来组织代码,包是一种特殊的模块(module)。 Python 的包有两种形式,分别是Regular packages 和 namespace packages。 所谓 Regular packages 就是指含有__init__.py的目录,这样的包被其他模块导入的时候,会先执行目录下__init__.py里的代码。Regular packages 可以嵌套,也就是目录下的子目录也可以是一个包。例如:
代码语言:javascript复制python_package_dir_example = '''
parent/
__init__.py
one/
__init__.py
one/
__init__.py
two/
__init__.py
three/
__init__.py
'''
而 namespace packages 也是有层次结构的模块组织,不过它未必是存在文件夹里的,可以存在Zip压缩包里,也可以存在网络上,而且子包和父包也未必要存储在同一个地方。这里忽略不展开。 如果一个模块被import过,Python 会将导入的模块缓存在sys.modules字典里缓存起来,再次导入的时候不会重新执行导入动作,直接从缓存里取。反之,如果我们从sys.modules里把导入的模块删除,则再次import会再次触发模块导入动作。 良好的包/模块组织在程序开发中有重要的作用。随着项目代码的逐渐增加,一开始的单文件程序会逐渐膨胀,所幸 Python 提供当包模式可以良好应对通常的代码分层组织。 但是,当目录层次增加后,在下层目录里的代码引用其他目录的模块时,总是要输入全部路径有时并不方便,此时可以考虑使用 Python 的包相对路径来导入模块。
本文内容到此结束了, 如有收获欢迎点赞