已更新:
如何在嵌套函数中使用函数变量?我在以下示例中简化了我的问题:
def build():
n = 1 # code to parse rpm package minor version from file
f = min_ver(n) # update minor version
return
def min_ver(n):
n = 2 # this is defined by another process, not set intentionally
s = 1 + n # still need the original value from build()
return s
实际用例是我从磁盘'n'中获取ex1()中已解析的rpm软件包次要版本值。从ex1()执行ex2()后,它将删除旧软件包,并使用新的次要版本构建新的rpm软件包。因此,当它在嵌套函数中调用ex1()的值时,它不会更改为新版本。
在传递给嵌套函数的新值'n'之前,如何在嵌套函数中保持原始的'n'值?
答案 0 :(得分:2)
一种简单的方法是将变量作为参数传递给ex2
。
def build():
n = int(1)
f = ex2(n) # pass the value to the next function
n = int(5)
return
def min_ver(n_old):
n = 2
s = 1 + n_old # use the n that was passed in
return s
答案 1 :(得分:0)
如果将ex2()
实际嵌套,则可以访问外部变量。
def ex1():
n = int(1)
def ex2():
s = 1 + n
return(s)
f = ex2()
n = int(5) # done with nested value, rewrite new value
return()
我想,您可能想返回f
或n
而不是一个空元组。
您不必说int(1)
,而只需说1
。一切,包括整数和字符串,都是python中的隐式对象。