0

I want to use a list that was created from a previous function in my other function. After a bit of research it seems using return is the way of doing it. However I cannot get it to work. This is my code:

def FunctionA():
  all_comments1 = [1,2,3,4]
  return all_comments1

def FunctionB():
  FunctionA()
  all_comment_string1 = ''.join(all_comments1)
  newlistings1 = all_comment_string1.split('\n')
  print(newlistings1)

def DoSomething():
  FunctionB()

  DoSomething()

It gives me an error:

NameError: name 'all_comments1' is not defined

I want to know how I can define the variable successfully.

1
  • 1
    You are calling function A but not holding on to its result. Try this in function B: all_comments1 = FunctionA() So, this means, you take the return value of FunctionA and assign it to a variable that you can use going forward. Commented Oct 2, 2022 at 15:27

2 Answers 2

3

You have to define a new variable. Right now you call the FunctionA() but don't save its return value. To do so, simply make a new variable like so:

def FunctionA():
    all_comments1 = [1,2,3,4]
    return all_comments1

def FunctionB():
    all_comments = FunctionA()
    print(all_comments)

FunctionB()

>> [1,2,3,4]
Sign up to request clarification or add additional context in comments.

2 Comments

I have a related question: What do I do if I need to return 2 variables (or lists) instead of just 1?
@RonaLightfoot simply return 2 values and then assign 2 variables instead of one. It's called unpacking variables. Eg. in FunctionA "return var1, var2"; and when you call the function, assign variables like this: "var1, var2 = FunctinA()". Or you can just do "vars = FunctinA()" and then depending on which variable you want, use their index, like so: print(vars[0], vars[1]).
1

I believe you are looking to use global variables between your functions. Modify your code to the following:

def FunctionA():
    # Declare all_comments1 as a global variable
    global all_comments1
    all_comments1 = [1, 2, 3, 4]
    return all_comments1


def FunctionB():
    # Access global variable
    global all_comments1
    # Run functionA otherwise global variable will not be defined
    FunctionA()

    # Map objects from `all_comments1` to str, since they are int
    all_comment_string1 = ''.join(map(str, all_comments1))
    newlistings1 = all_comment_string1.split('\n')
    print(newlistings1)

def DoSomething():
    FunctionB()

DoSomething()

>> ['1234']

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.