1
ipwx 2018-12-05 18:55:37 +08:00 1
getattr(sys.modules[__name__], 'a{}'.format(i))
|
2
ipwx 2018-12-05 18:56:08 +08:00
话虽如此,但还是建议你做一个 function_map = {'a1': a1, 'a2': a2} 这样
|
3
ipwx 2018-12-05 18:56:24 +08:00 1
或者干脆 function_list = [a1, a2] 这样
|
4
u2gign OP 谢谢哈
|
5
wkx556874 2018-12-06 12:32:07 +08:00
a+str(i) 是否 指向的位置 和 a1 指向的位置一样?
如果不一样 args 肯定是不能接收这个参数的 我个人理解 (可能是错误的) 是 a1 是指向 函数的一个对象 而 你循环里的是 一个'a1'..'a2'.. 是有区别的. threading.Thread(target=self.run, args=(a+str(i), *args)).start() 里面的 a 是什么? 字符串? 还是什么, +str(i), 是想做字符串拼接 然后 动态的 a1 a2 a3 么? 这种情况 是不能这样操作 字符串拼接的 应该用 list, list 可以接收 函数 为成员, 把你的要用的函数全部放进 list 里面 (这一步很有说法 ) 再调用的时候 for 循环 list[i] 就可以了 此时 args 接收的就是一个函数的引用 |
6
wkx556874 2018-12-06 12:36:06 +08:00
总的来说 你要确保你在循环里 调用的是一个 方法的引用 也就是方法名
而不是其他的 比如 'a1' 一个像方法名的字符串 这是肯定不行的 至于怎么去确保不调错, 我推荐自己去摸索 我也是新手 也说不清楚 还可能是错误的. |