Python 模块里函数的调用方法和import语句的作用(适合初学者理解函数的调用)

一、五种函数调用方法(不够准确、全面,但初学者可以先这样理解):

一是自建函数位于builtins模块中的函数,可直接调用。具体有那些函数?可通过dir(__builtins__)查看,共计152个(‘len(dir(__builtins__))’)。

二是通过"import 模块"调用。如:import Boob,调用Boob模块中的函数(如toch时),使用方式是Boob.toch(),Boob.toch。这种方式的缺点是需要频繁的写被调用的模块。

三是通过"from 模块 import X1,X2,X3,.."。如:from sys import argv或__name__。意思是直接将模块sys中的argv或__name__函数导入到当前模块(文件)中,接下来可以直接使用argv,而不需要这样sys.argv使用。实际上是在当前模块中创建了新变量argv 或__name__,只是在赋值前两个变量引用同一个值,一个隐含的赋值过程。若引用了属性是可变动的变量,如属性是列表,需特别小心。缺点是变量及值容易弄混;如调用很多的话,需要在后面加很多X1,X2,...。

四是通过"from 模块 import *"调用。如:from sys import *。这种方式可以调用被导入模块的所有变量(若不想被创建同名变量,如在sys里,可以用下划线作为开头命名变量,象__doc__就不会被调用;还可以在模块中,如在sys里,定义一个__all__变量,用字符串列出允许被from sys import *调用的名称,__all__=[x1,x2,..])。此方法虽然不被官方推荐,因为“判定一个特殊的函数或属性是从哪来的有些困难,并且会造成调试和重构都更困难”。但这种方法对初学者或是编制代码少的文件来说,是最直接最粗暴也是最方便的方法。

五是通过"import 模块 as"。如:import sys as A。给模块sys起个别名叫A,帮助记忆。在当前所在模块的module实例上sys名称失效,只认A。此方法缺点是易发生命名空间冲突。

二、import语句的作用。

    import就是用来导入模块的,它可以出现在程序中的任何位置。但需要注意的是最好把导入模块放在代码的开头,因为这和作用域有关系。这样解释器在执行语句时,遵循作用域原则。即:如果在顶层导入了模块,它的作用域是全局的;如果在函数内部导入了模块,它的作用域只是局部的,不能被其它函数使用;如果其它函数也需要调用这个模块,还需要再次导入比较麻烦。

    import语句导入模块时,最好按照这样的顺序:1、python标准库模块;2、python第三方模块;3、自定义模块

    当import某个模块而使得指定的.py(如sys.py)文件被加载时,python解释器会为它创建一个module实例,并创建一个模块名称来引用它,如dir(sys),实际上是查询SYS名称引用的module实例上有哪些属性名称可以存取。想要知道当前已加载的module实例的名称与实例有哪些,可通过sys.modules,这是个字典对象,键的部分是模块名称,值的部分是module实例。若调用dir()未指定任何module实例,则会查询当前所在模块的module实例上拥有的名称。


    以后会写Python 模块里函数执行,敬请关注。欢迎提出改进意见。

你可能感兴趣的:(网上收集python相关资料)