python - 如何使用另一个函数编辑函数的局部变量?
问题描述
我在函数 ( ) 中声明了一个列表f2
,我想使用另一个函数 ( f1
) 附加到该列表。鉴于我无法将参数传递给的约束,是否有可能实现这一点f1
?我正在寻找指向f2
从中f1
调用的“父”函数的名称空间的东西。
我不想在mylist
外部声明f2
,也不想mylist
全局化。原因是我要f2
多次调用,我不想mylist
在每个实例中都附加到相同的。
def f1():
"""
Constraint: this function cannot take any arguments!
"""
global mylist # Clearly the wrong thing to do
mylist.append(1)
def f2():
mylist = [] # Must be declared in f2
print(mylist)
f1() # Call function which appends 1 to mylist
print(mylist)
预期行为:
>>> f2()
[]
[1]
我查看了之前提出的一堆类似问题,我的印象是这是不可能的。但我想我会试试运气,看看是否有人知道。
我希望在 python2.7 中实现这一点,但也欢迎针对 python3 提出具体建议。
解决方案
def f1():
mylist.append(1)
def f2():
global mylist
mylist=[]
print(mylist)
f1() # Call function which appends 1 to mylist
print(mylist)
f2()
推荐阅读
- c# - 通过 RedirectToPage 传递数据
- python - 使用 cvxpy 优化 M/M/k/k 排队系统
- sharepoint - Sharepoint API:禁用文档库的版本控制
- jenkins - 尝试在 Ubuntu 服务器中安装/启动 Jenkins - hudson.util.AWTProblem
- javascript - 如何在 sharedModules angular 中更改primeng库
- reactjs - 如何使用 react 和 django-rest-framework 返回 404 状态码
- python - 在 C 扩展中定义 Python 枚举 - 我这样做对吗?
- awk - 在匹配的字符串之后打印文本块
- caching - 在 Ignite 服务器节点中动态创建缓存并将其链接到 PostgreSql 表
- amazon-web-services - 如何将 AWS IAM 权限设置为“拒绝除 Y 之外的所有通配符 X”?