根据官方文档可以得到这样的用法

1
2
3
4
5
6
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy([email protected])

import sys
mod = sys.modules[__name__]

这个特性可以应用在什么场景呢?当模块中的方法有什么共同特性时,我们可以配合 getattr 方法来进行动态调用,而不必编写复杂的判断语句。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy([email protected])
# Description:

def format_size(size: int):
'''格式化大小'''
unit = {
0: 'B',
1: 'K',
2: 'M',
3: 'G',
4: 'T',
}

for i in range(6):
if 1024 ** i <= size < 1024 ** ( i + 1 ):
if i > 0:
size = size / 1024 ** i
return '{:0.1f}{}'.format( size, unit[i])
return '{}B'.format(size)


if __name__ == "__main__":
import sys
module = sys.modules[__name__]
args = sys.argv[1:]
func_name = args[0]
func = getattr(module, func_name)
res = func(int(args[1]))
print(res)

# 调用方法
# $ python utils.py format_size 1024
03-16 13:18