神奇的 eval 和 exec 函数
1. _l1 = eval("list('abc')")
2. _l2 = [1, 2, 3]
3.
4. for i, j in zip(_l1, _l2):
5. exec('%s = %d' % (i, j))
6.
7. print(a, b, c)
上述代码中,_l1的值获取可以经由 eval函数将 一句代码实现,等同于
1. _l1 = list('abc')
而第5行可以实现赋值操作,直接从 list 内获取变量名,不需要预先定义,这个在存在多次类似赋值操作的场景下非常适用。
例如:读数据库参数的配置文件
1. server=127.0.0.1:6666
2. user=testuser
3. password=test
4. database=fortest
5. charset=utf8
1. with open("config.txt", 'r') as _file:
2. _line = _file.readline().strip()
3. while _line:
4. exec("%s = '%s'" % (_line.split('=')[0], _line.split('=')[1]))
5. _line = _file.readline().strip()
6.
7. import pymssql
8. conn = pymssql.connect(server, user, password, database, charset)
9. cursor = conn.cursor()