scope_guard_cn.rst 1.1 KB
Newer Older
H
Hao Wang 已提交
1 2 3 4 5
.. _cn_api_fluid_scope_guard:

scope_guard
-------------------------------

6

H
Hao Wang 已提交
7 8
.. py:function:: paddle.fluid.scope_guard(scope)

S
swtkiwi 已提交
9 10 11 12
:api_attr: 声明式编程模式(静态图)



Y
Youwei Song 已提交
13 14 15 16 17 18

该接口通过 python 的 ``with`` 语句切换作用域(scope)。
作用域记录了变量名和变量 ( :ref:`api_guide_Variable` ) 之间的映射关系,类似于编程语言中的大括号。
如果未调用此接口,所有的变量和变量名都会被记录在默认的全局作用域中。
当用户需要创建同名的变量时,如果不希望同名的变量映射关系被覆盖,则需要通过该接口切换作用域。
通过 ``with`` 语句切换后,``with`` 语句块中所有创建的变量都将分配给新的作用域。
H
Hao Wang 已提交
19 20

参数:
Y
Youwei Song 已提交
21
  - **scope** (Scope) - 新的作用域。
C
chengduo 已提交
22 23

返回:无
H
Hao Wang 已提交
24 25 26 27 28

**代码示例**

.. code-block:: python

C
chengduo 已提交
29 30
    import paddle.fluid as fluid
    import numpy
H
Hao Wang 已提交
31

C
chengduo 已提交
32 33 34 35 36
    new_scope = fluid.Scope()
    with fluid.scope_guard(new_scope):
         fluid.global_scope().var("data").get_tensor().set(numpy.ones((1, 2)), fluid.CPUPlace())
    data = numpy.array(new_scope.find_var("data").get_tensor())
    print(data)  # [[1. 1.]]