python实用方法和模块【decimal、eval、import_module、获取项目根目录等】


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM