欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python_模块

程序员文章站 2022-05-14 09:41:37
模块的使用之import 模块的使用之from ... import ... 区分py文件的两种用途 模块的搜索路径 ......

模块的使用之import

# 1 什么是模块?
# 模块就一系统功能的集合体,在python中,一个py文件就是一个模块,比如module.py,其中模块名module
#
# 2 使用模块
#
# 2.1 import 导入模块
# 首次导入模块发生三件事
# 1、创建一个模块的名称空间
# 2、执行模块对应文件,将产生的名字存放于1中的名称空间
# 3、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间

x=1
def f1():
pass

# import spam
# 强调:之后的导入会直接引用第一次导入的结果,不会重复执行文件

import spam
import spam
import spam
import spam
import spam

print(spam)

print(spam.money)
spam.read1()


模块中功能的执行始终以模块自己的名称空间为准
read1=111111
print(spam.read1)

money=1111111111111
spam.read1()

read1=11111111111111111111111111
spam.read2()

money=1111111111111111
spam.change()
print(money)
spam.read1()


#3、为模块起别名
import spam as sm

print(sm.money)
sm.read1()


engine=input('>>: ').strip()
if engine == 'mysql':
import mysql as db
elif engine == 'oracle':
import oracle as db
db.parse()


#4、一行导入多个模块(不推荐使用)
# import spam,mysql,oracle

#推荐写成多行
import spam
import mysql
import orcacle

 

模块的使用之from ... import ...

# 首次导入模块发生三件事
# 1、创建一个模块的名称空间
# 2、执行模块对应文件,将产生的名字存放于1中的名称空间
# 提示:from 。。。 import。。与import前两件事一模一样
# 3、在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀

import spam # spam.名字



from spam import money,read1,read2,change
print(money)
read1()
read2()
change()

import spam
print(money)

# 注意:
# 1、同import,执行模块中的功能,始终以模块的名称空间为准
money=1111111111
change()
print(money)

# 2、from ... import 名字,拿到的名字可以不加前缀直接使用,使用起来更加方便
# 当问题是容易与当前执行文件中相同的名字冲突
money=1111111111111111
print(money)
read1=1111111
read1()



# 起别名
from spam import money as m
print(m)

# 在一行导入多个
from spam import money,read1,read2


from ... import *
from spam import *

print(money)
print(read1)
print(read2)
print(change)

from spam import *
print(money)
print(read1)
print(read2)

 

区分py文件的两种用途

if __name__ == "__main__":
            文件被当做脚本执行时执行的代码
         else:
            文件被当做模块导入时执行的代码

 

模块的搜索路径

import m1
m1.f1()
# 模块的查找顺序是:
# 1、内存中已经加载的模块
# 2、内置模块
# 3、sys.path路径中包含的模块
import time

import m1
m1.f1()

time.sleep(15)
import m1
m1.f1()


import sys
print('time' in sys.modules)
import time
time.sleep(2)
print('time' in sys.modules)

import sys
sys.path.append(r'd:\code\sh_fullstack_s1\day14\dir1')

import m1
m1.f1()


# 强调:
# sys.path的第一个路径是当前执行文件所在的文件夹