def func(): variable = 500 return _______ if True: demo = 400 c.append(demo) num = func() c.append(num) print("if语句变量:",______) print("func函数内部变量:",_________)
时间: 2024-03-30 16:35:20 浏览: 111
答案:
def func():
variable = 500
return variable
c = []
if True:
demo = 400
c.append(demo)
num = func()
c.append(num)
print("if语句变量:", demo)
print("func函数内部变量:", num)
相关问题
def wraper_func(test_func): @wraps(test_func) # @wraps:避免被装饰函数自身的信息丢失 def inner_func(self): failures = str([fail[0] for fail in self._outcome.result.failures]) if test_func.__name__ in failures: if self._id() == self._testMethodName: test = False else: test = True else: test = True return test(self) if inner_func(self) == True: return True else: return False 这个代码有错吗,怎么更改
这段代码有一些问题。首先,在 `inner_func` 函数中,`test` 变量被赋值为一个布尔值,但在返回时却被当作了一个函数来调用。其次,在 `wraper_func` 函数中,`inner_func` 函数应该返回一个函数对象,而不是一个布尔值。
以下是更改后的代码:
```
from functools import wraps
def wraper_func(test_func):
@wraps(test_func)
def inner_func(self):
failures = str([fail[0] for fail in self._outcome.result.failures])
if test_func.__name__ in failures:
if self._id() == self._testMethodName:
test = lambda: False
else:
test = lambda: True
else:
test = lambda: True
return test
return inner_func(self)
# 测试
class Test:
def test_func(self):
return True
test = Test()
result = wraper_func(test.test_func)
print(result()) # 输出 True
```
在更改后的代码中,`inner_func` 函数返回一个匿名函数,该函数根据条件返回 `True` 或 `False`。在 `wraper_func` 函数中,我们调用 `inner_func` 并传入 `self` 参数,该参数在测试类的实例化对象中提供。然后,我们将返回的函数对象存储在 `result` 变量中,并在需要时调用它来执行测试。
def mm2(func): """ 装饰器:循环执行发送/接收,直至成功 """ @wraps(func) def wrapper(*args, **kwargs): while True: try: result = func(*args,**kwargs) break except pynng.exceptions.Timeout: print(func.__name__,'Timeout') continue except pynng.exceptions.TryAgain: print(func.__name__,'TryAgain') continue return result return wrapper() import time from functools import wraps @mm2 def test(n): print(n) if __name__=='__main__': test('1254')
这段代码是一个装饰器函数,名为`mm2`,作用是循环执行函数,直至成功为止。在代码中,使用了`@wraps(func)`来保留被装饰函数的元信息。然后定义了一个无限循环,不断执行被装饰函数,如果执行成功,则跳出循环并返回结果;如果抛出了`pynng.exceptions.Timeout`或`pynng.exceptions.TryAgain`异常,则捕获异常并继续循环执行。最后,返回被装饰函数的执行结果。在代码最后,调用了`test`函数,并传入参数`'1254'`。
阅读全文