zoukankan      html  css  js  c++  java
  • python--包、模块调用

    Python中一个文件夹可以称作为一个包,文件夹下的文件可以称为模块

    模块之间可以相互调用

    在一个文件下创建两个py文件,里面的变量等,是可以相互调用的

    m1.py

    b = [1,2,3,4]
    m2.py
    import m1
    print(m1.b)

     也可以

    import m1 as m  (嵌套的层级太多时,避免输入过长字符)

    print(m.b)

    python import 的另一种方法:

    from m2 import b
    print(b)

     import 导入的是具体的模块,from导入的是具体的模块加变量

    当导入的变量很多是可以用 *  代替

    模块内置的系统变量

    m1.py

    __all__ = ['a','c']

    a = 2

    c = 3

    d = 4

    m2.py

    from m1 import *

    print(a)

    print(c)

    print(d)

    这是只会打印出a和c,但是如果先打印d,则不会打印出c,因为代码执行到print(d)会报错。

    代码换行

    代码末尾添加

    也可以使用()

    from m1 import a,b

    c

    print(a)

    from m1 import (a,b

    c)

    print(a)

    导入一个包下的模块或变量到另一个文件中,该包下的 __init__.py 也会跟随自动执行

    __init__.py的作用:

    批量导入变量

    __init.py

    import sys
    import datetime
     
    m3.py
    import t
    print(t.sys.path)
     
    目录层级关系:
    D:filespython \__init__.py
    D:filespythonm3
     
     

    __init__.py 添加 __all__ = ['m1']

    在另一个文件导入* 时,只会打印出m1内的变量,不会打印其他模块的变量。

    注意包和模块导入:

    包和模块是不会被重复导入的

    避免循环导入,循环导入:两个文件相互引用变量,也可能是多个文件相互引用,形成了一个闭环。

    m5.py

    from m5 import m5
    m4 = 1
     
    m4.py
    from m4 import m4
    m5 = 6

    print(m4)

    这样会报错的

    导入一个模块时,模块里的全部代码也会被执行。

    m4.py

    m4 = 1
    print(m4)
     
    m5.py
    import m4
    m5 = 6
     
    执行m5.py 时 同样会打印出m4
     
    注意:在另一文件运行导入模块时,一定要先保存导入的模块内容。


    当你的才化撑不起野心时,还是安静下来学习吧!
  • 相关阅读:
    K好数
    最大最小公倍数
    十六进制转十进制
    利用malloc定义数组
    01字串
    ubuntu 14.04 下jdk和sdk+eclipse 的配置
    Mysql3
    求最大连续子串
    UC笔试
    java实现随机洗牌算法
  • 原文地址:https://www.cnblogs.com/carl007/p/12013206.html
Copyright © 2011-2022 走看看