一、import语句
  1、模块概述:Python提供了交互式和脚本式两种运行方式。当要执行的代码比较长、且需要重复使用时,我们通常将代码放在扩展名为.py的Python脚本文件中。当我们要编写一个规模比较大的程序时,如果将所有代码都放在一个脚本文件中,则不方便维护和多人协同开发。对于可以在多个程序中重用的功能,我们也最好将其放在单独的脚本文件中,以方便多个程序通过引用该脚本文件、共享这些功能。此时,我们需要按照代码功能的不同,将代码分门别类地放在不同的脚本文件中,这些脚本文件就称为是模块(Module)。
  2、当要使用一个模块中的某些功能时,我们可以通过import方式将该模块导入。
    语法格式:
    import module1
    import module2
    …
    import moduleN
    或
    import module1, module2, ..., moduleN
  3、模块使用方法示例(斐波那契数列的前n项)
fibo.py
1 def PrintFib(n): #定义函数PrintFib,输出斐波那契数列的前n项
2     a, b = 1, 1 #将a和b都赋为1
3     for i in range(1,n+1): #i的取值依次为1,2,…,n
4         print(a, end=' ') #输出斐波那契数列的第i项
5         a, b = b, a+b #更新斐波那契数列第i+1项的值,并计算第i+2项的值
6     print() #输出一个换行
7 def GetFib(n): #定义函数GetFib,返回斐波那契数列的前n项
8     fib=[] #定义一个空列表fib
9     a, b = 1, 1 #将a和b都赋为1
10    for i in range(1,n+1): #i的取值依次为1,2,…,n
11     fib.append(a) #将斐波那契数列的第i项存入列表fib中
12   a, b = b, a+b #更新斐波那契数列第i+1项的值,并计算第i+2项的值
13   return fib #将列表fib返回
14 if__name__=='__main__':#只有单独执行fibo.py时该条件才成立
15 PrintFib(10) #调用PrintFib输出斐波那契数列前10项
16 ls=GetFib(10) #调用GetFib函数获取斐波那契数列前10项组成的列表
17 print(ls) #输出列表ls中的元素
testfibo.py
1 import fibo #导入fibo模块
2 fibo.PrintFib(5) #调用fibo模块中的PrintFib函数,输出斐波那契数列前5项
3 ls=fibo.GetFib(5) #调用fibo模块中的GetFib函数,得到斐波那契数列前5项的列表
4 print(ls) #输出ls中保存的斐波那契数列前5项
输出:
1 1 2 3 5 8 13 21 34 55
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
1 1 2 3 5
[1, 1, 2, 3, 5]
  提示:导入模块后,如果要使用该模块中定义的标识符,则需要通过“模块名.标识符名”的方式。
二、全局变量__name__和系统模块
  1、每个模块中都有的一个全部变量__name__。 __name__的作用是获取当前模块的名称,如果当前模块是单独执行的,则其__name__的值就是__main__;否则,如果是作为模块导入,则其__name__的值就是模块的名字。
  2、系统模块:
  可以直接导入系统提供的模块,使用其中的功能。
例:通过sys模块获取运行Python脚本时传入的参数。
1 import fibo #导入fibo模块
2 import sys #导入系统提供的sys模块
3 n=int(sys.argv[1]) #通过sys模块的argv获取执行脚本时传入的参数
4 fibo.PrintFib(n) #调用fibo模块中的PrintFib函数,输出斐波那契数列前n项
5 ls=fibo.GetFib(n) #调用fibo模块中的GetFib函数,得到斐波那契数列前n项的列表
6 print(ls) #输出ls中保存的斐波那契数列前n项
三、for...import语句
  1、除了使用import将整个模块导入,也可以使用from import将模块中的标识符(变量名、函数名等)直接导入当前环境,这样我们在访问这些标识符时就不再需要指定模块名。
    语法格式:
    from 模块名 import 标识符1, 标识符2, ..., 标识符N
  2、案例:
  (1)直接导入模块中的标识符
1 from fibo import PrintFib, GetFib #导入fibo模块中的PrintFib和GetFib
2 PrintFib(5) #忽略fibo模块名直接调用PrintFib函数
3 ls=GetFib(5) #忽略fibo模块名直接调用GetFib函数
4 print(ls) #输出ls中保存的斐波那契数列前5项数据
1 1 2 3 5
[1, 1, 2, 3, 5]
  (2)提示:如果要导入一个模块中的所有标识符,也可以使用“from模块名 import * ”的方式。例如,对于“from fibo import PrintFib,GetFib”,可以直接改为“from fibo import * ”。
如果一个模块定义了列表__all__,则from 模块名 import * 语句只能导入__all__列表中存在的标识符。例如,对于fibo.py脚本文件,如果在第一行加入__all__列表的定义__all__=['PrintFib'],则通过“from fibo import * ”只能导入fibo模块中的PrintFib、而不会导入GetFib。
  (3)无论是利用import导入模块、还是用from import导入模块中的标识符,在导入的同时都可以使用as为模块或标识符起别名。
例如:
 import fibo as f #导入fibo模块,并为fibo起了个别名f
 f.PrintFib(5) #调用fibo模块中的PrintFib函数,输出斐波那契数列前5项

  

 
 
 

posted on 2020-11-24 10:02  史振兴  阅读(126)  评论(0编辑  收藏  举报