Python 入门完全指南
欢迎来到 Python 的世界!Python 是一种功能强大、用途广泛且极其易于学习的编程语言。无论你是想进入数据科学、人工智能、网站开发还是只想写一些自动化脚本,Python 都是绝佳的起点。
本教程将从零开始,带你一步步掌握 Python 的核心知识。
准备工作:安装 Python
在开始编程之前,你需要在你的电脑上安装 Python 环境。
检查是否已安装:
打开你的终端(在 Windows 上是 命令提示符 或 PowerShell,在 macOS 或 Linux 上是 终端),然后输入:
python --version
或者(对于某些系统):
python3 --version
如果你看到了类似 Python 3.x.x 的输出,那么恭喜你,Python 已经安装好了!如果提示命令未找到,或者版本是 2.x.x,我们强烈建议你安装最新的 Python 3 版本。
下载和安装:
- 访问 Python 官网:https://www.python.org/downloads/
- 网站会自动检测你的操作系统并推荐合适的下载版本。点击 “Download Python” 按钮即可。
- Windows 用户请注意: 在安装过程中,请务必勾选 “Add Python to PATH” 这个选项,这会让后续操作方便很多。
- 按照安装向导的提示完成安装即可。
Windows安装教程
Mac自带Python
代码编辑器推荐:
虽然你可以用记事本写代码,但一个好的代码编辑器会让你的编程体验大大提升。对于初学者,我们推荐:
- Visual Studio Code (VS Code): 免费、功能强大,拥有庞大的插件生态系统。安装 Python 插件后会变得非常好用。
- PyCharm Community Edition: 由 JetBrains 公司开发的专业 Python IDE,社区版免费。
你的第一个 Python 程序:Hello, World!
这是编程界的传统,让我们用 Python 向世界问好。
- 打开你的代码编辑器,新建一个文件,并将其命名为
hello.py(.py 是 Python 文件的标准扩展名)。
- 在文件中输入以下代码:
- 保存文件。
- 打开终端,使用
cd 命令切换到你保存 hello.py 文件的目录。例如,如果文件在桌面上,你可以输入 cd Desktop。
- 运行你的程序!在终端中输入:
python hello.py
或者(如果你的系统同时有 Python 2 和 3):
python3 hello.py
你应该会在终端看到输出:
Hello, World!
恭喜你!你已经成功运行了你的第一个 Python 程序。print() 是 Python 的一个内置函数,用于在屏幕上输出信息。
Python 基础语法
注释
注释是代码中不会被执行的部分,用于解释代码的功能,方便自己和他人阅读。
- 单行注释: 使用
# 号。# 号之后的所有内容都会被忽略。
# 这是一行注释,用来解释下面的代码
print("Hello, Python!") # 这也是一行注释
- 多行注释: 使用三个单引号
''' 或三个双引号 """ 将注释内容包裹起来。
'''
这是一个多行注释。
可以写很多行的说明文字。
这部分内容不会被执行。
'''
print("欢迎学习 Python!")
变量与数据类型
变量 (Variable) 就像一个带标签的盒子,你可以把数据放进去。在 Python 中,你不需要提前声明变量的类型,直接赋值即可。
# 变量赋值
message = "你好,世界!" # 字符串 (String)
age = 20 # 整数 (Integer)
price = 99.99 # 浮点数 (Float)
is_learning = True # 布尔值 (Boolean)
常见数据类型:
- 字符串 (String /
str): 文本信息,用单引号 ' ' 或双引号 " " 包裹。
- 整数 (Integer /
int): 没有小数部分的数字。
- 浮点数 (Float /
float): 带有小数部分的数字。
- 布尔值 (Boolean /
bool): 只有两个值 True (真) 和 False (假),注意首字母大写。
你可以使用 type() 函数来查看一个变量的数据类型:
name = "小明"
age = 18
print(type(name)) # 输出: <class 'str'>
print(type(age)) # 输出: <class 'int'>
<class 'str'>
<class 'int'>
字符串操作
字符串是 Python 中最常用的数据类型之一。
- 拼接 (Concatenation): 使用
+ 号。
first_name = "张"
last_name = "三"
full_name = first_name + last_name
print(full_name) # 输出: 张三
- 格式化字符串 (f-string): 这是推荐的、更现代的字符串格式化方法。在字符串引号前加上
f,然后用 {} 包裹变量。
name = "小红"
age = 19
intro = f"我的名字是 {name},我今年 {age} 岁了。"
print(intro) # 输出: 我的名字是 小红,我今年 19 岁了。
text = " Python is Fun! "
print(text.lower()) # 全部转为小写: " python is fun! "
print(text.upper()) # 全部转为大写: " PYTHON IS FUN! "
print(text.strip()) # 去除首尾空格: "Python is Fun!"
print(text.replace("Fun", "Awesome")) # 替换: " Python is Awesome! "
python is fun!
PYTHON IS FUN!
Python is Fun!
Python is Awesome!
数据结构:列表、元组和字典
当我们需要存储一组数据时,就需要用到更复杂的数据结构。
列表 (List)
列表是一个有序的、可变的集合。你可以添加、删除或修改列表中的元素。用方括号 [] 定义。
# 创建一个列表
fruits = ["苹果", "香蕉", "橙子"]
print(fruits) # 输出: ['苹果', '香蕉', '橙子']
# 访问元素(索引从 0 开始)
print(fruits[0]) # 输出: 苹果
print(fruits[1]) # 输出: 香蕉
# 修改元素
fruits[1] = "西瓜"
print(fruits) # 输出: ['苹果', '西瓜', '橙子']
# 添加元素
fruits.append("葡萄") # 在末尾添加
print(fruits) # 输出: ['苹果', '西瓜', '橙子', '葡萄']
# 删除元素
fruits.remove("西瓜")
print(fruits) # 输出: ['苹果', '橙子', '葡萄']
# 获取列表长度
print(len(fruits)) # 输出: 3
['苹果', '香蕉', '橙子']
苹果
香蕉
['苹果', '西瓜', '橙子']
['苹果', '西瓜', '橙子', '葡萄']
['苹果', '橙子', '葡萄']
3
元组 (Tuple)
元组是一个有序的、不可变的集合。一旦创建,就不能修改。用圆括号 () 定义。
# 创建一个元组
point = (10, 20)
print(point) # 输出: (10, 20)
# 访问元素
print(point[0]) # 输出: 10
# 尝试修改元组会报错
# point[0] = 15 # 这行代码会引发 TypeError
何时使用元组? 当你希望数据是只读的、不被意外修改时,例如坐标点、配置信息等。
字典 (Dictionary)
字典是一个无序的、键值对 (key-value) 的集合。每个元素都由一个唯一的 键 (key) 和对应的 值 (value) 组成。用花括号 {} 定义。
# 创建一个字典
student = {
"name": "李四",
"age": 22,
"city": "北京"
}
print(student) # 输出: {'name': '李四', 'age': 22, 'city': '北京'}
# 访问值 (通过键)
print(student["name"]) # 输出: 李四
print(student["age"]) # 输出: 22
# 添加或修改键值对
student["email"] = "lisi@example.com" # 添加新键值对
student["age"] = 23 # 修改已有的值
print(student) # 输出: {'name': '李四', 'age': 23, 'city': '北京', 'email': 'lisi@example.com'}
# 删除键值对
del student["city"]
print(student) # 输出: {'name': '李四', 'age': 23, 'email': 'lisi@example.com'}
{'name': '李四', 'age': 22, 'city': '北京'}
李四
22
{'name': '李四', 'age': 23, 'city': '北京', 'email': 'lisi@example.com'}
{'name': '李四', 'age': 23, 'email': 'lisi@example.com'}
流程控制
流程控制让你的代码可以根据不同的条件执行不同的路径,或者重复执行某些任务。
条件判断 (if, elif, else)
age = 18
if age < 18:
print("你是未成年人。")
elif age == 18:
print("你刚满 18 岁。")
else:
print("你是成年人。")
# 注意:
# 1. 条件后面要加冒号 :
# 2. 下一级的代码块需要缩进(通常是 4 个空格)
# 3. `elif` 是 "else if" 的缩写,可以有多个。
# 4. `else` 是可选的。
循环 (for 和 while)
for 循环
for 循环用于遍历一个序列(如列表、元组、字符串或范围)。
# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(f"我喜欢吃 {fruit}")
# 使用 range() 函数进行固定次数的循环
# range(5) 会生成从 0 到 4 的数字序列
for i in range(5):
print(f"这是第 {i+1} 次循环")
我喜欢吃 苹果
我喜欢吃 香蕉
我喜欢吃 橙子
这是第 1 次循环
这是第 2 次循环
这是第 3 次循环
这是第 4 次循环
这是第 5 次循环
while 循环
while 循环在给定条件为 True 时会一直执行。
count = 0
while count < 5:
print(f"当前的数字是: {count}")
count = count + 1 # 必须更新循环变量,否则会造成无限循环!
print("循环结束!")
当前的数字是: 0
当前的数字是: 1
当前的数字是: 2
当前的数字是: 3
当前的数字是: 4
循环结束!
函数
函数是一段可重复使用的代码块,用于执行特定的任务。使用函数可以使你的代码更有条理、更易于维护。
定义和调用函数
# 定义一个简单的函数
def greet():
print("你好!欢迎使用本程序。")
# 调用函数
greet()
greet()
参数和返回值
函数可以接受输入(参数)并产生输出(返回值)。
# 带参数的函数
def greet_user(name):
"""这是一个文档字符串,用于解释函数的功能。"""
print(f"你好,{name}!")
greet_user("小王") # 输出: 你好,小王!
greet_user("小李") # 输出: 你好,小李!
# 带参数和返回值的函数
def add(a, b):
"""这个函数计算两个数的和并返回结果。"""
result = a + b
return result
sum_result = add(5, 3)
print(f"5 + 3 = {sum_result}") # 输出: 5 + 3 = 8
模块和库:扩展你的 Python 能力
Python 的强大之处在于其庞大的标准库和第三方库生态系统。
- 模块 (Module): 一个
.py 文件就是一个模块。你可以使用 import 语句来使用其他模块中定义的函数或变量。
- 库 (Library): 库是相关模块的集合。
示例:使用 random 模块生成随机数
random 是 Python 的一个标准库模块,无需额外安装。
import random # 导入 random 模块
# 生成一个 1 到 10 之间的随机整数
random_number = random.randint(1, 10)
print(f"生成的随机数是: {random_number}")
# 从列表中随机选择一个元素
fruits = ["苹果", "香蕉", "橙子", "西瓜"]
random_fruit = random.choice(fruits)
print(f"今天的水果是: {random_fruit}")
安装第三方库:
如果想使用非标准库(例如用于数据分析的 pandas,或网络请求的 requests),你需要使用 pip(Python 的包管理器)来安装。
打开终端并输入:
pip install requests
pip install pandas
面向对象编程(OOP)
Python 支持面向对象编程(OOP, Object-Oriented Programming),这是一种模拟现实世界思考问题的方法。通过类和对象,我们可以组织更复杂的代码,构建出具有良好结构和可扩展性的程序。
为什么要用面向对象?
- 让代码更贴近现实世界,更容易理解和维护
- 数据和功能绑定在一起,便于复用
- 可以写出更大的项目,比如游戏、网站、软件等
一、类(Class)和对象(Object)
- 类是一个模板,用来描述一类事物的共同属性和行为。
- 对象是根据类创建的具体实例。类好比蓝图,对象好比房子。
举例:用类描述学生,每个学生就是一个对象。
class Student:
pass # 空语句,暂时不定义内容
s1 = Student() # 创建一个学生对象
s2 = Student() # 再创建一个学生对象
二、属性和方法
属性和方法是类的“成员”。
- 属性(变量):对象的状态或特征
- 方法(函数):对象的行为或动作
2.1 初始化方法 __init__
- 每次创建对象时,都会自动调用
__init__
- 用于给新对象赋初值
class Student:
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
s = Student("小明", 18)
print(s.name) # 输出: 小明
print(s.age) # 输出: 18
注意:self 总是指向当前对象本身。
2.2 实例方法
- 普通方法都必须有
self 参数,表示操作的是哪个对象
class Student:
def __init__(self, name):
self.name = name
def say_hello(self):
print(f"大家好,我是{self.name}")
s = Student("小明")
s.say_hello() # 输出: 大家好,我是小明
2.3 类属性和实例属性
- 实例属性:每个对象自己的数据,用
self.xxx 定义
- 类属性:所有对象共享的数据,直接在类内定义
class Dog:
species = "犬科" # 类属性
def __init__(self, name):
self.name = name # 实例属性
dog1 = Dog("旺财")
dog2 = Dog("小黑")
print(dog1.species) # 输出: 犬科
print(dog2.species) # 输出: 犬科
三、继承与多态
3.1 继承
- 继承允许一个类(子类)获得另一个类(父类)的所有成员。
- 方便代码复用,比如所有动物都会吃东西。
class Animal:
def eat(self):
print("吃东西")
class Dog(Animal):
def bark(self):
print("汪汪!")
d = Dog()
d.eat() # 输出: 吃东西
d.bark() # 输出: 汪汪!
3.2 方法重写(Override)
class Animal:
def speak(self):
print("动物叫")
class Cat(Animal):
def speak(self):
print("喵喵!")
c = Cat()
c.speak() # 输出: 喵喵!
3.3 多态
- 多态:同一个方法名,不同子类有不同实现,调用时自动选择对应的方法。
class Animal:
def speak(self):
print("动物叫")
class Dog(Animal):
def speak(self):
self.bark()
def bark(self):
print("汪汪!")
class Cat(Animal):
def speak(self):
print("喵喵!")
animals = [Dog(), Cat()]
for animal in animals:
animal.speak()
# 输出:
# 汪汪!
# 喵喵!
四、封装
- 封装就是隐藏对象的内部细节,只暴露必要的接口。
- Python 通过下划线约定变量/方法的访问权限。
| name |
公有,外部可访问 |
| _name |
受保护,不建议外部访问 |
| __name |
私有,类外无法直接访问 |
class Person:
def __init__(self, name):
self.name = name # 公有属性
self._age = 18 # 受保护属性
self.__salary = 5000 # 私有属性
def get_salary(self):
return self.__salary
p = Person("小李")
print(p.name) # 正常访问
print(p._age) # 可以访问,但不建议
# print(p.__salary) # 会报错
print(p.get_salary()) # 推荐通过方法访问私有属性
五、特殊方法和魔法方法
Python 有很多以 双下划线开头和结尾的“魔法方法”,让对象参与各种内置操作。
__init__:初始化对象
__str__:定义 print(对象) 时的输出
__len__:定义 len(对象) 的行为
class Book:
def __init__(self, title):
self.title = title
def __str__(self):
return f"《{self.title}》"
b = Book("Python入门")
print(b) # 输出: 《Python入门》
六、实战:自定义一个简单的学生管理系统(面向对象版)
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
def show(self):
print(f"{self.name} 的成绩是 {self.score}")
# 管理多个学生
students = [
Student("小明", 90),
Student("小红", 95),
Student("小刚", 88)
]
# 遍历所有学生
for stu in students:
stu.show()
小明 的成绩是 90
小红 的成绩是 95
小刚 的成绩是 88
七、面向对象思维举例
- 对象是什么? 现实世界的事物,比如“小明”、一辆汽车、一本书
- 类是什么? 模型或模板,比如“学生类”、“汽车类”
- 属性是什么? 事物的特征,比如“姓名”、“颜色”
- 方法是什么? 事物的行为,比如“学习”、“启动”
清华大学计算机系相关资料
课程回放:
讲义:
讲义
下一步学习建议
恭喜你完成了 Python 的基础入门!你现在已经掌握了编写简单 Python 程序所需的核心知识。
接下来,你可以根据你的兴趣选择深入学习的方向:
- 网站开发: 学习 Django 或 Flask 框架。
- 数据科学/机器学习: 学习 NumPy, Pandas, Matplotlib, Scikit-learn 等库。
- 自动化脚本: 深入学习文件操作、网络请求等。
- 游戏开发: 探索 Pygame 库。
最重要的一点是:多写代码,多练习! 尝试解决一些小程序问题,比如:
- 写一个简单的计算器。
- 写一个猜数字游戏。
- 写一个程序来整理你电脑上的文件。
如果想系统学习Python,可阅读《Python编程从入门到实践》.