包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里] 】!
1.使用虚拟环境管理依赖
在企业级应用开发中,项目通常会依赖多个第三方库。为了确保项目的稳定性和可移植性,使用虚拟环境是最佳选择。
步骤:
pip install virtualenv
virtualenv venv
Windows:
venv\Scripts\activate
macOS/ Linux:
source venv/ bin / activate
示例:
pip install requests
解释:
virtualenv是一个创建隔离的Python环境的工具。 激活虚拟环境后,所有安装的包都会被隔离在这个环境中,不会影响系统全局的 Python 环境。
2.使用"requirements.txt"管理依赖
"requirements.txt"文件记录了项目所需的所有依赖及其版本,便于在不同环境中复现相同的开发环境。
步骤:
pip freeze > requirements. txt
pip install - r requirements. txt
示例:
requests== 2.25 .1
flask== 1.1 .2
解释:
pip freeze
命令列出当前环境中所有已安装的包及其版本。pip install -r requirements.txt
命令根据 requirements.txt
文件中的内容安装所有依赖。
3.使用日志记录系统
日志记录是企业级应用中不可或缺的一部分,它帮助开发者调试问题、监控应用状态和性能。
步骤:
import logging
logging. basicConfig( filename= 'app.log' , level= logging. INFO, format = '%(asctime)s - %(levelname)s - %(message)s' )
logging. info( 'This is an info message' )
logging. error( 'This is an error message' )
示例:
import logging
logging. basicConfig( filename= 'app.log' , level= logging. INFO, format = '%(asctime)s - %(levelname)s - %(message)s' )
logging. info( 'Application started' )
logging. warning( 'This is a warning message' )
logging. error( 'This is an error message' )
解释:
logging.basicConfig
用于配置日志记录的基本设置,包括日志文件名、日志级别和日志格式。logging.info
、logging.warning
和 logging.error
用于记录不同级别的日志信息。
4.使用配置文件管理应用设置
将应用的配置信息(如数据库连接字符串、API 密钥等)放在配置文件中,可以提高代码的可维护性和安全性。
步骤:
DATABASE_URL = 'sqlite:///mydatabase.db'
API_KEY = 'your_api_key_here'
from config
import DATABASE_URL, API_KEY
print ( f'Database URL: { DATABASE_URL} ' )
print ( f'API Key: { API_KEY} ' )
示例:
DATABASE_URL = 'sqlite:///mydatabase.db'
API_KEY = 'your_api_key_here'
from config
import DATABASE_URL, API_KEY
print ( f'Database URL: { DATABASE_URL} ' )
print ( f'API Key: { API_KEY} ' )
解释:
config.py
文件中定义了应用所需的配置变量。在应用中通过导入 config
模块来访问这些配置变量。
5.使用单元测试确保代码质量
单元测试是确保代码质量和功能正确性的有效手段。使用 unittest
或 pytest
可以方便地编写和运行单元测试。
步骤:
pip install pytest
def add ( a, b) :
return a + b
def test_add ( ) :
assert add( 1 , 2 ) == 3
assert add( - 1 , 1 ) == 0
pytest
示例:
def add ( a, b) :
return a + b
def test_add ( ) :
assert add( 1 , 2 ) == 3
assert add( - 1 , 1 ) == 0
解释:
pytest
是一个流行的 Python 测试框架,支持简单的测试用例编写和运行。assert
语句用于断言测试结果是否符合预期。
6.使用异步编程提高性能
异步编程可以显著提高 I/O 密集型应用的性能。使用 asyncio
和 aiohttp
可以轻松实现异步请求。
步骤:
pip install aiohttp
import asyncio
import aiohttp
async def fetch ( session, url) :
async with session. get( url) as response:
return await response. text( )
async def main ( ) :
urls = [
'https://api.example.com/data1' ,
'https://api.example.com/data2' ,
'https://api.example.com/data3' ]
async with aiohttp. ClientSession( ) as session:
tasks = [ fetch( session, url) for url in urls]
results = await asyncio. gather( * tasks)
for result in results:
print ( result)
asyncio. run( main( ) )
示例:
import asyncio
import aiohttp
async def fetch ( session, url) :
async with session. get( url) as response:
return await response. text( )
async def main ( ) :
urls = [
'https://api.example.com/data1' ,
'https://api.example.com/data2' ,
'https://api.example.com/data3' ]
async with aiohttp. ClientSession( ) as session:
tasks = [ fetch( session, url) for url in urls]
results = await asyncio. gather( * tasks)
for result in results:
print ( result)
asyncio. run( main( ) )
解释:
asyncio
是 Python 的异步 I/O 框架,支持协程和任务调度。aiohttp
是一个基于 asyncio
的 HTTP 客户端和服务器库。
7.使用容器化技术部署应用
容器化技术(如 Docker)可以确保应用在不同环境中的一致性和可移植性。
步骤:
FROM python: 3.9 - slim
WORKDIR / app
COPY requirements. txt .
RUN pip install - r requirements. txt
COPY . .
CMD [ "python" , "app.py" ]
docker build - t myapp .
docker run - d - p 5000 : 5000 myapp
示例:
FROM python: 3.9 - slim
WORKDIR / app
COPY requirements. txt .
RUN pip install - r requirements. txt
COPY . .
CMD [ "python" , "app.py" ]
解释:
Dockerfile
定义了构建镜像的步骤,包括基础镜像、工作目录、依赖安装和启动命令。docker build
命令用于构建 Docker 镜像。docker run
命令用于运行容器。
8.使用 CI/CD 自动化部署
持续集成和持续部署(CI/CD)可以自动化代码的构建、测试和部署过程,提高开发效率和应用的可靠性。
步骤:
1.选择 CI/CD 工具(如 GitHub Actions、GitLab CI、Jenkins)。 2.配置 CI/CD 管道:
name: CI
on:
push:
branches: [ main]
jobs:
build:
runs- on: ubuntu- latest
steps:
- uses: actions/ checkout@v2
- name: Set up Python
uses: actions/ setup- python@v2
with :
python- version: 3.9
- name: Install dependencies
run: |
python - m pip install - - upgrade pip
pip install - r requirements. txt
- name: Run tests
run: pytest
- name: Build and push Docker image
run: |
docker build - t myapp .
docker login - u ${ { secrets. DOCKER_USERNAME } } - p ${ { secrets. DOCKER_PASSWORD } }
docker push myapp
示例:
name: CI
on:
push:
branches: [ main]
jobs:
build:
runs- on: ubuntu- latest
steps:
- uses: actions/ checkout@v2
- name: Set up Python
uses: actions/ setup- python@v2
with :
python- version: 3.9
- name: Install dependencies
run: |
python - m pip install - - upgrade pip
pip install - r requirements. txt
- name: Run tests
run: pytest
- name: Build and push Docker image
run: |
docker build - t myapp .
docker login - u ${ { secrets. DOCKER_USERNAME } } - p ${ { secrets. DOCKER_PASSWORD } }
docker push myapp
解释:
GitHub Actions
是一个流行的 CI/CD 工具,支持自定义工作流。ci.yml
文件定义了 CI/CD 管道的各个步骤,包括代码检出、环境设置、依赖安装、测试运行和 Docker 镜像构建与推送。
9.使用 ORM 管理数据库操作
对象关系映射(ORM)可以简化数据库操作,提高代码的可读性和可维护性。使用 SQLAlchemy
可以轻松实现 ORM 功能。
步骤:
pip install sqlalchemy
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy. ext. declarative import declarative_base
from sqlalchemy. orm import sessionmaker
engine = create_engine( 'sqlite:///example.db' )
Base = declarative_base( )
class User ( Base) :
__tablename__ = 'users'
id = Column( Integer, primary_key= True )
name = Column( String)
email = Column( String)
Base. metadata. create_all( engine)
Session = sessionmaker( bind= engine)
session = Session( )
new_user = User( name= 'John Doe' , email= 'john@example.com' )
session. add( new_user)
session. commit( )
users = session. query( User) . all ( )
for user in users:
print ( user. name, user. email)
示例:
from sqlalchemy
import create_engine, Column, Integer, String
from sqlalchemy. ext. declarative
import declarative_base
from sqlalchemy. orm
import sessionmaker
engine = create_engine( 'sqlite:///example.db' )
Base = declarative_base( )
class User ( Base) :
__tablename__ = 'users'
id = Column( Integer, primary_key= True )
name = Column( String)
email = Column( String)
Base. metadata. create_all( engine)
Session = sessionmaker( bind= engine)
session = Session( )
new_user = User( name= 'John Doe' , email= 'john@example.com' )
session. add( new_user)
session. commit( )
users = session. query( User) . all ( )
for user in users:
print ( user. name, user. email)
解释:
SQLAlchemy
是一个强大的 ORM 库,支持多种数据库。通过定义模型类,可以将数据库表结构映射为 Python 类。 使用 session
对象可以执行数据库操作,如添加、查询和提交事务。
实战案例:构建一个简单的 Flask 应用
假设我们需要构建一个简单的 Flask 应用来管理用户信息。我们将使用上述的最佳实践来确保应用的质量和可维护性。
步骤:
my_flask_app/
├── app. py
├── config. py
├── models. py
├── requirements. txt
└── templates/
└── index. html
pip install flask sqlalchemy
DATABASE_URL = 'sqlite:///app.db'
SECRET_KEY = 'your_secret_key_here'
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy. ext. declarative import declarative_base
from sqlalchemy. orm import sessionmaker
from config import DATABASE_URL
engine = create_engine( DATABASE_URL)
Base = declarative_base( )
class User ( Base) :
__tablename__ = 'users'
id = Column( Integer, primary_key= True )
name = Column( String)
email = Column( String)
Base. metadata. create_all( engine)
Session = sessionmaker( bind= engine)
session = Session( )
from flask
import Flask, render_template, request, redirect, url_for
from models
import User, session
app = Flask( __name__)
app. config. from_object( 'config' )
@app. route ( '/' )
def index ( ) :
users = session. query( User) . all ( )
return render_template( 'index.html' , users= users)
@app. route ( '/add' , methods= [ 'POST' ] )
def add_user ( ) :
name = request. form[ 'name' ]
email = request. form[ 'email' ]
new_user = User( name= name, email= email)
session. add( new_user)
session. commit( )
return redirect( url_for( 'index' ) )
if __name__ == '__main__' :
app. run( debug= True )
6.模板文件 templates/index.html
:
< !- - templates/ index. html - - >
< !DOCTYPE html>
< html>
< head>
< title> User Management< / title>
< / head>
< body>
< h1> User Management< / h1>
< form method= "post" action= "{{ url_for('add_user') }}" >
< label for = "name" > Name: < / label>
< input type = "text" id = "name" name= "name" required>
< label for = "email" > Email: < / label>
< input type = "email" id = "email" name= "email" required>
< button type = "submit" > Add User< / button>
< / form>
< h2> Users< / h2>
< ul>
{ % for user in users % }
< li> { { user. name } } - { { user. email } } < / li>
{ % endfor % }
< / ul>
< / body>
< / html>
解释:
config.py
文件中定义了数据库连接字符串和密钥。models.py
文件中定义了用户模型和数据库操作。app.py
文件中定义了 Flask 应用的路由和视图函数。templates/index.html
文件中定义了用户界面,包括表单和用户列表。
总结
本文介绍了 Python 企业级应用开发的 9 个最佳实践,包括使用虚拟环境管理依赖、使用 requirements.txt
管理依赖、使用日志记录系统、使用配置文件管理应用设置、使用单元测试确保代码质量、使用异步编程提高性能、使用容器化技术部署应用、使用 CI/CD 自动化部署和使用 ORM 管理数据库操作。通过这些最佳实践,可以提高应用的稳定性、可维护性和性能。
总结
最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!
文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里] 】领取!
① Python所有方向的学习路线图,清楚各个方向要学什么东西 ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析 ③ 100多个Python实战案例,学习不再是只会理论 ④ 华为出品独家Python漫画教程,手机也能学习
可以扫描下方二维码领取【保证100%免费 】