Python 模块

一、什么是模块

模块是一个包含所有你定义的函数和变量的文件,其实就是后缀名为.py的文件。模块可以被别的程序引入,以便使用该模块中的函数等功能。

二、导入模块

使用 import 导入模块,并且一个模块只会被导入一次。主要有以下两中方式导入模块:

  1. import 模块名1 [as 别名1], 模块名2 [as 别名2], …:这种方式会导入指定模块中的所有成员(包括变量、函数、类等),并且当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。当导入多个模块时使用逗号隔开。
  2. from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…:这种方式只会导入模块中指定的成员,而不是全部成员,并且当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。当导入多个成员时使用逗号隔开。
1.导入一个模块
import sys
print(sys.argv[0])  # 使用sys模块名作为前缀来访问模块中的成员

2.导入一个模块并指定别名
import sys as s
print(s.argv[0])  # 使用sys模块的别名作为前缀来访问模块中的成员

3.导入多个模块
import sys,os

4.导入多个模块并指定别名
import sys as s,os as o

5.导入指定模块中的其中一个成员
from sys import argv
print(argv[0])  # 直接使用成员名访问

6.导入指定模块中的其中一个成员并指定别名
from sys import argv as a
print(a[0])  # 直接使用成员的别名访问

7.导入指定模块中的多个成员
from sys import argv, winver

8.导入指定模块中的所有成员
from sys import *

三、什么是包

包是一种管理 Python 模块命名空间的形式,其实就是个文件夹,更确切的说,是一个包含"init.py"文件的文件夹,"init.py"文件中可以不编写任何代码,也可以编写一些 Python 初始化代码,则当有其它程序文件导入包时,会自动执行该文件中的代码。

1.创建一个包,包名为my_package
2.在该文件夹中添加一个 __init__.py 文件,此文件中编写一些初始化代码
# __init__.py文件
print('正在执行__init__.py文件')
3.在my_package包中添加两个模块,分别为:module1.py、module2.py
# module1.py 模块文件
def sou(arc):
    print("正在执行module1模块,参数为:%s " % arc)
# module2.py 模块文件
def sou(arc):
    print("正在执行module2模块,参数为:%s " % arc)

四、导入包

导入包也是使用 import 来导入,导入方法可归结为以下 3 种:

  1. import 包名[.模块名 [as 别名]]:通过此语法格式导入包中的指定模块后,在使用该模块中的成员(变量、函数、类)时,需添加"包名.模块名"为前缀,或者使用 as 给"包名.模块名"起一个别名,就可以使用直接使用这个别名作为前缀使用该模块中的方法了。
  2. from 包名 import 模块名 [as 别名]:使用此语法格式导入包中模块后,在使用其成员时不需要带包名前缀,但需要带模块名前缀。
  3. from 包名.模块名 import 成员名 [as 别名]:通过该方式导入的变量(函数、类),在使用时可以直接使用变量名(函数名、类名)调用。
1.导入my_package包中的module1模块
import package_name.module1
my_package.module1.sou("hello")  # 通过"包名.模块名"调用模块中的函数

2.导入my_package包中的module1模块并为其指定别名
import package_name.module1 as m1
m1.sou("hello")  # 通过指定的别名调用模块中的函数

3.直接导入包时,程序会只会自动执行该包所对应文件夹下的 __init__.py 文件中的代码,并不会将包中所有模块全部导入到程序中。
import package_name
my_package.module1.sou("hello")   # 程序报错

4.导入my_package包中的module1模块
from my_package import module1
module1.sou("hello")   # 调用模块的成员时不需要带包名前缀,但需要带模块名前缀

5.导入my_package包中的module1模块并指定别名
from my_package import module1 as module
module.sou("hello")    # 调用模块的成员时使用别名

6.导入my_package包中的module1模块中的sou成员
from my_package.module1 import sou
sou("hello")    ## 可以直接使用成员

7.导入my_package包中的module1模块中的sou成员并指定别名
from my_package.module1 import sou as func
func("hello")    ## 可以直接使用别名调用

8.导入my_package包中的module1模块中的所有成员
from my_package.module1 import *
sou("hello")  

你可能感兴趣的:(python,python)