在下面的代码中,' message'变量在P1中打印了正确的值,但在P2中没有打印任何内容。我按照编写这段代码的教程,看起来和他写的非常相似。我使用的是Python 3.6。有人可以解释原因吗?
public static function userAssignMachine($userid,$machineid,$url) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => array(
'userid' => $userid,
'machineid' => $machineid
)
));
$resp = curl_exec($curl);
curl_close($curl);
}
答案 0 :(得分:4)
是的,如@see所提到的......除了表单缩进之外,您的代码将导致Stack Overflow:
也许您的代码应如下所示:
def outer_function(msg):
message = msg
print(message) #P1
def inner_function():
print(message) #P2
return inner_function()
outer_function("hello")
答案 1 :(得分:0)
除了错误的缩进(我假设是一个拼写错误),你的inner_function
会永远递归地调用它自己,所以我希望这里有一个堆栈溢出。
答案 2 :(得分:0)
通常闭包只是能够记住外部函数变量的内部函数,即使外部函数超出范围也是如此。
所以我希望你的代码能够 正确地缩进工作就像应该的那样。
def outer_function(msg):
message = msg print(message) #P1
def inner_function():
print(message) #P2
return inner_function()
这里,即使outer_function超出范围
,内部函数也会记住变量消息答案 3 :(得分:-1)
试试这个:
class A:
message = None
def outer_function(self, msg):
self.message = msg
print(self.message) #P1
def inner_function(self):
print(self.message) #P2
然后在你的python shell中:
>>> a = A()
>>> a.inner_function()
None
>>> a.outer_function('Hello!')
Hello!
>>> a.inner_function()
Hello!