Python入门教程 - 从零开始学习Python编程语言
Python入门教程 - 从零开始学习Python编程语言
目录
1. Python简介
Python是一种高级、解释型、面向对象的编程语言,由Guido van Rossum于1991年首次发布。Python以其简洁的语法、强大的功能和广泛的应用领域而闻名。
核心特点:
✅ 简洁易读:语法清晰,代码可读性强
✅ 跨平台:支持Windows、macOS、Linux等操作系统
✅ 解释型语言:无需编译,直接运行
✅ 动态类型:变量类型在运行时确定
✅ 丰富的库:拥有庞大的标准库和第三方库
✅ 开源免费:完全开源,可自由使用和修改
✅ 社区活跃:拥有庞大的开发者社区
Web开发:Django、Flask等框架
数据科学:NumPy、Pandas、Matplotlib
人工智能:TensorFlow、PyTorch
自动化运维:系统管理、自动化脚本
网络爬虫:Scrapy、BeautifulSoup
游戏开发:Pygame
桌面应用:Tkinter、PyQt
Python 2.x:已停止维护(2020年)
Python 3.x:当前主流版本(推荐使用Python 3.8+)
- 学习曲线平缓:适合编程初学者
- 开发效率高:代码简洁,开发快速
- 应用广泛:可用于多个领域
- 就业前景好:市场需求大
- 社区支持:丰富的学习资源
2. 环境搭建
Windows系统
下载Python
- 访问官网:https://www.python.org/downloads/
- 下载最新版本的Python 3.x
- 选择Windows installer (64-bit)
安装Python
- 运行安装程序
- 重要:勾选"Add Python to PATH"
- 选择"Install Now"或自定义安装路径
验证安装
python --version # 或 python3 --version
macOS系统
使用Homebrew安装(推荐)
brew install python3或从官网下载安装
- 访问Python官网下载macOS安装包
- 运行安装程序
验证安装
python3 --version
Linux系统
Ubuntu/Debian
sudo apt update sudo apt install python3 python3-pipCentOS/RHEL
sudo yum install python3 python3-pip验证安装
python3 --version pip3 --version
pip是Python的包管理工具,通常随Python一起安装。
验证pip:
pip --version
# 或
pip3 --version升级pip:
pip install --upgrade pip推荐IDE
PyCharm(推荐)
- 专业Python IDE
- 社区版免费
- 下载:https://www.jetbrains.com/pycharm/
VS Code
- 轻量级编辑器
- 需要安装Python扩展
- 下载:https://code.visualstudio.com/
Jupyter Notebook
- 适合数据科学
- 交互式编程环境
- 安装:
pip install jupyter
IDLE
- Python自带的IDE
- 适合初学者
虚拟环境可以隔离项目依赖,避免包冲突。
# 创建虚拟环境
python -m venv myenv
# Windows激活
myenv\Scripts\activate
# macOS/Linux激活
source myenv/bin/activate
# 退出虚拟环境
deactivate3. 第一个Python程序
创建文件hello.py:
print("Hello, World!")方式1:命令行运行
python hello.py
# 或
python3 hello.py方式2:在IDE中运行
- PyCharm:右键文件 → Run
- VS Code:按F5或点击运行按钮
在命令行输入python或python3进入交互式环境:
>>> print("Hello, World!")
Hello, World!
>>> 1 + 1
2
>>> exit() # 退出# 这是单行注释
"""
这是多行注释
可以写多行
"""
'''
这也是多行注释
'''4. Python基础语法
Python是动态类型语言,变量无需声明类型。
# 变量赋值
name = "张三"
age = 25
height = 175.5
is_student = True
# 变量命名规则
# 1. 只能包含字母、数字和下划线
# 2. 不能以数字开头
# 3. 区分大小写
# 4. 不能使用Python关键字
# 合法变量名
user_name = "Alice"
userName = "Bob"
_user = "Charlie"
user123 = "David"
# 不合法变量名
# 123user = "Error" # 不能以数字开头
# user-name = "Error" # 不能包含连字符数字类型
# 整数
age = 25
count = -10
# 浮点数
price = 99.99
temperature = -5.5
# 复数
complex_num = 3 + 4j
# 类型转换
int_num = int(3.14) # 3
float_num = float(3) # 3.0字符串
# 字符串定义
name1 = "张三"
name2 = '李四'
name3 = """王五
多行字符串"""
# 字符串操作
first_name = "张"
last_name = "三"
full_name = first_name + last_name # "张三"
greeting = "Hello" * 3 # "HelloHelloHello"
# 字符串格式化
name = "张三"
age = 25
# 方式1:f-string(推荐,Python 3.6+)
message = f"我叫{name},今年{age}岁"
# 方式2:format方法
message = "我叫{},今年{}岁".format(name, age)
message = "我叫{0},今年{1}岁".format(name, age)
message = "我叫{name},今年{age}岁".format(name=name, age=age)
# 方式3:%格式化(旧方式)
message = "我叫%s,今年%d岁" % (name, age)布尔类型
is_student = True
is_working = False
# 布尔运算
result = True and False # False
result = True or False # True
result = not True # False空值
value = None # None表示空值算术运算符
a = 10
b = 3
print(a + b) # 13 加法
print(a - b) # 7 减法
print(a * b) # 30 乘法
print(a / b) # 3.333... 除法
print(a // b) # 3 整除
print(a % b) # 1 取余
print(a ** b) # 1000 幂运算比较运算符
a = 10
b = 20
print(a == b) # False 等于
print(a != b) # True 不等于
print(a < b) # True 小于
print(a > b) # False 大于
print(a <= b) # True 小于等于
print(a >= b) # False 大于等于逻辑运算符
x = True
y = False
print(x and y) # False 逻辑与
print(x or y) # True 逻辑或
print(not x) # False 逻辑非赋值运算符
a = 10
a += 5 # a = a + 5, 结果:15
a -= 3 # a = a - 3, 结果:12
a *= 2 # a = a * 2, 结果:24
a /= 4 # a = a / 4, 结果:6.0
a //= 2 # a = a // 2, 结果:3
a %= 2 # a = a % 2, 结果:1
a **= 3 # a = a ** 3, 结果:1成员运算符
list1 = [1, 2, 3]
print(1 in list1) # True
print(4 not in list1) # True身份运算符
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a is b) # False (不同对象)
print(a is c) # True (同一对象)
print(a == b) # True (值相等)# 输出
print("Hello, World!")
print("姓名:", "张三", "年龄:", 25)
# 格式化输出
name = "张三"
age = 25
print(f"姓名: {name}, 年龄: {age}")
# 输入
name = input("请输入您的姓名: ")
age = int(input("请输入您的年龄: ")) # 转换为整数5. 数据类型
列表是有序、可变的集合。
# 创建列表
fruits = ["苹果", "香蕉", "橙子"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]
# 访问元素
print(fruits[0]) # "苹果" 第一个元素
print(fruits[-1]) # "橙子" 最后一个元素
print(fruits[0:2]) # ["苹果", "香蕉"] 切片
# 修改元素
fruits[0] = "葡萄"
# 添加元素
fruits.append("草莓") # 末尾添加
fruits.insert(1, "梨") # 指定位置插入
fruits.extend(["西瓜", "芒果"]) # 扩展列表
# 删除元素
fruits.remove("香蕉") # 删除指定值
del fruits[0] # 删除指定索引
fruits.pop() # 删除并返回最后一个元素
fruits.pop(1) # 删除并返回指定索引的元素
# 列表操作
print(len(fruits)) # 长度
print("苹果" in fruits) # 检查是否存在
fruits.sort() # 排序
fruits.reverse() # 反转元组是有序、不可变的集合。
# 创建元组
point = (10, 20)
colors = ("红色", "绿色", "蓝色")
single = (1,) # 单个元素的元组需要逗号
# 访问元素
print(point[0]) # 10
print(point[1]) # 20
# 元组不可变
# point[0] = 5 # 错误!不能修改
# 元组解包
x, y = point
print(x, y) # 10 20字典是键值对的集合,无序、可变。
# 创建字典
student = {
"name": "张三",
"age": 25,
"grade": "A"
}
# 访问元素
print(student["name"]) # "张三"
print(student.get("age")) # 25
print(student.get("score", 0)) # 0 (默认值)
# 修改元素
student["age"] = 26
student["score"] = 95 # 添加新键值对
# 删除元素
del student["grade"]
score = student.pop("score") # 删除并返回值
# 字典操作
print(len(student)) # 长度
print("name" in student) # 检查键是否存在
print(student.keys()) # 所有键
print(student.values()) # 所有值
print(student.items()) # 所有键值对
# 遍历字典
for key in student:
print(key, student[key])
for key, value in student.items():
print(key, value)集合是无序、不重复元素的集合。
# 创建集合
fruits = {"苹果", "香蕉", "橙子"}
numbers = set([1, 2, 3, 4, 5])
# 添加元素
fruits.add("草莓")
fruits.update(["西瓜", "芒果"])
# 删除元素
fruits.remove("香蕉") # 不存在会报错
fruits.discard("梨") # 不存在不报错
fruits.pop() # 删除任意元素
# 集合操作
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1 | set2) # 并集 {1, 2, 3, 4, 5, 6}
print(set1 & set2) # 交集 {3, 4}
print(set1 - set2) # 差集 {1, 2}
print(set1 ^ set2) # 对称差集 {1, 2, 5, 6}# 数字转换
int("123") # 123
float("3.14") # 3.14
str(123) # "123"
# 列表转换
list("hello") # ['h', 'e', 'l', 'l', 'o']
tuple([1, 2, 3]) # (1, 2, 3)
set([1, 2, 2, 3]) # {1, 2, 3}
# 字典转换
dict([("a", 1), ("b", 2)]) # {'a': 1, 'b': 2}6. 控制流程
if-elif-else
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")三元运算符
age = 20
status = "成年人" if age >= 18 else "未成年人"
print(status)for循环
# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)
# 遍历字符串
for char in "Python":
print(char)
# 使用range
for i in range(5): # 0到4
print(i)
for i in range(1, 6): # 1到5
print(i)
for i in range(0, 10, 2): # 0到9,步长为2
print(i)
# 带索引遍历
for index, fruit in enumerate(fruits):
print(index, fruit)while循环
count = 0
while count < 5:
print(count)
count += 1
# 无限循环
while True:
user_input = input("输入'quit'退出: ")
if user_input == "quit":
breakbreak和continue
# break:跳出循环
for i in range(10):
if i == 5:
break
print(i) # 输出: 0, 1, 2, 3, 4
# continue:跳过本次循环
for i in range(10):
if i % 2 == 0:
continue
print(i) # 输出: 1, 3, 5, 7, 9else子句
# for-else:循环正常结束执行else
for i in range(5):
print(i)
else:
print("循环结束")
# while-else
count = 0
while count < 5:
print(count)
count += 1
else:
print("循环结束")# 基本语法
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 带条件
evens = [x for x in range(10) if x % 2 == 0]
# [0, 2, 4, 6, 8]
# 嵌套循环
matrix = [[i*j for j in range(3)] for i in range(3)]
# [[0, 0, 0], [0, 1, 2], [0, 2, 4]]# 基本语法
squares_dict = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# 带条件
even_squares = {x: x**2 for x in range(10) if x % 2 == 0}squares_set = {x**2 for x in range(5)}
# {0, 1, 4, 9, 16}7. 函数
def greet():
"""简单的问候函数"""
print("Hello, World!")
# 调用函数
greet()位置参数
def add(a, b):
return a + b
result = add(3, 5) # 8默认参数
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet("张三") # Hello, 张三!
greet("李四", "Hi") # Hi, 李四!关键字参数
def introduce(name, age, city):
print(f"我是{name},{age}岁,来自{city}")
introduce(name="张三", age=25, city="北京")
introduce(city="上海", name="李四", age=30)可变参数
# *args:接收任意数量的位置参数
def sum_numbers(*args):
total = 0
for num in args:
total += num
return total
print(sum_numbers(1, 2, 3)) # 6
print(sum_numbers(1, 2, 3, 4, 5)) # 15
# **kwargs:接收任意数量的关键字参数
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="张三", age=25, city="北京")def add(a, b):
return a + b
result = add(3, 5)
print(result) # 8
# 返回多个值(实际返回元组)
def get_name_age():
return "张三", 25
name, age = get_name_age()# Lambda表达式
square = lambda x: x ** 2
print(square(5)) # 25
# 在列表中使用
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers))
# [1, 4, 9, 16, 25]
# 过滤
evens = list(filter(lambda x: x % 2 == 0, numbers))
# [2, 4]# 全局变量
x = 10
def func():
# 局部变量
y = 20
print(x) # 可以访问全局变量
print(y)
# 修改全局变量
def modify_global():
global x
x = 30
modify_global()
print(x) # 30# 计算阶乘
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # 120
# 斐波那契数列
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(10)) # 55# 简单装饰器
def my_decorator(func):
def wrapper():
print("函数执行前")
func()
print("函数执行后")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
# 输出:
# 函数执行前
# Hello!
# 函数执行后8. 面向对象编程
# 定义类
class Dog:
# 类属性
species = "Canis familiaris"
# 构造方法
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
# 实例方法
def bark(self):
return f"{self.name}在汪汪叫"
def get_info(self):
return f"名字: {self.name}, 年龄: {self.age}"
# 创建对象
dog1 = Dog("旺财", 3)
dog2 = Dog("小白", 5)
print(dog1.bark()) # 旺财在汪汪叫
print(dog2.get_info()) # 名字: 小白, 年龄: 5# 父类
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return f"{self.name}发出声音"
# 子类
class Dog(Animal):
def speak(self):
return f"{self.name}汪汪叫"
class Cat(Animal):
def speak(self):
return f"{self.name}喵喵叫"
# 使用
dog = Dog("旺财")
cat = Cat("小花")
print(dog.speak()) # 旺财汪汪叫
print(cat.speak()) # 小花喵喵叫class BankAccount:
def __init__(self, balance=0):
self.__balance = balance # 私有属性
def deposit(self, amount):
if amount > 0:
self.__balance += amount
return True
return False
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
return True
return False
def get_balance(self):
return self.__balance
account = BankAccount(1000)
account.deposit(500)
print(account.get_balance()) # 1500class Shape:
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14159 * self.radius ** 2
# 多态
shapes = [Rectangle(5, 10), Circle(5)]
for shape in shapes:
print(shape.area())class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
def __repr__(self):
return f"Person('{self.name}', {self.age})"
def __eq__(self, other):
return self.name == other.name and self.age == other.age
person = Person("张三", 25)
print(person) # Person(name=张三, age=25)9. 文件操作
# 读取整个文件
with open("file.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 逐行读取
with open("file.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
# 读取所有行
with open("file.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
print(line.strip())# 写入文件(覆盖)
with open("output.txt", "w", encoding="utf-8") as f:
f.write("Hello, World!\n")
f.write("这是第二行\n")
# 追加写入
with open("output.txt", "a", encoding="utf-8") as f:
f.write("这是追加的内容\n")r:只读(默认)w:写入(覆盖)a:追加x:创建新文件b:二进制模式+:读写模式
import json
# 写入JSON
data = {
"name": "张三",
"age": 25,
"city": "北京"
}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
# 读取JSON
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data)10. 异常处理
try:
result = 10 / 0
except ZeroDivisionError:
print("除数不能为0")
# 多个异常
try:
value = int("abc")
except ValueError:
print("无法转换为整数")
except Exception as e:
print(f"发生错误: {e}")try:
result = 10 / 2
except ZeroDivisionError:
print("除数不能为0")
else:
print(f"结果: {result}")
finally:
print("无论是否异常都会执行")def divide(a, b):
if b == 0:
raise ValueError("除数不能为0")
return a / b
try:
result = divide(10, 0)
except ValueError as e:
print(e)class CustomError(Exception):
def __init__(self, message):
self.message = message
super().__init__(self.message)
def check_age(age):
if age < 0:
raise CustomError("年龄不能为负数")
return age
try:
check_age(-5)
except CustomError as e:
print(e)11. 常用标准库
import os
# 获取当前目录
current_dir = os.getcwd()
print(current_dir)
# 列出目录内容
files = os.listdir(".")
print(files)
# 创建目录
os.makedirs("new_folder", exist_ok=True)
# 删除文件
os.remove("file.txt")
# 路径操作
path = os.path.join("folder", "file.txt")
print(path)11.2 datetime模块
from datetime import datetime, timedelta
# 当前时间
now = datetime.now()
print(now)
# 格式化时间
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted)
# 解析时间
parsed = datetime.strptime("2024-01-15 10:30:00", "%Y-%m-%d %H:%M:%S")
print(parsed)
# 时间计算
tomorrow = now + timedelta(days=1)
print(tomorrow)import random
# 随机整数
num = random.randint(1, 10)
print(num)
# 随机浮点数
float_num = random.random()
print(float_num)
# 随机选择
choices = ["苹果", "香蕉", "橙子"]
choice = random.choice(choices)
print(choice)
# 随机打乱
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers)import re
# 匹配
pattern = r"\d+"
text = "我有3个苹果和5个橙子"
matches = re.findall(pattern, text)
print(matches) # ['3', '5']
# 替换
new_text = re.sub(pattern, "X", text)
print(new_text) # 我有X个苹果和X个橙子
# 搜索
match = re.search(r"\d+", text)
if match:
print(match.group()) # 3from collections import Counter, defaultdict, deque
# Counter:计数
counter = Counter(["a", "b", "a", "c", "b", "a"])
print(counter) # Counter({'a': 3, 'b': 2, 'c': 1})
# defaultdict:默认字典
dd = defaultdict(int)
dd["a"] += 1
print(dd["a"]) # 1
print(dd["b"]) # 0 (默认值)
# deque:双端队列
dq = deque([1, 2, 3])
dq.appendleft(0)
dq.append(4)
print(dq) # deque([0, 1, 2, 3, 4])12. 第三方库
pip install package_name
# 或
pip3 install package_namerequests(HTTP请求)
import requests
# GET请求
response = requests.get("https://api.github.com")
print(response.status_code)
print(response.json())
# POST请求
data = {"key": "value"}
response = requests.post("https://httpbin.org/post", data=data)pandas(数据处理)
import pandas as pd
# 创建DataFrame
df = pd.DataFrame({
"name": ["张三", "李四", "王五"],
"age": [25, 30, 28],
"city": ["北京", "上海", "广州"]
})
print(df)
print(df.describe())numpy(数值计算)
import numpy as np
# 创建数组
arr = np.array([1, 2, 3, 4, 5])
print(arr)
# 数组运算
print(arr * 2)
print(arr + 1)13. 实际项目案例
class Student:
def __init__(self, name, age, student_id):
self.name = name
self.age = age
self.student_id = student_id
def __str__(self):
return f"学号: {self.student_id}, 姓名: {self.name}, 年龄: {self.age}"
class StudentManager:
def __init__(self):
self.students = []
def add_student(self, student):
self.students.append(student)
print(f"添加学生成功: {student.name}")
def find_student(self, student_id):
for student in self.students:
if student.student_id == student_id:
return student
return None
def list_all_students(self):
if not self.students:
print("没有学生记录")
else:
for student in self.students:
print(student)
# 使用
manager = StudentManager()
manager.add_student(Student("张三", 20, "001"))
manager.add_student(Student("李四", 21, "002"))
manager.list_all_students()import os
from collections import Counter
def count_file_types(directory):
"""统计目录中各种文件类型的数量"""
file_types = []
for root, dirs, files in os.walk(directory):
for file in files:
_, ext = os.path.splitext(file)
file_types.append(ext.lower() if ext else "无扩展名")
counter = Counter(file_types)
return counter
# 使用
result = count_file_types(".")
for ext, count in result.most_common():
print(f"{ext}: {count}")13.3 案例3:简单的计算器
def calculator():
"""简单的计算器"""
while True:
try:
expression = input("请输入表达式(输入'quit'退出): ")
if expression.lower() == "quit":
break
result = eval(expression)
print(f"结果: {result}")
except Exception as e:
print(f"错误: {e}")
calculator()14. 总结与进阶
通过本教程,你已经掌握了:
- ✅ Python基础语法和数据类型
- ✅ 控制流程和函数
- ✅ 面向对象编程
- ✅ 文件操作和异常处理
- ✅ 常用标准库的使用
- ✅ 基本的项目开发能力
Web开发
- Django框架
- Flask框架
- FastAPI框架
数据科学
- NumPy:数值计算
- Pandas:数据分析
- Matplotlib:数据可视化
机器学习
- Scikit-learn:机器学习库
- TensorFlow:深度学习
- PyTorch:深度学习
网络爬虫
- Scrapy框架
- BeautifulSoup库
- Selenium自动化
自动化运维
- 系统管理脚本
- 自动化测试
- DevOps工具
代码规范
- 遵循PEP 8编码规范
- 使用有意义的变量名
- 添加注释和文档字符串
错误处理
- 合理使用异常处理
- 不要忽略异常
- 提供有意义的错误信息
代码组织
- 使用模块和包
- 避免代码重复
- 保持函数简洁
性能优化
- 使用列表推导式
- 合理使用生成器
- 避免不必要的循环
- 官方文档:https://docs.python.org/zh-cn/3/
- Python教程:Python官方教程
- 在线练习:LeetCode、HackerRank
- 书籍推荐:
- 《Python编程:从入门到实践》
- 《流畅的Python》
- 《Python Cookbook》
Q1: Python 2和Python 3有什么区别?
A: Python 3是未来,Python 2已停止维护。新项目应使用Python 3。
Q2: Python是解释型还是编译型语言?
A: Python是解释型语言,但会先编译成字节码。
Q3: Python性能如何?
A: Python执行速度较慢,但开发效率高。性能关键部分可用C扩展。
Q4: 如何提高Python性能?
A: 使用NumPy、Cython、PyPy等工具,或优化算法。
Q5: Python适合做什么?
A: Web开发、数据科学、AI、自动化、脚本等。
结语
恭喜你完成了Python入门教程的学习!Python是一门功能强大、易于学习的编程语言。通过本教程,你已经掌握了Python的基础知识。
记住:
- 多实践:理论结合实践,多写代码
- 多思考:理解原理,不要死记硬背
- 多交流:参与社区,分享经验
- 持续学习:关注Python新特性和最佳实践
祝你学习愉快,编程顺利! 🚀
本教程由Java突击队学习社区编写,如有问题欢迎反馈。