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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.