Python基础专栏⑥-代码组织篇①-模块

目录

前言

一、模块的定义。

二、模块的导入。

三、模块导入时查找顺序



前言

现在市面上讲解python的教材和博客一般都会把【模块】这一个知识点放到中间或后面进行讲解,之所以一开始就进行讲解,个人理解是我们学习python,一开始就在后缀名为.py的文件中进行代码的编写,而这种文件是什么呢?就是我们的模块文件,所以从开始就让大家理解模块,并且知道模块是什么显得尤其重要。

一、模块的定义。

在编写python代码时,一般会把代码存放到以.py为后缀的文件中,这类文件就成为模块文件,模块是python组织代码的基本单元,模块文件中可以定义变量、函数、以及类等程序单元。通过模块文件,实现了python代码的持久化,可以被重复调用。

比如我们在pycharm中,先创建一个空模块m1.

模块的名字就是m1。

在模块文件当中,可以进行变量、函数和类的定义。

''' 
-*- coding: utf-8 -*-
@Time : 2022/8/17 12:01
@Author : 旭鑫
@文件名 : m1 
@项目名 :1.0 基础
'''

# 定义一个整型变量。
int1=20

# 定义一个浮点型变量
f1=10.1

'''
定义一个函数
函数名:f1
'''
def f1():
    print("hello world!")

class c1(object):
    def __init__(self,name):
        self.name=name
        
    def printInfo(self):
        print(self.name)

二、模块的导入。

m1模块定义好后,可以被其他模块进行调用。

创建另外一个模块m2.在此模块中引入m1中的东西。

模块的导入有三种方式:

方式①import m1

''' 
-*- coding: utf-8 -*-
@Time : 2022/8/17 12:09
@Author : 旭鑫
@文件名 : m2 
@项目名 :1.0 基础
'''

import m1

print(m1.int1)
print(m1.f1)
m1.f2()

程序执行结果为:

C:\Users\Administrator\AppData\Local\Programs\Python\Python39\python.exe "E:/python/1.0 基础/1-模块/m2.py"
20
10.1
hello world!

进程已结束,退出代码0

方式②from m1 import int1

from m1 import int1
print(int1)

执行结果,打印出m1中声明的变量int1的值20.

方式③from m1 import *

from m1 import *
print(int1)
print(f1)
f2()
c2=c1("张三")
c2.printInfo()

方式②和方式③会把m1中的元素直接引入到当前执行模块中,可以被直接使用,前面不用加模块名。

三、模块导入时查找顺序

模块在导入时,如何查找到模块所在的文件呢?需要遵循一定的规则。

①先从内存中查找;②再从内置模块中查找;③最后从sys.path变量(是一个列表,里面存放了大量的路径)中,按照从左到右的顺序,依次查找。

如果在执行文件时报找不到模块错误的时候,解决方案:把模块所在的路径加入到sys.path中。

path1=模块所在的路径
sys.path.append(path1)

-------------------------------------------------------------------

如果本博客对您有帮助,欢迎关注作者,您的支持和关注,是作者继续创作下去的最大动力。

