写一个装饰器,效果是将所有使用这个装饰器的函数名加到一个list中
时间: 2023-07-07 20:13:13 浏览: 39
好的,下面是一个简单的装饰器实现:
```python
def collect_names(func):
# 定义一个列表用于存储函数名
names = []
def wrapper(*args, **kwargs):
# 在调用函数之前将函数名添加到列表中
names.append(func.__name__)
return func(*args, **kwargs)
# 返回内部函数
return wrapper
```
使用方法:
```python
@collect_names
def foo():
pass
@collect_names
def bar():
pass
# 调用函数,同时将函数名添加到列表中
foo()
bar()
# 打印列表
print(names) # ['foo', 'bar']
```
请注意,在使用装饰器时,需要定义一个列表用于存储函数名,并且该列表必须在函数调用之后进行访问。
相关问题
写一个装饰器,效果是将所有使用这个装饰器的函数名加到一个List中
以下是一个将所有使用该装饰器的函数名加到一个List中的装饰器代码:
```python
function_list = []
def add_to_function_list(func):
function_list.append(func.__name__)
return func
@add_to_function_list
def example_function():
print("This is an example function.")
@add_to_function_list
def another_function():
print("This is another function.")
print(function_list) # 输出 ['example_function', 'another_function']
```
该装饰器定义了一个名为 `add_to_function_list` 的函数,它接受一个函数作为参数,并将该函数的名称添加到 `function_list` 列表中。在函数定义时,使用 `@add_to_function_list` 将该装饰器应用于函数。当函数被调用时,该装饰器会将其名称添加到 `function_list` 列表中。最后,输出 `function_list` 列表,即可查看所有使用该装饰器的函数名称。
写一个装饰器,将所有使用这个装饰器的函数名加到list中
好的,下面是一个将函数名加入到列表中的装饰器示例:
```python
func_list = []
def add_func_name(func):
def wrapper(*args, **kwargs):
func_list.append(func.__name__)
return func(*args, **kwargs)
return wrapper
```
使用方法:
```python
@add_func_name
def foo():
print("foo")
@add_func_name
def bar():
print("bar")
print(func_list) # 输出:['foo', 'bar']
```
这样,每当使用 `@add_func_name` 装饰器装饰一个函数时,该函数的名称就会被添加到 `func_list` 列表中。