文章目录

    • 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/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、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/3/library/idle.html),,) Python 内置的IDE,功能比较一般。,
VIM(http://www.vim/),,)如果你是个VIM爱好者,可以用VIM编写Python,但是Python的缩进处理会比较麻烦。当然,你在 Linux 服务器上的时候有时候就只能用VI/VIM了。
Visual Studio Code(https://code.visualstudio/)),VSCode 对Python的支持非常友好,配合几个插件后几乎是对 Python 开发最友好的IDE了。
PyCharm(https://www.jetbrains/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数组列举了常用标准库。

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 可以嵌套,也就是目录下的子目录也可以是一个包。例如:

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 的包相对路径来导入模块。

本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
主页:共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

更多推荐

Python从入门到入土-基础知识准备