将数据从一个功能传递到另一功能

时间:2020-08-06 17:01:09

标签: python list

我想在find()函数中获取insert()函数数据。

n=int(input("Enter choice: "))

if n==1:
  def insert():
    data=['oop','java','python']
    print(data)
    
    return data

  insert()

elif n==2:
  def find():
    data.insert(1,"hi")
    print(data)

  find()

按2后,最终输出应为

 ['oop','hi','java','python']

3 个答案:

答案 0 :(得分:1)

尝试一下-

n=int(input("Enter choice: "))
data = ['oop', 'java', 'python']
if n==1:
  def insert():
    print(data)
    return data
  insert()

elif n==2:
  def find():
    data.insert(1,"hi")
    print(data)

  find()

输出-['oop', 'hi', 'java', 'python']

要在本地使用列表:

n = int(input("Enter choice: "))

def insert():
    data = ['oop', 'java', 'python']
    return data

def find():
    data = insert()
    data.insert(1, "hi")
    return data

if n==1:
    print(insert())
elif n==2:
    print(find())

输出:

>> Enter choice: 2
['oop', 'hi', 'java', 'python']
>> Enter choice: 1
['oop', 'java', 'python']

答案 1 :(得分:1)

编辑:我没有阅读您想要的输出。

不确定这是否是您所需要的:

n=int(input("Enter choice: "))

def insert():
    data=['oop','java','python']
    print(data)
    return data

def find():
   def find():
   data_func = insert()
   data_func.insert(1, "hi")
   print(data_func)

if n==1:
    insert()

elif n==2:
    find()

您不能在条件“ if”内声明函子,因为如果您的输入为2,则将永远不会执行inset()函数,并且永远不会声明数据变量。

此外,您应该以不同于python预定义方法的方式来命名函数...

致谢。

答案 2 :(得分:0)

您需要了解scope在Python中的工作方式。您可以在https://realpython.com/python-scope-legb-rule/处阅读有关内容,但基本理解是,在函数中声明的变量仅是该函数的局部变量。 您可能需要做的就是将数据数组传递给两个函数,以保持变量的范围。