60、Python编程中的关键概念与实用方法

Python编程中的关键概念与实用方法

1. 函数相关

函数是Python编程中的重要组成部分。函数可以作为闭包、字典值或对象存在,具有多种特性和用途。
- 定义与调用 :函数可以通过 def 关键字定义,默认参数在定义时绑定,调用时可以使用位置参数、关键字参数等。例如:

def func(a, b=10):
    return a + b

result = func(5)  # 使用默认参数
  • 匿名函数 :使用 lambda 运算符创建匿名函数,适用于简单的功能。如:
add = lambda x, y: x + y
  • 装饰器 :装饰器可以修改函数的行为,同时可以复制函数的属性到装饰器中,实现更灵活的功能扩展。
def decorator(func):
    def wrapper(*args, **kwargs):
        print("Before function call")
        result = func(*args, **kwargs)
        print("After function call")
        return result
    return wrapper

@decorator
def my_func():
    print("Function is called")

my_func()
  • 递归 :递归函数在处理某些问题时非常有效,但要注意递归深度的限制,可以通过 sys.setrecursionlimit() 进行修改。
2. 生成器与迭代器

生成器是Python中实现懒加载的重要工具,能有效节省内存。
- 生成器表达式 :类似于列表推导式,但使用圆括号,返回一个生成器对象。例如:

gen = (i for i in range(10))
  • 生成器函数 :使用 yield 关键字定义,每次调用 next() 时会执行到下一个 yield 语句。
def gen_func():
    for i in range(5):
        yield i

gen = gen_func()
for num in gen:
    print(num)
  • 生成器的特性 :生成器可以用于并发编程、处理I/O操作等,还可以通过 close() 方法关闭,通过 throw() 方法抛出异常。
3. 垃圾回收

Python的垃圾回收机制可以自动管理内存,避免内存泄漏。
- 原理 :垃圾回收主要处理对象的引用计数和循环引用问题。当对象的引用计数为0时,会被回收;对于循环引用,垃圾回收器会定期检测并处理。
- 相关模块 gc 模块提供了对垃圾回收的控制和监控功能,如 gc.get_count() 可以获取垃圾回收的统计信息。

4. 网络编程

网络编程在Python中应用广泛,涉及多个模块和协议。
- HTTP协议 http 包提供了对HTTP协议的支持,包括HTTP请求和响应的处理。例如,可以使用 http.client 模块创建HTTP连接:

import http.client

conn = http.client.HTTPConnection("example.com")
conn.request("GET", "/")
response = conn.getresponse()
print(response.read())
conn.close()
  • Socket编程 socket 模块用于实现底层的网络通信,如创建套接字、连接服务器等。
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("example.com", 80))
s.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
data = s.recv(1024)
print(data)
s.close()
5. 数据处理与解析

在Python中,有多种方法可以处理和解析不同类型的数据。
- XML解析 xml.etree.ElementTree 模块可以用于解析XML数据,通过 Element 对象进行数据提取和操作。

import xml.etree.ElementTree as ET

data = '<root><element>Value</element></root>'
root = ET.fromstring(data)
for element in root.findall('element'):
    print(element.text)
  • JSON解析 json 模块可以方便地处理JSON数据,实现数据的序列化和反序列化。
import json

data = {'name': 'John', 'age': 30}
json_str = json.dumps(data)
parsed_data = json.loads(json_str)
print(parsed_data['name'])
6. 异常处理

异常处理可以增强程序的健壮性,避免程序因错误而崩溃。
- 基本语法 :使用 try-except 语句捕获和处理异常。

try:
    result = 1 / 0
except ZeroDivisionError:
    print("Division by zero!")
  • 自定义异常 :可以通过继承 Exception 类创建自定义异常。
class MyException(Exception):
    pass

try:
    raise MyException("This is a custom exception")
except MyException as e:
    print(e)
7. 模块与包

模块和包是组织Python代码的重要方式。
- 模块导入 :使用 import 语句导入模块,可以使用绝对导入或相对导入。

import math
from math import sqrt

