欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何批量生成变量并赋值?——python 中 globals() 函数

程序员文章站 2022-06-28 17:11:51
python中globals()函数的作用2020/12/29 HongminPython 3.6.3 |Anaconda custom (64-bit)|【问题引入】python中定义变量并赋值时,可以用下面的格式:变量名 = 值比如,想定义变量number,并赋值为5,可以用这个语句: number = 5但是,如果想生成从number1、number2、number3……number100,分别赋值为1、2、3……100,应该如何操作呢?globals()函数......

python中globals()函数:如何批量生成变量并赋值?

2020/12/29 Hongmin
Python 3.6.3 |Anaconda custom (64-bit)|

【问题引入】
python中定义变量并赋值时,可以用下面的格式:
变量名 = 值
比如,想定义变量number,并赋值为5,可以用这个语句: number = 5
但是,如果想生成从number1、number2、number3……number100,分别赋值为1、2、3……100,应该如何操作呢?

globals()函数】
以字典形式返回包含当前作用域全局变量。

In[5]: globals??
Signature: globals()
Docstring:
Return the dictionary containing the current scope's global variables.
# 返回包含当前作用域全局变量的字典。
NOTE: Updates to this dictionary *will* affect name lookups in the current
global scope and vice-versa.
Type:      builtin_function_or_method

通过globals()函数,可以实现批量生成变量名并赋值的目的。回到之前的问题,可以用如下代码实现:

In[9]: names = globals()
  ...: for i in range(1,100):
  ...:     names ['number%s' % i] = i
  ...: print(number1)
  ...: print(number14)
  ...: print(number88)
1
14
88

生成的变量如下图所示:
如何批量生成变量并赋值?——python 中 globals() 函数
——————补充——————

【关键字 global

在python中,函数内部声明的变量称为局部变量;而全局变量,顾名思义,则是在整个py文件中声明的变量,作用域是全局作用域。

由于函数内部的运算不能改变函数外的变量,因此,如果在函数中改变全局变量,需要在函数内声明变量是全局变量才可以。

比如,已知变量a的值是5,想通过函数plus_a(n)实现a+n的计算过程,如果写成如下代码,是无法实现的:

In[10]: a = 10
   ...: def plus_a(n):
   ...:     a = a + n
   ...:     return a
   ...: 
In[11]: plus_a(10)
Traceback (most recent call last):
  File "D:\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-11-feed4f90e5e8>", line 1, in <module>
    plus_a(10)
  File "<ipython-input-10-c89608433294>", line 3, in plus_a
    a = a + n
UnboundLocalError: local variable 'a' referenced before assignment
# 报错:在引用局部变量a前并未对a赋值

在这段代码中,plus_a()内的a是局部变量,和全局变量a指向的是两个不同的变量。因此,在函数内部,并没有给局部变量a赋值,故报错。

这段代码应该改为:

In[12]: a = 10
   ...: def plus_a(n):
   ...:     global a
   ...:     a = a + n
   ...:     return a
   ...: 
In[13]: plus_a(10)
Out[13]: 20
In[14]: a
Out[14]: 20

这样,就可以通过函数对全局变量进行修改了。

本文地址:https://blog.csdn.net/yang_hmin/article/details/111932618

相关标签: python笔记 python