zoukankan      html  css  js  c++  java
  • python基础--模块

    1、模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。

      模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。

      例子:sys.argv 是一个包含命令行参数的列表

    import sys
     
    print('命令行参数如下:')
    for i in sys.argv:
       print(i)
     
    print('
    
    Python 路径为:', sys.path, '
    ')

    2、导入自己写的模块import

      定义test.py

    def method():
        print("method...")

      定义hello.py

    import test
     
    test.method()

      test.py和hello.py在同一目录下,执行python .hello.py,报错 ModuleNotFoundError: No module named 'test'

      import导入模块时的搜索路径

        打印sys.path结果:

        - Python 路径为: ['D:\DevTools\python-3.7.4-embed-amd64\python37.zip', 'D:\DevTools\python-3.7.4-embed-amd64']

        - sys.path 输出是一个列表,第一项是空串,代表当前目录;我本地安装的Python的sys.path第一项不是空串

      了解了搜索路径的概念,就可以在脚本中修改sys.path来引入一些不在搜索路径中的模块:sys.path(环境变量)

       修改hello.py

    import sys
    sys.path.append("D:pythondemo")
    import test
     
    test.method()

    上面使用的是python 3 解压版,改用 python-3.8.2-amd64.exe

    3、from … import 语句

      from modulename import  name1, name2...

      from modulename import *

    4、__name__属性

      __name__: 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。

    5、dir() 函数

      内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回:

      print(dir(test))结果:['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'method']

    6、包

      hello.py

    import sys
    sys.path.append("D:pythondemo")
    import a.b.test
     
    a.b.test.method()

      test.py

    def method():
        print("method...")

      通过import a.b.test这样导入模块,使用的使用也要带包。可以使用as关键字将导入的模块重新命名,比如

    import sys
    sys.path.append("D:pythondemo")
    import a.b.test as test
     
    test.method()

      还有一种导入子模块的方法是:

    import sys
    sys.path.append("D:pythondemo")
    from a.b import test
     
    test.method()

      还有一种变化就是直接导入一个函数或者变量:

    import sys
    sys.path.append("D:pythondemo")
    from a.b.test import method
     
    method()

    7、__all__

      从一个包中导入* ,被导入的模块最好使用__all__来指定导入的内容(比如函数或变量)。

      test.py

    __all__ = ["method", "method2"]
    
    def method():
        print("method...")
    def method2():
        print("method2...")
    
    def main():
        method()
        method2()
    
    if __name__ == '__main__':
        main()

      hello.py

    import sys
    sys.path.append("D:pythondemo")
    from a.b.test import *
     
    method()
    method2()

    8、__init__.py和__all__的使用

       __init__.py

    __all__ = ["test"]
    from . import test

      test.py

    __all__ = ["method", "method2"]
    
    def method():
        print("method...")
    def method2():
        print("method2...")
    
    def main():
        method()
        method2()
    
    if __name__ == '__main__':
        main()

      main.py

    import sys
    sys.path.append("D:pythondemo")
    
    # import a
    # a.test.method()
    
    from a import *
    test.method()

     ---

  • 相关阅读:
    git提交代码到远程仓库github
    git报错记录
    关于VSCode的一些设置
    css之列表数据前加上小方框
    EChats使用报错之 《"TypeError: Cannot read property 'getAttribute' of undefined"》
    EChats使用之给图表加箭头以及渐变
    vue报错之(Do not use v-for index as key on <transition-group> children)
    在vue项目中使用mock模拟数据
    Vue项目中关于EChats的使用
    使用mock数据实现登录时的一次bug记录
  • 原文地址:https://www.cnblogs.com/xy-ouyang/p/11707447.html
Copyright © 2011-2022 走看看