一、巧用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