print(math.pi)
print(sqrt(16))
  • 包的结构 :包是包含 __init__.py 文件的目录,可以包含多个模块。
my_package/
    __init__.py
    module1.py
    module2.py
8. 面向对象编程

Python支持面向对象编程,具有类、继承、多态等特性。
- 类的定义 :使用 class 关键字定义类, __init__ 方法用于初始化对象。

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

    def say_hello(self):
        print(f"Hello, {self.name}!")

obj = MyClass("John")
obj.say_hello()
  • 继承 :类可以继承父类的属性和方法,实现代码的复用。
class ChildClass(MyClass):
    def __init__(self, name, age):
        super().__init__(name)
        self.age = age

    def say_age(self):
        print(f"I'm {self.age} years old.")

child = ChildClass("John", 30)
child.say_hello()
child.say_age()
9. 数据结构

Python提供了丰富的数据结构,如列表、字典、集合等。
- 列表操作 :列表可以进行插入、删除、排序等操作。

my_list = [1, 2, 3]
my_list.append(4)
my_list.sort()
  • 字典操作 :字典可以通过键来访问和修改值。
my_dict = {'name': 'John', 'age': 30}
my_dict['name'] = 'Mike'
  • 集合操作 :集合支持交集、并集、差集等操作。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection = set1 & set2
10. 其他实用功能
  • 时间处理 time 模块和 datetime 模块可以用于处理时间和日期。
import time

current_time = time.time()
print(current_time)
  • 文件操作 :可以使用内置的 open() 函数进行文件的读写操作。
with open('test.txt', 'w') as f:
    f.write("Hello, world!")

通过对这些关键概念和实用方法的掌握,可以更高效地进行Python编程,开发出功能强大、健壮的应用程序。

部分操作的流程图示例

graph TD
    A[开始] --> B[定义函数]
    B --> C{是否使用装饰器}
    C -- 是 --> D[应用装饰器]
    C -- 否 --> E[直接调用函数]
    D --> E
    E --> F[获取函数结果]
    F --> G[结束]

部分操作的表格示例

操作类型 示例代码 说明
函数定义 def func(a, b): return a + b 定义一个简单的函数
生成器表达式 gen = (i for i in range(10)) 创建一个生成器对象
装饰器应用 @decorator def my_func(): pass 使用装饰器修改函数行为

Python编程中的关键概念与实用方法

11. 并发编程

并发编程可以提高程序的执行效率,Python提供了多种并发编程的方式。
- 多线程 threading 模块可以创建和管理线程。例如:

import threading

def worker():
    print("Thread is running")

thread = threading.Thread(target=worker)
thread.start()
  • 多进程 multiprocessing 模块可以实现多进程编程,避免全局解释器锁(GIL)的限制。
import multiprocessing

def worker():
    print("Process is running")

if __name__ == '__main__':
    process = multiprocessing.Process(target=worker)
    process.start()
  • 异步编程 :使用 asyncio 模块进行异步编程,适用于I/O密集型任务。
import asyncio

async def async_task():
    print("Async task is running")

async def main():
    await async_task()

asyncio.run(main())
12. 调试与测试

调试和测试是保证代码质量的重要手段。
- 调试 pdb 模块可以用于调试Python代码,通过设置断点、单步执行等方式找出代码中的问题。

import pdb

def func():
    a = 1
    pdb.set_trace()
    b = 2
    return a + b

result = func()
  • 单元测试 unittest 模块可以编写和运行单元测试,确保代码的各个部分正常工作。
import unittest

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

class TestAdd(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(1, 2), 3)

if __name__ == '__main__':
    unittest.main()
13. 数据库操作

Python可以与多种数据库进行交互,实现数据的存储和查询。
- SQLite sqlite3 模块是Python内置的轻量级数据库,适合小型项目。

import sqlite3

conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)')
cursor.execute('INSERT INTO users (name) VALUES (?)', ('John',))
conn.commit()
conn.close()
  • MySQL :使用 mysql-connector-python 模块可以连接和操作MySQL数据库。
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword",
    database="yourdatabase"
)

mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
    print(x)
