2022-11-20 16:51:13 +08:00
|
|
|
|
---
|
|
|
|
|
title: 基础语法
|
|
|
|
|
description: Python 基础语法
|
|
|
|
|
keywords:
|
2023-11-09 17:30:33 +08:00
|
|
|
|
- Python
|
|
|
|
|
- 基础语法
|
2022-11-20 16:51:13 +08:00
|
|
|
|
tags:
|
2024-10-14 16:48:38 +08:00
|
|
|
|
- FormalSciences/ComputerScience
|
|
|
|
|
- ProgrammingLanguage/Python
|
|
|
|
|
- Python/Basics
|
2022-11-20 16:51:13 +08:00
|
|
|
|
author: 7Wate
|
2023-08-03 20:12:42 +08:00
|
|
|
|
date: 2023-08-03
|
2022-11-20 16:51:13 +08:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 简介
|
|
|
|
|
|
2022-12-03 18:18:23 +08:00
|
|
|
|
Python 是一门易于学习、功能强大的编程语言。同时是一种**解释型语言,不需要编译和链接**,可以节省大量开发时间。Python 入门相对其它程序设计语言简单,但是熟练掌握需要一定学习时间,尤其是丰富的魔术方法。
|
2022-11-20 16:51:13 +08:00
|
|
|
|
|
|
|
|
|
Python 程序**简洁、易读,通常**比实现同种功能的 C、C++、Java 代码短很多,原因如下:
|
|
|
|
|
|
|
|
|
|
- 高级数据类型允许在单一语句中表述复杂操作;
|
|
|
|
|
- 使用缩进,而不是括号实现代码块分组;
|
|
|
|
|
- 无需预声明变量或参数。
|
|
|
|
|
|
|
|
|
|
Python 解释器**易于扩展**,使用 C 或 C++(或其他 C 能调用的语言)即可为 Python 扩展新功能和数据类型。Python 也可用作定制软件中的扩展程序语言。
|
|
|
|
|
|
|
|
|
|
Python 官网上免费提供了 Python 解释器和扩展的标准库,包括源码和适用于各操作系统的机器码形式,并可自由地分发。
|
|
|
|
|
|
|
|
|
|
Python 官网还包含许多**免费丰富的第三方 Python 模块**、程序和工具发布包及文档链接。
|
|
|
|
|
|
2022-12-03 18:18:23 +08:00
|
|
|
|
## 使用
|
2022-11-20 16:51:13 +08:00
|
|
|
|
|
|
|
|
|
### 安装
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
Python 官网:<https://www.python.org/>,可以在 [官方文档](https://docs.python.org/) 帮助下选择合适版本安装。
|
2022-11-20 16:51:13 +08:00
|
|
|
|
|
2022-12-03 18:18:23 +08:00
|
|
|
|
### 运行
|
2022-11-20 16:51:13 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
Python 安装后在 Shell 中输入 Python 既可运行交互解释器,在解释器内编写 Python 脚本既可以运行。如果需要退出,输入 `quit()`。
|
2022-11-20 16:51:13 +08:00
|
|
|
|
|
|
|
|
|
## 编码
|
|
|
|
|
|
|
|
|
|
Python 源码文件的**默认编码是 UTF-8**,如果不使用默认编码,则要声明文件的编码,文件的**第一行**要写成特殊注释。句法如下:
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
# -*- coding: encoding -*-
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 注释
|
|
|
|
|
|
|
|
|
|
- 单行注释:以 # 和空格开头的部分
|
|
|
|
|
|
|
|
|
|
- 多行注释:三个引号开头,三个引号结尾
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
"""
|
|
|
|
|
第一个 Python 程序 - hello, world!
|
|
|
|
|
向伟大的 Dennis M. Ritchie 先生致敬
|
|
|
|
|
"""
|
|
|
|
|
# hello world!
|
|
|
|
|
print('hello, world!')
|
|
|
|
|
print("你好, 世界!")
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 缩进
|
|
|
|
|
|
|
|
|
|
Python 最具特色的就是使用缩进来表示代码块,不需要使用大括号 **{}** 。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。如果语句缩进数的空格数不一致,会导致运行错误。
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
# 正确缩进
|
|
|
|
|
if True:
|
|
|
|
|
print ("True")
|
|
|
|
|
else:
|
|
|
|
|
print ("False")
|
|
|
|
|
|
|
|
|
|
# 错误缩进
|
|
|
|
|
if True:
|
|
|
|
|
print ("Answer")
|
|
|
|
|
print ("True")
|
|
|
|
|
else:
|
|
|
|
|
print ("Answer")
|
|
|
|
|
print ("False") # 缩进不一致,会导致运行错误
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 行语句
|
|
|
|
|
|
2022-12-03 18:18:23 +08:00
|
|
|
|
如果语句很长,我们可以使用反斜杠 **\\** 来实现多行语句;如果在同一行中使用多条语句,语句之间使用分号 **;** 分割。**在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \\。** 字符串之间不换行则会自动拼接。
|
2022-11-20 16:51:13 +08:00
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
# 反斜杠 \ 用法
|
|
|
|
|
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']
|
2022-12-03 18:18:23 +08:00
|
|
|
|
|
|
|
|
|
# 字符串
|
|
|
|
|
str = "hello" "world" "!"
|
2022-11-20 16:51:13 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 复合语句
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
Python 像 if、while、def 和 class 这样的复合语句,**首行以关键字开始,以冒号 ( : ) 结束**,该行之后的一行或多行代码构成代码组。首行及后面的代码组称为一个子句 (clause)。
|
2022-11-20 16:51:13 +08:00
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
if expression :
|
|
|
|
|
suite
|
|
|
|
|
elif expression :
|
|
|
|
|
suite
|
|
|
|
|
else :
|
|
|
|
|
suite
|
|
|
|
|
```
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
此外,Python 还支持一些更高级的特性,如函数式编程、面向对象编程和元编程等。随着学习的深入,你会发现 Python 的世界越来越广阔。
|
2023-08-03 20:12:42 +08:00
|
|
|
|
|
|
|
|
|
## 关键字
|
|
|
|
|
|
|
|
|
|
Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
$ 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 字符,不包括特殊字符)、**数字**和**下划线**构成,**数字不能开头**。
|
2023-11-09 17:30:33 +08:00
|
|
|
|
- **大小写敏感**(大写的 `a` 和小写的 `A` 是两个不同的变量)。
|
2023-08-03 20:12:42 +08:00
|
|
|
|
- 不要跟**关键字**(有特殊含义的单词)和系统保留字(如函数、模块等的名字)冲突。
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
**PEP 8 要求:**
|
2023-08-03 20:12:42 +08:00
|
|
|
|
|
|
|
|
|
- 用小写字母拼写,多个单词用下划线连接。
|
|
|
|
|
- 受保护的实例属性用单个下划线开头。
|
|
|
|
|
- 私有的实例属性用两个下划线开头。
|