如果我在一个函数中创建一个列表并进行编辑,那么我希望能够将完成的列表传递给另一个函数,用于执行更多操作。
def func1():
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2()
def func2():
two = numbers[0]
func1()
我怎么能得到它以便它不会提取未全局定义的错误号。我知道它为什么会拉错误,但经过研究,我仍然找不到解决这个问题的好办法。
答案 0 :(得分:9)
根据您的里程和要求,选择一个
将列表作为参数传递给被调用函数
def func2(numbers):
two = numbers[0]
def func1():
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2(numbers)
使两个函数都成为单个类的一部分,并使列表成为实例属性
class Foo(object):
def __init__(self, numbers):
self.numbers = numbers
pass
def func1(self):
if self.numbers.count(1) > 0:
self.numbers.remove(1)
self.func2()
def func2(self):
two = self.numbers[0]
Foo([1, 2, 3, 4]).func1()
重新设计,以便调用函数使用调用者
进行修饰def func1(func):
def wraps(*argv):
numbers = argv[0]
if numbers.count(1) > 0:
numbers.remove(1)
func(*argv)
return wraps
@func1
def func2(numbers):
two = numbers[0]
func2([1,2,3,4])
使用嵌套函数关闭
def func1():
def func2():
two = numbers[0]
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2()
func1()
答案 1 :(得分:5)
您可以将其作为function argument传递:
def func1():
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2(numbers)
def func2(numbers):
two = numbers[0]
func1()
您还可以定义嵌套在定义列表的范围内的函数:
def func1():
def func2():
two = numbers[0]
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2()
func1()