14. 图形用户界面(GUI)编程

Python可以使用多种库进行GUI编程,如 Tkinter PyQt 等。
- Tkinter :是Python内置的GUI库,简单易用。

import tkinter as tk

root = tk.Tk()
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()
root.mainloop()
  • PyQt :功能强大,提供了丰富的GUI组件。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel

app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Hello, PyQt!", window)
window.show()
sys.exit(app.exec_())
15. 网络爬虫

网络爬虫可以从网页上抓取数据, requests BeautifulSoup 是常用的库。

import requests
from bs4 import BeautifulSoup

url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
links = soup.find_all('a')
for link in links:
    print(link.get('href'))
16. 机器学习与数据科学

Python在机器学习和数据科学领域有广泛的应用,常用的库有 NumPy Pandas Scikit-learn 等。
- NumPy :用于处理多维数组和矩阵运算。

import numpy as np

arr = np.array([1, 2, 3])
print(arr)
  • Pandas :用于数据处理和分析。
import pandas as pd

data = {'Name': ['John', 'Mike'], 'Age': [30, 25]}
df = pd.DataFrame(data)
print(df)
  • Scikit-learn :提供了各种机器学习算法和工具。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
accuracy = knn.score(X_test, y_test)
print(accuracy)

部分操作的流程图示例

graph TD
    A[开始] --> B[创建线程或进程]
    B --> C{是否启动}
    C -- 是 --> D[执行任务]
    C -- 否 --> E[等待启动]
    D --> F[任务完成]
    F --> G[结束]

部分操作的表格示例

操作类型 示例代码 说明
多线程 thread = threading.Thread(target=worker); thread.start() 创建并启动一个线程
单元测试 class TestAdd(unittest.TestCase): def test_add(): ...; unittest.main() 编写并运行单元测试
数据库操作 conn = sqlite3.connect('example.db'); cursor.execute('...') 连接并操作SQLite数据库

通过不断学习和实践这些Python编程的关键概念和实用方法,我们能够更好地应对各种编程挑战,开发出更加优秀的Python应用程序。无论是小型脚本还是大型项目,这些知识都将发挥重要的作用。

源码来自:https://pan.quark.cn/s/fdd21a41d74f 正方教务管理系统成绩推送 简介 使用本项目前: 早晨睡醒看一遍教务系统、上厕所看一遍教务系统、刷牙看一遍教务系统、洗脸看一遍教务系统、吃早餐看一遍教务系统、吃午饭看一遍教务系统、睡午觉前看一遍教务系统、午觉醒来看一遍教务系统、出门前看一遍教务系统、吃晚饭看一遍教务系统、洗澡看一遍教务系统、睡觉之前看一遍教务系统 使用本项目后: 成绩更新后自动发通知到微信 以节省您宝贵的时间 测试环境 正方教务管理系统 版本 V8.0、V9.0 如果你的教务系统页面下图所示的页面完全一致或几乎一致,则代表你可以使用本项目。 目前支持的功能 主要功能 每隔 30 分钟自动检测一次成绩是否有更新,若有更新,将通过微信推送及时通知用户。 相较于教务系统增加了哪些功能? 显示成绩提交时间,即成绩何时被录入教务系统。 显示成绩提交人姓名,即成绩由谁录入进教务系统。 成绩信息按时间降序排序,确保最新的成绩始终在最上方,提升用户查阅效率。 计算 计算百分制 对于没有分数仅有级别的成绩,例如”及格、良好、优秀“,可以强制显示数字分数。 显示未公布成绩的课程,即已选课但尚未出成绩的课程。 使用方法 Fork 本仓库 → 开启 工作流读写权限 → → → → → 添加 Secrets → → → → → → Name = Name,Secret = 例子 程序会自动填充 尾部的 ,因此你无需重复添加 对于部分教务系统,可能需要在 中添加 路径,如: 开启 Actions → → → 运行 程序 → → 若你的程序正常运行且未报错,那么在此之后,程序将会每隔 30 分钟自动检测一次成绩是否有更新 若你看不懂上述使用...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值