一、巧用eval
data = {"1": {"2": {"3": "測試"}}} def aaa(*args): a = "data{}".format(''.join(['["{}"]'.format(i) for i in args])) return eval(a) print(aaa("1")) print(aaa("1", "2")) print(aaa("1", "2", "3")) # 運行結果 # {'2': {'3': '測試'}} # {'3': '測試'} # 測試
二、四舍五入
from decimal import * # 保留3位小數,四舍五入到整數位,如果是0.0則是四舍五入到小數點第一位 a = '%.3f' % (Decimal("3.523").quantize(Decimal('0'), ROUND_HALF_UP)) print(a, type(a))
三、字符串加載模塊
# 1.根據字符串調用函數 import time str = 'time' eval('print')(1) # 等於print(1) print(eval(str).time()) # 2.根據字符串來加載模塊import_module from importlib import import_module model_test = import_module(str) print(model_test.time()) # 2.根據字符串來加載模塊__import__ model_test = __import__(str) print(model_test.time()) # 通常在動態加載時可以使用到這個函數,比如你希望加載某個文件夾下的所用模塊, # 但是其下的模塊名稱又會經常變化時,就可以使用這個函數動態加載所有模塊了
四、獲取項目根目錄
def root_path(): p = os.getcwd() while True: if os.path.split(p)[1] == '目標路徑': break p = os.path.dirname(p) return p