使用下面的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在if中会覆盖变量b。有没有办法在if语句中创建一个局部变量b?我想在if中使用相同的变量名和局部作用域。
发布于 2016-06-29 01:00:46
这两个代码并不等价;在Perl代码中,if块中的my创建了一个全新的变量,当包含的块结束时,该变量就会超出作用域。
您可以在Python中使用上下文管理器执行类似的操作,但语法会有很大不同。
发布于 2016-06-29 01:16:25
这就是你要找的吗?
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: 9b是函数my_func中等于apple的局部变量,不影响等于9的全局变量b。
https://stackoverflow.com/questions/38081572
复制相似问题