首页 > 技术文章 > 模块

wait59 2020-07-23 19:50 原文

模块

一:什么是模块?

模块就是一个功能的集合体,不是用来直接运行,而是用来被导入使用的

二:模块的三大来源

内置模块
第三方模块
自定义模块

三:模块分为四种类别

一个py文件就是一个模块
一个文件夹也是一个模块(包)
已被编译为共享库或DLL的C或C++扩展
使用C编写并链接到python解释器的内置模块

四:为什么要用模块?

使用别人的模块:提升开发效率
自定义模块:别人功能不够用了,需要自己写,或者不符合业务逻辑

五:如何自定义模块?

# spam.py  这个模块是spam
print('from the spam.py')
money = 10000

def read1():
    print("spam模块:", money)
    
def read2():
    print("spam模块")
    read1()
    
def change():
    golbal money
    money = 0

六:导入模块

# 这个文件名是test.py,模块名则是spam

x = 11

import spam  # 首次导入spam模块
# 触发被导入模块的运行,产生一个模块的名称空间,把模块中的名字放进去,会在当前执行文件中得到一个名字span,该名字是指向被导入模块的名称空间
# 多次或者重复导入,名字spam直接引用首次导入的名称空间,不会再执行模块内的代码
import spam
import spam


money = 1000
spam.change() 
spam.read1()  #  spam模块: 10000
print(money)  # 1000
def read1():
    print("run test.py---read1")

read1()  #run test.py---read1

一:一行导入多个模块

import spam,m1,m2,m4  # 这个是不推荐的

二:给导入模块起一个别名

import spam as sm


# mysql.py

def sql_query():
    print("from mysql query")
# sqllit.py

def sql_query():
    print('from sqlit query')
    

query_sql.py

db_type = input(">>>").strip()
if db_type == mysql:
    import mysql as db
elif db_type == 'sqllite':
    import sqlite import db
    
db.sql_query() # 
    
# 文件名是spam模块,模块名是spam

x = 111

from spam import money,read1,read2
from spam import money,read1,read2

money = 111 # 覆盖了导入的spam模块的money属性
print(money) # 111 


# 一行导入多个名字
from spam import money,read1

# 为导入模块起别名
from spam import money as m
print(m)

# 把模块内的所以属性导入进来
from spam import *
print(money)
print(read1)
print(read2)
print(change)

推荐阅读