python学习_day27_模块与包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习_day27_模块与包相关的知识,希望对你有一定的参考价值。

一、模块

  一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。

1、模块的调用

  调用语法:import ...或者from ... import...

  调用事项:同一个模块不会被重复导入(import语句是可以在程序中的任意位置使用的,且针对同一个模块import多次,为了防止你重复导入,python的优化手段是:第一次导入后就将模块名加载到内存了,后续的import语句仅是对已经加载大内存中的模块对象增加了一次引用,不会重新执行模块内的语句);导入模块的顺序:内置模块、需要安装的扩展模块、自己写的模块;导入模块的规则:不要在同一行导入多个模块

2、模块的命名空间

  每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,这样我们在编写自己的模块时,就不用担心我们定义在自己模块中全局变量会在被导入时,与使用者的全局变量冲突。

#my_module模块
money=1000
def read1():
    print(my_module->read1->money,money)
def read2():
    print(my_module->read2 calling read1)
    read1()
def change():
    global money
    money=0

例1:money与my_module.money不冲突

import my_module
money=10
print(my_module.money)                 #输出结果:1000

例2:read1()与my_module.read1()不冲突

import my_module
def read1():
    print(========)
my_module.read1()                      #输出结果:my_module->read1->money 1000

3、模块重命名

  为已经导入的模块起别名的方式对编写可扩展的代码很有用。语句:“from 模块名 import 名字 as 重命名” 或者“import 名字 as 重命名”

  应用实例:有两种模块mysql和oracle,都包含sqlparse()函数,根据用户的输入,选择不同的sqlparse()功能函数。

 

#mysql.py
def sqlparse():
    print(from mysql sqlparse)
#oracle.py
def sqlparse():
    print(from oracle sqlparse)

#test.py
db_type=input(>>: )
if db_type == mysql:
    import mysql as db
elif db_type == oracle:
    import oracle as db

db.sqlparse() 

4、from...import...相关

  对比import my_module,会将源文件的名称空间‘my_module‘带到当前名称空间中,使用时必须是my_module.名字的方式;而from 语句相当于import,也会创建新的名称空间,但是将my_module中的名字直接导入到当前的名称空间中,在当前名称空间中,直接使用名字就可以了。

from my_module import read1
def read1():
    print(aaaaa)
read1()

 

以上是关于python学习_day27_模块与包的主要内容,如果未能解决你的问题,请参考以下文章

DAY5-模块与包

python-学习 协程函数 模块与包

Python学习笔记五(模块与包)

python模块与包的导入

Python模块与包

Python模块与包