如何在Python中创建块范围的变量?

时间:2016-06-28 16:28:47

标签: python scope

采用以下Perl代码:

$a = 5;

if($a == 5)
{
    print $a;
    my $a = 8;
    print $a;
}

print $a;

这会输出585,因为my $a会创建一个新的词法变量,其范围限定为if块。

我想在Python中做同样的事情,但是这个:

a = 5;
b = 9;

if a == 5:        
    print "inside function", b
    b = 'apple';

print b

输出

inside function 9
apple

变量b会在if内被覆盖。有没有办法在b语句中创建局部变量if?我想在if内使用与本地范围相同的变量名。

2 个答案:

答案 0 :(得分:0)

代码不相同;在Perl代码中,my块内的if创建了一个全新的变量,当包含块结束时,该变量超出了范围。

您可以使用Python中的上下文管理器执行类似操作,但语法会有很大差异。

答案 1 :(得分:0)

这是你正在寻找的吗?

a = 5
b = 9

def my_func(a):
    if a == 5:        
        b = 'apple'
        print("inside function: ", b)

my_func(a)
print("outside function: ", b)

> inside function: apple
> outside function: 9

b是函数my_func内的局部变量,等于apple,而不会影响等于b的全局变量9