天天看點

python子產品調用問題說明

一、調用内置子產品

1. 調用子產品

import time
print(time.ctime())
           

2. 直接導入ctime()函數

from time import ctime
print(ctime())
           

3. 導入time子產品下多個函數

4. 導入time子產品下所有函數

此方法适用于會适用到子產品中所有函數,但又不想在每個函數前加time
from time import *
print(ctime())
sleep(2)
print(ctime())
           
如果導入的函數剛好與自己定義的函數重名,可使用"as"進行重命名
from time import sleep as sys_sleep

def sleep():
    print("this is I defined sleep")

sleep()
sys_sleep(2)
           

二、自定義子產品

python子產品調用問題說明
  1. calculator.py
def add(a, b):
    return a + b
           
  1. test.py
from calculator import add

print(add(4, 5))
           
補充:當在運作test.py之後,project目錄下多了一個__pycache/calculator.cpython-37.pyc檔案為了提高子產品加載速度,每個子產品都會在__pycache__檔案夾中放置該子產品的預編譯子產品,命名為module.version.pyc

三、跨目錄調用子產品

python子產品調用問題說明
此種情況,先使用"sys.path"檢視python的搜尋路徑,發現module不在搜尋路徑中,這樣也就導緻,我們無法直接導入calculator檔案

解決:我們隻需要把module檔案夾加入到python的搜尋路徑下即可

1.絕對路徑添加(可移植性差)

import sys
sys.path.append("D:\\python\\demo\\project2\\module")
from calculator import add
print(add(2, 3))
           

2.相對路徑添加(必須保證相對目錄層級不改動)

import sys
import os

project_path = os.path.dirname(os.path.dirname(abspath(__file__)))
sys.path.append(project_path + 'module')

from calculator import add
print(add(2, 3))
           

四、編寫自測代碼

calculator.py

def add(a, b):
    return a + b

if __name__ == '__main__':
# 測試代碼
    c = add(3, 5)
    print(c)