采用以下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
内使用与本地范围相同的变量名。
答案 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
。