Python 简介和特性

Python 是一种高级编程语言,以其简洁、易读的语法而闻名。它支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。Python 的设计哲学强调代码的可读性和简洁性,使得它成为初学者和专业开发者的理想选择。

环境搭建

安装 Python

  1. 下载 Python: 访问 Python 官方网站,下载适合你操作系统的 Python 安装包。
  2. 安装 Python: 运行下载的安装包,并按照提示完成安装。确保勾选“Add Python to PATH”选项,以便在命令行中直接使用 Python。

IDE 选择

选择一个适合你的集成开发环境(IDE),常用的有:

  • PyCharm: 功能强大,适合大型项目。
  • VS Code: 轻量级,插件丰富,适合多种编程语言。
  • Jupyter Notebook: 适合数据科学和交互式编程。

第一个 Python 程序

创建一个简单的 Python 程序,输出“Hello, World!”。

print("Hello, World!")

变量和数据类型

Python 支持多种数据类型,包括整数、浮点数、字符串、布尔值等。

# 整数
a = 10

# 浮点数
b = 3.14

# 字符串
c = "Python"

# 布尔值
d = True

基本运算符

Python 支持常见的算术运算符、比较运算符和逻辑运算符。

# 算术运算符
sum = 10 + 5
difference = 10 - 5
product = 10 * 5
quotient = 10 / 5

# 比较运算符
is_equal = (10 == 5)
is_greater = (10 > 5)

# 逻辑运算符
result = (10 > 5) and (5 < 10)

条件语句

使用 if、elif 和 else 进行条件判断。

x = 10

if x > 0:
    print("x 是正数")
elif x == 0:
    print("x 是零")
else:
    print("x 是负数")

循环

for 循环

for i in range(5):
    print(i)

while 循环

i = 0
while i < 5:
    print(i)
    i += 1

异常处理

使用 try 和 except 处理可能出现的异常。

try:
    result = 10 / 0
except ZeroDivisionError:
    print("除数不能为零")

列表和元组

列表

fruits = ["apple", "banana", "cherry"]
fruits.append("orange")
print(fruits)

元组

coordinates = (10, 20)
print(coordinates[0])

字典和集合

字典

person = {"name": "Alice", "age": 30}
print(person["name"])

集合

unique_numbers = {1, 2, 3, 4, 4}
print(unique_numbers)

字符串操作

text = "Python Programming"
print(text.upper())
print(text.lower())
print(text.split())

函数定义和调用

def greet(name):
    return f"Hello, {name}!"

print(greet("Alice"))

参数和返回值

def add(a, b):
    return a + b

result = add(5, 3)
print(result)

模块导入和使用

import math

print(math.sqrt(16))

包管理 (pip)

pip install requests

类和对象

class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name} says Woof!")

my_dog = Dog("Buddy")
my_dog.bark()

继承和多态

class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

animals = [Dog(), Cat()]
for animal in animals:
    print(animal.speak())

封装和抽象

class BankAccount:
    def __init__(self, balance):
        self.__balance = balance

    def deposit(self, amount):
        self.__balance += amount

    def withdraw(self, amount):
        if amount <= self.__balance:
            self.__balance -= amount
        else:
            print("Insufficient funds")

    def get_balance(self):
        return self.__balance

account = BankAccount(1000)
account.deposit(500)
account.withdraw(200)
print(account.get_balance())

读写文本文件

# 写文件
with open("example.txt", "w") as file:
    file.write("Hello, World!")

# 读文件
with open("example.txt", "r") as file:
    content = file.read()
    print(content)

处理 CSV, JSON 数据

CSV

import csv

