一道Python面试题,设置一个动态变量名

Firstly

各位应该做过服务器运维吧,像这样:

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取****,电子书籍,以及课程的源代码!
QQ群:101677771

一道Python面试题,设置一个动态变量名

那么,在服务器运维的程序中,最好的访问服务器的方式是:运维库名.服务器名

由于服务器名是动态的,所以变量名也是动态的。今天我们就来讲讲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]