1. 程式人生 > 實用技巧 >Python3技巧:動態變數名

Python3技巧:動態變數名

Firstly

各位應該做過伺服器運維吧,像這樣:

那麼,在伺服器運維的程式中,最好的訪問伺服器的方式是:運維庫名.伺服器名

由於伺服器名是動態的,所以變數名也是動態的。今天我們就來講講Python3裡面如何實現動態變數名。

globals函式

格式如下:

1 glabals()[字串形式的變數名] = 值

這種方式只能設定全域性變數。

例子:

import random
x = random.randint(1,9)
globals()['hel'+str(x)] = 9
print(globals())

輸出:

{'__name__': '__main__', '__doc__
': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'hel9': 9} >>> hel9 9

format函式+exec函式

格式:

#動態變數名
exec('''{0} = {1}'''.format(變數名,值))
#動態類名
exec('''class {0}:
            程式碼
'''.format(類名)) #動態函式名 exec('''def {0}: 程式碼'''.format(函式名))

這種方法可以定義動態變數名,動態類名、函式名。

例子:

exec('''b{0} = [1,2,3]'''.format(__import__('random').randint(1,9)))
print(globals())

輸出:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter
'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>,'b4': [1, 2, 3]} >>> b4 [1,2,3]