• Python模块调用方式详解


                     Python模块调用方式详解

                                              作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

      模块,用一砣代码实现了某个功能的代码集合。 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。接下来就让我们一起学习一下Python中模块调用方式吧。

    一.什么是模块

      在计算机程序的开发过程中,随着程序代码, 在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放在不同的文件里,使得每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个“*.py”文件就成为一个模块(Module)

    二.模块的优点

      1>.提高了代码的可维护性(可能性更好);

      2>.编写代码不必从零开始,当一个模块编写完毕,就可以被其他地方引用,也经常引用其他模块,包括Python内置的模块和来自第三方的模块.所以,模块分为三类:

        a>.Python标准库

        b>.第三方模块

        c>.应用程序自定义模块

      3>.使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别在不同的模块中,因此,我们自己在编写模块时,不必要考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。

    三.Python导入模块的方式

     1 #!/usr/bin/env python3
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 #方法一:
     7 '''
     8     import modname
     9     提示:这种导入方法适合用在导入内置模块(如:os,sys.time等等)或者导入第三方库时使用!
    10 '''
    11 #用法展示
    12 import sys
    13 #方法2
    14 '''
    15     from modname import funcname   & from modname import *
    16     提示:这种用适合用在包文件的导入,相对导入,绝对导入就是用他实现的!不建议使用from modname import *   这种方法导入!
    17 '''
    18 #用法展示:
    19 from os import chown,chmod
    20 #方法3
    21 '''
    22     mymodule = __import__ (’module_name’)
    23 '''
    24 #友情提示
    25 '''
    26     不主张从一个包或模块中用import * 导入所有模块,因为这样的通常会导致可读性很差。
    27     from Package import specific_submodule的用法并没有错,实际上这还是推荐的用法,除非导入的模块需要使用其它包中的同名子模块(the importing module needs to use submodules with the same name from different packages). 
    28          综上所述,一般情况应该使用import , 但有几个例外 
    29         1>.module文档告诉你要用from-import的 
    30         2>.导入一个包组件。需要一个包里面的某个子模块,一般用from A.b import c比import A.b.c 更方便 且不会冒混淆的危险.
    31 '''

    四.import 语句

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 
     8 x = 2018
     9 
    10 
    11 def get():
    12     print(x)
    13 
    14 def set():
    15     global x
    16     x=100
    module1.py
     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 import module1
     8 
     9 import module1          #第二次调用,不会再次执行该模块,只是完成了一次引用。一个模块可以在当前位置import多次,但只有第一次
    10 # 导入会执行源文件内的代码,原因是:第一次导入就会将模块包含的内容统统加载到内存了,以后在当前文件位置的导入都是指向内存中已有的模块。
    11 
    12 import os,sys,time          #我们可以同时导入多个模块,不建议这样干,可读性差!
    13 
    14 x = "yinzhengjie"
    15 
    16 print(module1.x)
    17 
    18 module1.get()
    19 
    20 module1.set()
    21 
    22 module1.get()
    23 
    24 print(x)
    25 
    26 
    27 
    28 
    29 #以上代码执行结果如下:
    30 2018
    31 2018
    32 100
    33 yinzhengjie

    五.导入模块是起别名

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 
     8 import logging as log
     9 
    10 log.error("This yinzhengjie's test error !")
    11 
    12 
    13 
    14 
    15 #以上代码执行结果如下:
    16 ERROR:root:This yinzhengjie's test error !

    六.from…import 语句 

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 
     8 x = 2018
     9 
    10 
    11 def get():
    12     print(x)
    13 
    14 def set():
    15     global x
    16     x=100
    module1.py
     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 
     8 # from module1 import x,get,set           #只导入module1模块中的部分变量。推荐使用这种方法。
     9 
    10 from module1 import *                   #将module1模块中所有的数据都导入到内存,不建议这样干!from…import* 语句提供了
    11 # 一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。大多数情况, Python程序员不使用这种方法,
    12 # 因为引入的其它来源的命名,很可能覆盖了已有的定义。它和“import module1”调用方式是不同的!
    13 
    14 
    15 print(x)
    16 
    17 get()
    18 
    19 set()
    20 
    21 get()
    22 
    23 def get():
    24     print("yinzhengjie")
    25 
    26 get()
    27 
    28 
    29 
    30 
    31 #以上代码执行结果如下:
    32 2018
    33 2018
    34 100
    35 yinzhengjie
  • 相关阅读:
    POJ 2752 Seek the Name, Seek the Fame
    POJ 2406 Power Strings
    KMP 算法总结
    SGU 275 To xor or not to xor
    hihocoder 1196 高斯消元.二
    hihoCoder 1195 高斯消元.一
    UvaLive 5026 Building Roads
    HDU 2196 computer
    Notions of Flow Networks and Flows
    C/C++代码中的笔误
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/8586301.html
Copyright © 2020-2023  润新知