美文网首页
Python3 模块

Python3 模块

作者: maskerII | 来源:发表于2019-10-30 16:36 被阅读0次
    #! /usr/bin/python
    # -*- coding: utf-8 -*-
    
    import sys
    print ('命令行参数')
    for i in sys.argv:
        print (i)
    print('Python 路径为:')
    print (sys.path)
    
    '''
    1、import sys 引入 python 标准库中的 sys.py 模块;这是引入某一模块的方法。
    2、sys.argv 是一个包含命令行参数的列表。
    3、sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表
    '''
    
    # import 语句
    '''
    想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:
    import module1[, module2[,... moduleN]
    当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
    搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端
    '''
    
    '''
    support.py
    
    #! /usr/bin/python
    # -*- coding: utf-8 -*-
    
    def print_func(str):
        print ('hello {}'.format(str))
        return 
    
    '''
    
    # import support
    # support.print_func('runoob')
    
    '''
    一个模块只会被导入一次,不管你执行了多少次import。
    当我们使用import语句的时候,Python解释器是怎样找到对应的文件的呢?
    这就涉及到Python的搜索路径,搜索路径是由一系列目录名组成的,
    Python解释器就依次从这些目录中去寻找所引入的模块
    
    搜索路径是在Python编译或安装的时候确定的,安装新的库应该也会修改。
    搜索路径被存储在sys模块中的path变量
    
    sys.path 输出是一个列表,其中第一项代表当前目录
    
    '''
    
    '''
    import support
    这样做并没有把直接定义在support中的函数名称写入到当前符号表里,只是把模块support的名字写到了那里。
    可以使用模块名称来访问函数
    
    模块的名称放在当前操作模块的字符表((_)开头的名称除外)
    
    如果你打算经常使用一个函数,你可以把它赋给一个本地的名称
    
    import support
    fib = support.fib
    print (fib(10))
    
    '''
    
    
    
    # from … import 语句
    '''
    Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:
    from modname import name1[, name2[, ... nameN]]
    
    模块内(函数,变量的)名称导入到当前操作模块的字符表((_)开头的名称除外)
    
    '''
    
    '''
    from support import fib
    print (fib(100))
    
    这个声明不会把整个support模块导入到当前的命名空间中,它只会将support里的fib函数引入进来
    '''
    
    # from … import * 语句
    '''
    把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
    from modname import *
    
    模块中的所有(函数,变量)名称都导入到当前模块的字符表(包括模块的名称 单一下划线(_)开头的名称除外)
    如果不同模块之间有相同的函数命名,最后导入的会覆盖前面的,也就是说只会调用到最后导入进的函数
    
    '''
    
    # __name__属性
    '''
    一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,
    模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行
    
    '''
    
    '''
    说明: 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。
    说明:__name__ 与 __main__ 底下是双下划线, _ _ 是这样去掉中间的那个空格
    
    '''
    
    # dir() 函数
    '''
    内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回
    
    import support
    print (dir(support))
    
    如果没有给定参数,那么 dir() 函数会罗列出当前定义的所有名称
    
    '''
    
    print (dir())
    
    
    # 包
    '''
    包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。
    比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B
    '''
    '''
    在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。
    目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块。
    最简单的情况,放一个空的 :file:__init__.py就可以了。当然这个文件中也可以包含一些初始化代码或者为(将在后面介绍的) __all__变量赋值。
    用户可以每次只导入一个包里面的特定模块
    
    '''
    
    '''
    import sound.effects
    sound.effects.echo()
    '''
    
    '''
    from sound.effects import echo
    echo()
    
    '''
    
    '''
    from sound import effects
    effects.echo()
    
    '''
    
    
    '''
    注意当使用 from package import item 这种形式的时候,
    对应的 item 既可以是包里面的子模块(子包),
    或者包里面定义的其他名称,比如函数,类或者变量
    
    '''
    
    '''
    导入语句遵循如下规则:如果包定义文件 __init__.py 存在一个叫做 __all__ 的列表变量,
    那么在使用 from package import * 的时候就把这个列表中的所有名字作为包内容导入
    如果 __all__ 真的没有定义,那么使用from sound import *这种语法的时候,
    就不会导入包 sound.effects 里的任何子模块
    
    from sound import *
    filters.vocoder()
    
    '''
    
    '''
    有个代码名称为 test1.py,它的所在路径为 D:\test 下面。
    只需要完成以下步骤就可以把它作为模块 import 到其他代码中了。
     1.import sys
     2.sys.path.append("D:\\test")
    在 test2.py 中我们就可以直接 import test1.py 了。成功导入后,test1中 的方法
    也就可以在 test2 中进行使用。
    
    import test1
    
    '''
    

    相关文章

      网友评论

          本文标题:Python3 模块

          本文链接:https://www.haomeiwen.com/subject/mtxavctx.html