zoukankan      html  css  js  c++  java
  • 小甲鱼第51讲:《__name__="__main__"、搜索路径和包》课后练习题

    测试题:

    0. __name__属性指的是在调用该模块的时候调用的函数名称,方便在模块的被调用的时候,模块内部被调用的函数不会被运行。


    1. 当模块作为主程序运行的时候,__name__属性的值是“__main__”,当该模块被调用导入到另一个模块的时候,"__name__"属性值为模块名称。


    2. 通过sys模块的path变量显示搜索路径:

    1 import sys
    2 sys.path

    3. 将相关模块文件的路径加入到搜索路径中,例如:

    1 import sys
    2 sys.path.append("*****") # *****表示模块坐在路径

    但是这里小甲鱼推荐把包最好都存放在python的安装路径里面的sitepackages文件夹内,顺便说一下,安装包的时候,比如numpy直接在官网下载wheel源代码文件然后存入sitepackages文件夹内就可以直接调用numpy这个包里面的所有模块和函数了,再次感谢开源的好处。

    4. urllib属于包,request属于包里面的模块

    5. 包其实就是在普通文件夹内添加了文件“__init__.py”的模块文件,文件夹内拥有模块,此时文件夹就是一个包了,所以文件夹是否是包的最大区别就是是否拥有“__init__.py”模块。其中这个__init__.py文件就是一个初始化文件,可以为空,也可以写入一些初始化的代码。

    动动手:

    0. 修改以下程序:

     1 # a.py
     2 import b
     3 
     4 def x():
     5     print('x')
     6 
     7 b.y()
     8 
     9 # b.py
    10 import a
    11 
    12 def y():
    13     print('y')
    14 
    15 a.x()
    16 
    17 执行 b.py 引发下边异常:
    18 >>> 
    19 Traceback (most recent call last):
    20   File "/Users/FishC/Desktop/b.py", line 1, in <module>
    21     import a
    22   File "/Users/FishC/Desktop/a.py", line 1, in <module>
    23     import b
    24   File "/Users/FishC/Desktop/b.py", line 6, in <module>
    25     a.x()
    26 AttributeError: 'module' object has no attribute 'x'

    最好的方式,是单独建立一个模块,用来调用a和b模块,因为a与b两个模块不会被互相调用,否则因为任何一个模块的不完整而报错:

    1 # test.py
    2 
    3 import a
    4 import b
    5 a.x()
    6 b.y()

    还有一个方式,如果不想建立一个单独的模块,可以这样(程序就不会报错了):

    1 # a.py
    2 # import b
    3 
    4 
    5 def x():
    6     print('x')
    1 # b.py
    2 import a
    3 
    4 
    5 def y():
    6     print('y')
    7 
    8 if __name__ == "__main__":
    9     a.x()
  • 相关阅读:
    MySQL正则表达式 REGEXP详解
    INSERT DELAYED 句法
    mysql查询语句分析 explain用法
    mysql导出导入
    sf04_操作系统中 heap 和 stack 的区别
    2.4 Rust Ownership
    2.1 GO 变量定义
    1.3 IDAE 中使用GO开发项目
    my30_表碎片整理
    my29_PXC集群状态查看
  • 原文地址:https://www.cnblogs.com/wing1995/p/4968127.html
Copyright © 2011-2022 走看看