with open('data.csv', mode='w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['Name', 'Age'])
    writer.writerow(['Alice', 30])
    writer.writerow(['Bob', 25])

JSON

import json

data = {'name': 'Alice', 'age': 30}
with open('data.json', 'w') as file:
    json.dump(data, file)

with open('data.json', 'r') as file:
    loaded_data = json.load(file)
    print(loaded_data)

文件系统操作

import os

# 创建目录
os.mkdir('new_directory')

# 列出目录内容
print(os.listdir('.'))

# 删除文件
os.remove('example.txt')

生成器和迭代器

生成器

def simple_generator():
    yield 1
    yield 2
    yield 3

for value in simple_generator():
    print(value)

迭代器

class SimpleIterator:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        if self.a <= 3:
            x = self.a
            self.a += 1
            return x
        else:
            raise StopIteration

my_iter = iter(SimpleIterator())
for i in my_iter:
    print(i)

装饰器

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

上下文管理器

class FileManager:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode
        self.file = None

    def __enter__(self):
        self.file = open(self.filename, self.mode)
        return self.file

    def __exit__(self, exc_type, exc_value, traceback):
        self.file.close()

with FileManager('example.txt', 'w') as file:
    file.write('Hello, World!')

多线程和并发

import threading

def print_numbers():
    for i in range(5):
        print(i)

def print_letters():
    for letter in 'abcde':
        print(letter)

thread1 = threading.Thread(target=print_numbers)
thread2 = threading.Thread(target=print_letters)

thread1.start()
thread2.start()

thread1.join()
thread2.join()

datetime 和 time 模块

import datetime
import time

now = datetime.datetime.now()
print(now)

time.sleep(2)
print("2 seconds have passed")

os 和 sys 模块

import os
import sys

# 获取当前工作目录
print(os.getcwd())

# 获取命令行参数
print(sys.argv)

re 模块 (正则表达式)

import re

text = "The quick brown fox jumps over the lazy dog"
result = re.search(r"fox", text)
print(result.group())

collections 模块

from collections import Counter

words = ['apple', 'banana', 'apple', 'cherry', 'banana', 'apple']
word_counts = Counter(words)
print(word_counts)

NumPy 和 Pandas (数据分析)

NumPy

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr)

Pandas

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)

Matplotlib (数据可视化)

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Simple Line Plot')
plt.show()

Requests (HTTP 请求)

import requests

response = requests.get('https://api.github.com')
print(response.json())

Flask/Django (Web 开发)

Flask 框架入门

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"

if __name__ == '__main__':
    app.run(debug=True)

Django 框架入门

# 创建 Django 项目
django-admin startproject myproject

# 创建应用
python manage.py startapp myapp

RESTful API 设计

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/api/data', methods=['GET'])
def get_data():
    data = {'message': 'Hello, API!'}
    return jsonify(data)

@app.route('/api/data', methods=['POST'])
def post_data():
    new_data = request.json
    return jsonify(new_data), 201

if __name__ == '__main__':
    app.run(debug=True)

Jupyter Notebook 使用

pip install jupyter
jupyter notebook

数据预处理和分析

import pandas as pd

data = pd.read_csv('data.csv')
data.head()

Scikit-learn 机器学习库

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)

model = RandomForestClassifier()
model.fit(X_train, y_train)

accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy}")

TensorFlow/PyTorch 深度学习入门

TensorFlow

import tensorflow as tf

model = tf.keras.Sequential([
    tf.keras.layers.Dense(10, activation='relu', input_shape=(4,)),
    tf.keras.layers.Dense(3, activation='softmax')
])

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

model.fit(iris.data, iris.target, epochs=10)

PyTorch

import torch
import torch.nn as nn
import torch.optim as optim

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(4, 10)
        self.fc2 = nn.Linear(10, 3)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(net.parameters(), lr=0.001)

for epoch in range(10):
    optimizer.zero_grad()
    outputs = net(torch.tensor(iris.data, dtype=torch.float32))
    loss = criterion(outputs, torch.tensor(iris.target))
    loss.backward()
    optimizer.step()

命令行应用程序

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

Web 应用开发

Flask 示例

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

Django 示例

from django.http import HttpResponse
from django.views.generic import TemplateView

class HomeView(TemplateView):
    template_name = 'index.html'

def home(request):
    return HttpResponse("Hello, Django!")

数据分析项目

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('data.csv')
data.plot(kind='bar', x='name', y='age')
plt.show()

机器学习模型部署

from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)
model = joblib.load('model.pkl')

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json
    prediction = model.predict([data['features']])
    return jsonify({'prediction': prediction.tolist()})

if __name__ == '__main__':
    app.run(debug=True)

性能优化

import time

def slow_function():
    time.sleep(2)

start_time = time.time()
slow_function()
end_time = time.time()

print(f"Execution time: {end_time - start_time} seconds")

单元测试和 TDD

import unittest

def add(a, b):
    return a + b

class TestMathOperations(unittest.TestCase):
    def