[Python]小甲鱼Python视频第051课(__name__属性、搜索路径和包)课后题及参考解答

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 26 23:45:37 2019

@author: fengs
"""


"""
测试题(笔试,不能上机哦~)
"""

"""
0. __name__ 属性的含义是什么?
    当前运行的模块名

1. 什么时候 __name__ 属性的值是 "__main__"?
   作为独立程序: __main__
   作为模块被引入:__name__的属性就是模块名
    
2. 如果获得当前 Python 的搜索路径?
    import sys
    print(sys.path)
3. 如果你不想将相关的模块文件放在当前文件夹内,那最好的选择是?
    方法1: sys.path.append(相关的模块文件所在路径)
    方法2: 把相关的模块文件放在已有的搜索路径中--->site-packages
    
4. 如果你见到 import urllib.request 语句,那么这个 urllib 是什么?
    包名
    a.新建一个文件夹,文件夹名称就是包名
    b.在文件夹中创建一个 __init__.py 文件,可以为空
    c.把相关的模块文件放在文件夹中
    
    import 包名.模块名
5. Python 如何区分一个文件夹是普通文件夹还是包?
    文件夹中是否有 __init__.py文件
    
"""
print(__name__) # ----->  __main__
class Test:
    def __init__(self):
        print(__name__)
test = Test()





"""
动动手0.
0. 执行下边 a.py 或 b.py 任何一个文件,都会报错,请改正程序。
注:这道题原理跟上一节课的课后作业(测试题 4、5)类似,如果上节课你搞懂了,这道题应该可以想出解决方案,不要轻易看答案,除非你已经抓破头皮…….

# a.py
import b

def x():
    print('x')

b.y()

# b.py
import a

def y():
    print('y')

a.x()

执行 b.py 引发下边异常:
>>> 
Traceback (most recent call last):
  File "/Users/FishC/Desktop/b.py", line 1, in <module>
    import a
  File "/Users/FishC/Desktop/a.py", line 1, in <module>
    import b
  File "/Users/FishC/Desktop/b.py", line 6, in <module>
    a.x()
AttributeError: 'module' object has no attribute 'x'

"""


# a.py
import b
def x():
    print('x')
if __name__ == '__main__':
    b.y()
    
# b.py
import a
def y():
    print('y')
if __name__ == '__main__':
    a.x()

  

posted @ 2019-03-27 00:12  Alimy  阅读(428)  评论(0编辑  收藏  举报