Python(三十三)python模块化编程

简介: 1 :模块的定义模块:用来从逻辑上组织Python代码(变量,函数、类,逻辑:实现一个功能),本质就是.py结尾的Python文件(文件名:test.py,对应的模块名,test)。 2 :模块的引用模块的引用大概有三种方式:python复制代码import module_test, module_test1 # 调用方法的时候,需要module_test. form moudule_test import * # * 表示所有的方法(不建议使用,这个就相当于导入了程序。) 容易造成覆盖,出现问题。form module_test import module_ajun

1:模块的定义

模块:用来从逻辑上组织Python代码(变量,函数、类,逻辑:实现一个功能),本质就是.py结尾的Python文件(文件名:test.py,对应的模块名,test)。

 2:模块的引用

模块的引用大概有三种方式:

python

复制代码

import module_test, module_test1 # 调用方法的时候,需要module_test.  
form moudule_test import *  # * 表示所有的方法(不建议使用,这个就相当于导入了程序。)  容易造成覆盖,出现问题。
form module_test import module_ajun  as module_ajun_test # 作为一个别名来使用

 3:自定义模块

我这里直接放代码了,定义了成员变量,函数,类。

ruby

复制代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2021/12/23 13:57
# @Author  : camellia
# @Email   : 805795955@qq.com
# @File    : modules.py
# @Software: PyCharm
name = "Python笔记"
add = "http://guanchao.site"
# print(name, add)
def say():
    print("欢迎访问时间里的博客 https://guanchao.site")
class CLanguage:
    def __init__(self, name, add):
        self.name = name
        self.add = add
    def say(self):
        print(self.name, self.add)
# 加法
def plus(a, b):
    return a + b
# 加法
def reduce(a, b):
    return a - b
# 除法
def ride(a, b):
    if b == 0:
        return "被除数不能是0"
    return a - b

 4:import原理

我的主业是做PHP的,PHP中没有inport 关键字

在做前端的时候,javascript中是有import关键字的,用于导入模块,以及模块中的方法。

Python中的import关键字的原理是:路径 搜索和搜索路径

(1):import modules as mod相当于把modules 的所有代码解释一遍,全部传递给modules 并且起了个别名 mod 调用modules的变量和方法。

引用模块发送三件事:

  1. 把要引入模块加载到内存
  2. 在内存中创建一个以引入模块命名的名称空间
  3. 通过引入模块的名字,以.的方式引入此模块的(变量,函数,类名)

注意: 通过import引入的模块,引入模块中的变量不会受到,当前模块相同名字的变量的影响 通过import 引入的模块, 他有自己的独立空间,与当前执行的文件没有关系.

python

复制代码

# 导入自定义的modules模块
import modules as mod
# 调用成员变量
print(mod.name)
# 调用方法
mod.say()
# 调用类
test = mod.CLanguage('时间里的','https://l.guanhao.site')
# 调用类下的方法
test.say()

输出:

arduino

复制代码

Python笔记
欢迎访问时间里的博客 https://guanchao.site
时间里的 https://l.guanhao.site

 (2):from modules import name, say, CLanguage 相当于只调用了name变量,在当前模块,就不需要加前缀了。

优点: 使用起来方便 (更容易快速找到指定的要使用的 功能 )

缺点: 容易与当前执行文件产生覆盖效果(如果当前执行的文件中具有和导入的模块 相同名字的变量就会被覆盖.谁先加载,谁先被覆盖)

注意: (极端情况,一般没人这么折腾自己)

需求: 在引入一个模块的之后,去执行这个模块的中修改模块的某个变量的值. 不会对当前执行文件造成影响.

当前执行文件使用的是模块中同一个函数.(只有模块中的变量会被拷贝当前执行文件, 模块中的函数不会被拷贝)

引用模块中的函数,如果此模块用到一些变量,这些变量还是从此模块中寻找,不会改变当前执行文件的变量

perl

复制代码

# 导入自定义的modules模块
from modules import name, say, CLanguage
# 调用name
print(name)
# 调用say 方法
say()
# 调用类 Clanguage
cl = CLanguage('时间里的', 'https://l.guanhao.site')
cl.say()

输出:

arduino

复制代码

Python笔记
欢迎访问时间里的博客 https://guanchao.site
时间里的 https://l.guanhao.site

(3):导入优化

尽量多使用from modules import name, say, CLanguage需要什么就导入什么,不要一次性全部导入

切记不要使用 from xxx模块 import * ,这样会将模块中的所有代码都引入到程序中。

有好的建议,请在下方输入你的评论。

目录
相关文章
|
2天前
|
网络协议 算法 网络架构
Python网络编程之udp编程、黏包以及解决方案、tcpserver
Python网络编程之udp编程、黏包以及解决方案、tcpserver
|
2天前
|
机器学习/深度学习 数据挖掘 算法框架/工具
Python:编程的艺术与魅力
Python:编程的艺术与魅力
11 3
|
5天前
|
机器学习/深度学习 数据挖掘 API
pymc,一个灵活的的 Python 概率编程库!
pymc,一个灵活的的 Python 概率编程库!
13 1
|
5天前
|
人工智能 算法 调度
uvloop,一个强大的 Python 异步IO编程库!
uvloop,一个强大的 Python 异步IO编程库!
18 2
|
5天前
|
机器学习/深度学习 人工智能 数据可视化
Python:探索编程之美
Python:探索编程之美
9 0
|
6天前
|
机器学习/深度学习 人工智能 数据处理
Python编程的魅力与实践
Python编程的魅力与实践
|
7天前
|
SQL 关系型数据库 MySQL
第十三章 Python数据库编程
第十三章 Python数据库编程
|
7天前
|
开发框架 程序员 开发者
Python GUI编程:从入门到精通3.2 GUI编程:学习使用Tkinter、PyQt或wxPython等库创建图形用户界面。
Python GUI编程:从入门到精通3.2 GUI编程:学习使用Tkinter、PyQt或wxPython等库创建图形用户界面。
|
7天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
11天前
|
机器学习/深度学习 IDE 开发工具
《Python 语音转换简易速速上手小册》第2章 Python 编程基础(2024 最新版)(下)
《Python 语音转换简易速速上手小册》第2章 Python 编程基础(2024 最新版)
25 1