python3使用exec来动态加载模块

xxglsvr.py

import sys

# locals() 函数来得到一个局部变量字典。
# 之后你就能从局部字典中获取修改过后的变量值了
def main(procName):
  loc = locals()
  exec("from %s import call_sub" % procName)
  call_sub = loc['call_sub']
  call_sub("private " + procName)

if __name__ == '__main__':
  # 在全局变量中不用定义 locals()
  procName = "xxglsvr01"
  exec("from %s import call_sub" % procName)
  call_sub("public " + procName)

  main("xxglsvr01")
  main("xxglsvr02")

---------------------------------------------------------------------------

xxglsvr01.py

import sys

def call_sub(params):
  print("call xxglsvr01(%s)" % params)

---------------------------------------------------------------------------

xxglsvr02.py

import sys

def call_sub(params):
  print("call xxglsvr02(%s)" % params)

猜你喜欢

转载自www.cnblogs.com/zsfishman/p/11404305.html
今日推荐