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()
  • 相关阅读:
    优先队列
    Problem W UVA 662 二十三 Fast Food
    UVA 607 二十二 Scheduling Lectures
    UVA 590 二十一 Always on the run
    UVA 442 二十 Matrix Chain Multiplication
    UVA 437 十九 The Tower of Babylon
    UVA 10254 十八 The Priest Mathematician
    UVA 10453 十七 Make Palindrome
    UVA 10163 十六 Storage Keepers
    UVA 1252 十五 Twenty Questions
  • 原文地址:https://www.cnblogs.com/wing1995/p/4968127.html
Copyright © 2011-2022 走看看