# 基础语法

2023年8月03日6分钟阅读

- FormalSciences/ComputerScience
- ProgrammingLanguage/Python
- Python/Basics

## 简介

Python 是一门易于学习、功能强大的编程语言。同时是一种解释型语言，不需要编译和链接，可以节省大量开发时间。Python 入门相对其它程序设计语言简单，但是熟练掌握需要一定学习时间，尤其是丰富的魔术方法。

Python 程序简洁、易读，通常比实现同种功能的 C、C++、Java 代码短很多，原因如下：

- 高级数据类型允许在单一语句中表述复杂操作；
- 使用缩进，而不是括号实现代码块分组；
- 无需预声明变量或参数。

Python 解释器易于扩展，使用 C 或 C++（或其他 C 能调用的语言）即可为 Python 扩展新功能和数据类型。Python 也可用作定制软件中的扩展程序语言。

Python 官网上免费提供了 Python 解释器和扩展的标准库，包括源码和适用于各操作系统的机器码形式，并可自由地分发。

Python 官网还包含许多免费丰富的第三方 Python 模块、程序和工具发布包及文档链接。

## 使用

### 安装

Python 官网：https://www.python.org/
，可以在 官方文档
帮助下选择合适版本安装。

### 运行

Python 安装后在 Shell 中输入 Python 既可运行交互解释器，在解释器内编写 Python 脚本既可以运行。如果需要退出，输入 `quit()`。

## 编码

Python 源码文件的默认编码是 UTF-8，如果不使用默认编码，则要声明文件的编码，文件的第一行要写成特殊注释。句法如下：

    # -*- coding: encoding -*-

## 注释

- 单行注释：以 # 和空格开头的部分

- 多行注释：三个引号开头，三个引号结尾

    """
    第一个 Python 程序 - hello, world!
    向伟大的 Dennis M. Ritchie 先生致敬
    """
    # hello world！
    print('hello, world!')
    print("你好, 世界！")

## 缩进

Python 最具特色的就是使用缩进来表示代码块，不需要使用大括号 {} 。缩进的空格数是可变的，但是同一个代码块的语句必须包含相同的缩进空格数。如果语句缩进数的空格数不一致，会导致运行错误。

    # 正确缩进
    if True:
        print ("True")
    else:
        print ("False")

    # 错误缩进
    if True:
        print ("Answer")
        print ("True")
    else:
        print ("Answer")
      print ("False")    # 缩进不一致，会导致运行错误

## 行语句

如果语句很长，我们可以使用反斜杠 \ 来实现多行语句；如果在同一行中使用多条语句，语句之间使用分号 ; 分割。在 [], {}, 或 () 中的多行语句，不需要使用反斜杠 \。 字符串之间不换行则会自动拼接。

    # 反斜杠 \ 用法
    total = item_one + \
            item_two + \
            item_three

    # 分号 ; 用法
    import sys; x = 'runoob'; sys.stdout.write(x + '\n')

    # 特殊多行语句
    total = ['item_one', 'item_two', 'item_three',
            'item_four', 'item_five']

    # 字符串
    str = "hello" "world" "!"

## 复合语句

Python 像 if、while、def 和 class 这样的复合语句，首行以关键字开始，以冒号 ( : ) 结束，该行之后的一行或多行代码构成代码组。首行及后面的代码组称为一个子句 (clause)。

    if expression :
       suite
    elif expression :
       suite
    else :
       suite

此外，Python 还支持一些更高级的特性，如函数式编程、面向对象编程和元编程等。随着学习的深入，你会发现 Python 的世界越来越广阔。

## 关键字

Python 的标准库提供了一个 keyword 模块，可以输出当前版本的所有关键字：

    $ import keyword
    $ print(keyword.kwlist)

    ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

## 声明

硬性规则：

- 变量名由字母（广义的 Unicode 字符，不包括特殊字符）、数字和下划线构成，数字不能开头。
- 大小写敏感（大写的 `a` 和小写的 `A` 是两个不同的变量）。
- 不要跟关键字（有特殊含义的单词）和系统保留字（如函数、模块等的名字）冲突。

PEP 8 要求：

- 用小写字母拼写，多个单词用下划线连接。
- 受保护的实例属性用单个下划线开头。
- 私有的实例属性用两个下划线开头。