python locals()和globals()用法

本文详细介绍了Python中locals()和globals()函数的用法,包括如何通过这两个函数访问和修改局部及全局变量,以及如何利用locals()进行动态变量定义。

1、locals() 和 globals() 是python 的内建函数,他们提供了字典的形式访问局部变量和全局变量的方式。

def test(arg):
    a=1
    b=2
    data_dict = {}
    print locals()
    print globals()


if __name__ == '__main__':
    test(3)

输出:

{'data_dict': {}, 'b': 2, 'a': 1, 'arg': 3}
{'__name__': '__main__', '__doc__': '\nimport serial\nser = serial.Serial(\'COM1\',1152
00)\n#ser.setBaudrate(115200)\n#ser.setByteSize(8)\n#ser.setStopbits(1)\nprint (ser.por
tstr)\nresult=ser.write("\n".encode("gbk"))\nprint(result)\ndata = ser.readline(0)\n#da
ta = ser.read()\nprint (data)\n', '__package__': None, '__loader__': <_frozen_importlib
_external.SourceFileLoader object at 0x000000000296F0B8>, '__spec__': None, '__annotati
ons__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'test.py', '__c
ached__': None, 'str_to_int': <function str_to_int at 0x00000000004C1EA0>, 'test': <fun
ction test at 0x00000000029681E0>}

 

2、locals() 返回是当前局部变量的深拷贝,修改locals() 中变量值的时候,实际上对于原变量本身是没有任何影响的。而globals()返回的是全局变量的字典,修改其中的内容,值会真正的发生改变。 

b = 5 # 定义一个全局变量
def test2():
    a=1
    locals()["a"] = 2  # 修改局部变量
    print "a=", a
    globals()["b"] = 6 # 修改全局变量
    print "b=", b

if __name__ == '__main__':
    test2()

输出:

a= 1
b= 6

3、使用locals来动态定义变量:(动态输出局部变量)

count=[1,2]
for i in range(len(count)):	
	print(i)
	locals()['a'+str(i)]=[1,2,3]
	print(locals()['a'+str(i)])
	print('ss:%s'%a0)
	
print(a1)

输出:

0
[1, 2, 3]
ss:[1, 2, 3]
1
[1, 2, 3]
ss:[1, 2, 3]
[1, 2, 3]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值