1. 程式人生 > >[Python]小甲魚Python視頻第051課(__name__屬性、搜索路徑和包)課後題及參考解答

[Python]小甲魚Python視頻第051課(__name__屬性、搜索路徑和包)課後題及參考解答

auth use shc trac 不想 __main__ 測試題 獲得 模塊

# -*- 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()

  

[Python]小甲魚Python視頻第051課(__name__屬性、搜索路徑和包)課後題及參考解答