采用以下 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
内使用与局部作用域相同的变量名。
代码不相同;在 Perl 代码中,
my
块内的 if
创建一个全新的变量,当包含块结束时,该变量将超出范围。
您可以使用 Python 中的上下文管理器执行类似的操作,但语法会有很大不同。
这是您要找的吗?
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
。