Skip to content

基础概念

6670字,阅读约37分钟

Python 的设计哲学遵循"优雅胜过丑陋"的理念,在语法、概念和使用方式上与 JavaScript 采用了不同的设计思路。

输出函数

在开始学习 Python 语法之前,我们先来了解最常用的输出函数。在 JavaScript 中,我们使用console.log()等方法来输出信息到控制台:

Python 使用print()函数作为标准输出方式,它的作用类似于 JavaScript 的console.log(),但语法更加简洁。print()是 Python 的内置函数,无需导入任何模块即可使用:

print()函数会自动在输出末尾添加换行符,如果不想换行,可以使用end参数:

代码块

在 JavaScript 中,我们使用花括号{}来定义代码块,缩进只是为了美观,即使不缩进代码也能正常运行。这种设计给了开发者很大的自由度,但也可能导致代码风格不统一。

甚至可以写成这样(虽然很难阅读):

Python 则采用了完全不同的哲学。Python 最独特的特性之一就是使用缩进来表示代码块,完全没有花括号。这个设计强制所有 Python 代码都必须保持良好的缩进格式,从而确保了代码的可读性。

在 Python 中,如果缺少缩进或缩进不一致,解释器会直接报错。这看起来可能有些严格,但长期来看能让代码保持整洁统一:

这种设计背后的理念是"优雅胜过丑陋"(Beautiful is better than ugly),这是 Python 禅宗中的重要原则。强制缩进虽然在初学时可能感觉束缚,但能培养良好的编程习惯。

建议的缩进标准:Python 社区推荐使用 4 个空格进行缩进(PEP 8 标准),这比 JavaScript 常用的 2 个空格稍多一些,但能让代码层级更加清晰。

变量声明

JavaScript 开发者已经习惯了明确的变量声明语法。现代 JavaScript 使用letconst来声明变量,这样可以明确表达变量的可变性意图:

JavaScript 的这种设计让我们能清楚地知道哪些变量是可以改变的,哪些是常量。解构赋值更是让变量声明变得非常灵活:

Python 的变量声明哲学完全不同:简洁胜过复杂。在 Python 中,你无需任何声明关键字,直接赋值即可创建变量。这种设计让代码更加简洁直观:

Python 的变量类型也是动态的,可以随时改变,这点和 JavaScript 类似:

Python 同样支持多重赋值和类似解构的操作,语法甚至更加优雅。特别是变量交换,Python 提供了非常直观的写法:

关于常量的约定:虽然 Python 没有const关键字,但社区约定使用全大写的变量名来表示常量,比如MAX_SIZE = 100PI = 3.14159。这是一个约定俗成的规则,虽然这些"常量"在技术上仍然可以被修改。

函数调用基础

在深入学习 Python 各种数据类型之前,我们需要了解函数调用的基本语法。函数是一段可重复使用的代码块,就像 JavaScript 一样,Python 也大量使用函数。

位置参数

JavaScript 中按位置顺序传递参数:

Python 的位置参数语法几乎相同:

关键字参数

Python 函数还支持关键字参数,即通过参数名指定值的参数:

这种语法让函数调用更加灵活和可读。我们会在专门的函数章节中详细学习如何定义和使用函数,现在只需要理解如何调用已有的函数即可。

命名规范

JavaScript 社区广泛采用驼峰式命名(camelCase)作为变量命名规范,这已经成为前端开发的标准:

Python 社区则偏好蛇形式命名(snake_case),这被写入了 PEP 8 官方编码规范中:

Python 命名规范的细节

需要注意的是,Python 的命名规范并不是完全统一的蛇形式。实际上存在几个不同的层次:

为什么 Python 的内置方法使用驼峰命名?

这是历史原因造成的。Python 早期受到了其他语言的影响,很多内置方法沿用了驼峰命名。随着语言的发展,PEP 8 规范确立了蛇形式命名的偏好,但为了向后兼容,内置方法的命名没有改变。现在的规则是:

  • 新的用户代码:遵循 PEP 8,使用蛇形式
  • 内置方法:保持现有的驼峰命名以确保兼容性
  • 第三方库:大多数遵循 PEP 8,但也有例外

注释

JavaScript 开发者熟悉两种主要的注释方式:单行的//和多行的/* */。JSDoc 风格的注释更是前端开发中不可或缺的文档化工具:

Python 的注释系统相对简单,主要使用#号。对于单行注释,Python 和 JavaScript 的//作用相同。当需要多行注释时,Python 开发者通常使用多个#号:

Python 的独特优势:文档字符串(docstring)

Python 有一个非常特殊且强大的功能:文档字符串(docstring)。与 JavaScript 的 JSDoc 不同,Python 的 docstring 不仅仅是注释,它们是语言的内置特性,可以在运行时被程序访问。

docstring 使用三重引号(""")包围,通常放在模块、类或函数的开头。这些文档字符串不仅能帮助开发者理解代码,还能被 Python 的内置帮助系统和各种文档生成工具直接使用:

这种设计让 Python 的文档化程度通常比 JavaScript 更高。你可以使用help()函数查看任何对象的文档,这在交互式开发中特别有用。许多 Python 库都有详细的 docstring,这让学习和使用这些库变得更加容易。

语句结束

在 JavaScript 中,分号的使用一直是个有争议的话题。虽然现代 JavaScript 可以依赖自动分号插入(ASI)机制,但很多团队仍然选择显式使用分号来避免潜在的问题:

有些特殊情况下,不使用分号可能会导致意外的行为,需要特别注意。你可以尝试删除这里的分号后运行:

Python 在这方面要简单得多:换行即表示语句结束,完全不需要分号。这种设计符合 Python"简洁胜过复杂"的哲学,让代码更加清晰易读:

当然,如果你真的需要在一行中写多个语句,Python 也支持使用分号分隔,但这通常不被推荐:

对于比较长的语句,Python 提供了反斜杠续行的功能:

不过,Python 更推荐使用括号来进行隐式的行连接,这样更加优雅:

最佳实践建议:Python 强烈鼓励一行写一个语句的风格,这让代码逻辑更清晰,也更容易调试。这种约束看起来可能限制了灵活性,但实际上能让代码质量显著提升。

小结

Python 基础语法概念体现了"优雅胜过丑陋,明了胜过晦涩"的核心理念:

  1. 缩进定义代码块:使用 4 个空格缩进,强制保持代码整洁,提高可读性
  2. 变量赋值简洁:无需声明关键字,直接赋值创建变量,支持多重赋值和元组解包
  3. 函数调用简单:除了 JavaScript 那样的位置参数外,还支持关键字参数,更加灵活可读
  4. 命名规范统一:采用 snake_case 蛇形式命名,不同类型标识符有不同约定,与内置方法的历史驼峰命名共存
  5. 注释系统丰富#号单行注释,docstring 文档字符串提供运行时可访问的文档
  6. 语句结束清晰:换行即表示语句结束,必要时可用反斜杠或括号进行续行
  7. 文档字符串特色:三重引号 docstring 是语言内置特性,支持运行时访问和工具生成文档

Python 的设计哲学强制开发者编写整洁、可读的代码,这种"约束"实际上提高了代码质量和团队协作效率。掌握这些基础语法概念,特别是函数调用的基本语法,为后续学习各种数据类型和操作打下了坚实基础。

基于 MIT 许可发布