如果我在一个函数中创建一个列表并进行编辑,那么我希望能够将完成的列表传递给另一个函数,在那里它将用于执行更多操作.
def func1():
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2()
def func2():
two = numbers[0]
func1()
Run Code Online (Sandbox Code Playgroud)
我怎么能得到它,以便它不会拉出未全局定义的错误号.我知道它为什么会拉错误,但经过研究,我仍然找不到解决这个问题的好办法.
根据您的里程和要求,选择一个
将列表作为参数传递给被调用函数
def func2(numbers):
two = numbers[0]
def func1():
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2(numbers)
Run Code Online (Sandbox Code Playgroud)使两个函数都成为单个类的一部分,并使列表成为实例属性
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()
Run Code Online (Sandbox Code Playgroud)重新设计,以便调用函数装饰被调用函数
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])
Run Code Online (Sandbox Code Playgroud)用嵌套函数关闭
def func1():
def func2():
two = numbers[0]
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2()
func1()
Run Code Online (Sandbox Code Playgroud)您可以将其作为函数参数传递:
def func1():
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2(numbers)
def func2(numbers):
two = numbers[0]
func1()
Run Code Online (Sandbox Code Playgroud)
您还可以定义嵌套在定义列表的范围中的函数:
def func1():
def func2():
two = numbers[0]
numbers = [1, 2, 3, 4]
if numbers.count(1) > 0:
numbers.remove(1)
func2()
func1()
Run Code Online (Sandbox Code Playgroud)