<think>好的,我现在需要帮用户找到关于Python后端开发的思维导图。首先回顾下用户之前的对话,用户开始问的是Django教程的代码思维导图,我给出了相关的资源和方法。现在用户引用了两个站内资料,个是关于Python语法要点的思维导图,另个是关于后端技术的总结,包括RPC、API、服务发现等内容。用户现在明确表示想获取Python后端开发的思维导图。 首先,我需要分析用户的需求。用户之前对Django的思维导图感兴趣,现在转向更广泛的Python后端开发。可能用户希望有个全面的学习路线,涵盖后端开发的各个方面,比如框架、数据库、API开发、部署等。结合用户引用的资料,尤其是引用[2]提到的后端技术,如RPC、服务发现、微服务等,用户可能对分布式系统和高并发处理有需求。 接下来,我需要整理Python后端开发的关键知识点。这可能包括: 1. 核心框架:Django、Flask、FastAPI等。 2. 数据库:ORM(如Django ORM、SQLAlchemy)、数据库连接池、事务管理。 3. API开发:RESTful设计、GraphQL、前后端分离。 4. 中间件:消息队列(RabbitMQ、Kafka)、缓存(Redis)、服务发现(etcd)。 5. 部署:Docker、Kubernetes、CI/CD流程。 6. 性能优化:异步处理(Celery、asyncio)、负载均衡、缓存策略。 7. 安全:认证(JWT、OAuth)、加密、CSRF防护。 8. 测试:单元测试、集成测试、压力测试工具。 然后,考虑如何将这些内容组织成思维导图的结构。可能需要分模块,每个模块下有子节点,包含关键概念和示例代码。例如,在数据库部分,可以细分ORM的使用、连接配置、迁移命令等,并嵌入代码片段,如Django的模型定义或SQLAlchemy的会话管理。 用户提到的引用[2]中涉及RPC与API的区别、服务发现、微服务架构,这些都需要在思维导图中体现。特别是要比较不同RPC框架的特点,以及如何与微服务结合使用。例如,Dubbo、gRPC、Thrift等,可能需要说明它们的优缺点及适用场景。 另外,用户可能希望思维导图包含实际代码示例,比如如何配置Django的数据库,如何编写个FastAPI的路由,或者如何使用Celery进行异步任务处理。这些代码片段需要符合之前提到的LaTeX格式要求,但用户现在的问题更偏向于整体结构,可能需要先给出结构框架,再在子节点中嵌入代码。 还要考虑用户提到的资源获取渠道,如GitHub项目、知乎专栏、B站教程等,可能需要推荐相关的开源项目或教程,方便用户进步学习。例如,GitHub上可能有现成的Python后端思维导图项目,或者详细的文档。 最后,用户可能对工具支持感兴趣,比如哪些思维导图软件支持代码高亮,或者如何将代码嵌入到导图中。例如,Xmind、MindMaster等工具允许插入代码块,或者使用Mermaid语法生成包含代码的图表。 总结来说,我需要构建个层次分明、涵盖Python后端开发各方面的思维导图结构,每个部分包含关键知识点、示例代码和相关资源链接,同时解答用户可能的相关问题,如工具选择、学习路径等。</think>根据您对Python后端开发思维导图的需求,结合站内引用资料和实际开发经验,为您整理以下结构化知识框架(含代码示例): ### Python后端开发思维导图体系 ```mermaid graph TD A[Python后端开发] --> B[核心技术栈] A --> C[架构设计] A --> D[部署运维] ``` #### 、核心技术栈模块 ```python # 示例:FastAPI基础路由 from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id} ``` 1. **Web框架** ```mermaid graph LR Web框架 --> Django[认证系统/ORM/Admin] Web框架 --> Flask[轻量级/插件化] Web框架 --> FastAPI[异步/OpenAPI] ``` 2. **数据库交互** ```python # Django ORM示例 class User(models.Model): username = models.CharField(max_length=30) created_at = models.DateTimeField(auto_now_add=True) ``` - 关系型数据库:MySQL/PostgreSQL连接池配置 - NoSQL:Redis缓存策略/MongoDB分片 - ORM进阶:SQLAlchemy Session管理 3. **API开发规范** ```markdown - RESTful设计原则 - GET /api/v1/users - POST /api/v1/users - 状态码规范 - 安全机制 - JWT令牌实现 ```python # JWT验证中间件示例 def verify_token(token: str = Depends(oauth2_scheme)): try: payload = jwt.decode(token, SECRET_KEY) return payload except JWTError: raise HTTPException(status_code=403) ``` ``` #### 二、分布式架构模块[^2] ```mermaid graph TB 微服务架构 --> RPC[gRPC/Thrift] 微服务架构 --> 服务发现((etcd)) 微服务架构 --> 消息队列{{Kafka}} ``` 1. **RPC框架对比** ```markdown | 框架 | 语言支持 | 性能特点 | |---------|-----------|---------------| | gRPC | 多语言 | HTTP/2二进制传输 | | Dubbo | Java | SPI扩展机制 | | Thrift | 跨语言 | 接口定义语言 | ``` 2. **服务通信模式** ```python # gRPC服务端示例 class Greeter(helloworld_pb2_grpc.GreeterServicer): def SayHello(self, request, context): return helloworld_pb2.HelloReply( message=f'Hello {request.name}' ) ``` #### 三、部署监控体系 ```bash # Dockerfile示例 FROM python:3.9 COPY requirements.txt . RUN pip install -r requirements.txt EXPOSE 8000 CMD ["uvicorn", "main:app", "--host", "0.0.0.0"] ``` 1. **容器化部署** ```mermaid graph LR Docker --> 镜像构建 Docker --> 网络配置 Kubernetes --> 水平扩展 Kubernetes --> 服务监控 ``` 2. **性能监控指标** ```markdown - APM工具:NewRelic/Sentry - 日志分析:ELK Stack - 指标收集:Prometheus + Grafana ``` ### 推荐学习资源 | 资源类型 | 特点 | 获取方式 | |---------|------|----------| | 《Python后端架构师图谱》 | 含分布式系统设计案例 | 知乎专栏搜索 | | GitHub项目「backend-mindmap」 | 含FastAPI/Redis集成示例 | GitHub直接克隆 | | B站「微服务实战」系列 | 演示K8s部署全过程 | UP主"架构师之路" | ### 典型问题解决方案 ```python # Celery异步任务示例 @app.task def send_email(recipient): email_backend.send(recipient, "您的订单已创建") ``` ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智信达软件定制化开发python

如感觉有帮助,请作者喝杯咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值