how to pass data in variables between functions
Question:
How can I store and pass the contents of r
from main
to two
? It will print r
if I set it to a fixed value; but how do I do it with variable contents? I tried random.getstate
/setstate
but it was saying "function object not subscriptable".
import random
from random import randrange
def main():
r = random.randrange(1,13,1)
print (r)
r = random.randrange(1,13,1)
def two():
if r==7 or r==11:
print (r)
else:
print (r)
main()
two()
Answers:
Well, depending on the situation, you either want to make a class or return the data, then pass it in as an argument, the latter is probably what you want given your code, so, for example:
def main():
...
r = do_something()
...
return r
def two(r):
...
do_something_else(r)
...
r = main()
two(r)
If this was happening within something you could define as an entity, you could do it in a class:
class Main():
def main(self):
...
self.r = do_something()
...
def two(self):
...
do_something_else(self.r)
...
main = Main()
main.main()
main.two()
However, in this case, this is unnecessary as you are creating a class that doesn’t really encapsulate anything.
Use return values and function parameters:
import random
from random import randrange
def main():
r = random.randrange(1,13,1)
return r
def two(r):
if r==7 or r==11:
print (r)
else:
print (r)
r = main()
two(r)
The function main
computes the random value and then returns it to the place where it was called. You can then store the return value in a variable (also called r
in this case: r = main()
). It does not need to be called r
though, you can also name it something else.
To pass the value to two
, you can pass it as parameter. As you can see in def two(r):
, the function two
now expects a parameter (also called r
) and it is used in that function. Again, this does not need to be called r
but it seems fitting to use the same name.
How can I store and pass the contents of r
from main
to two
? It will print r
if I set it to a fixed value; but how do I do it with variable contents? I tried random.getstate
/setstate
but it was saying "function object not subscriptable".
import random
from random import randrange
def main():
r = random.randrange(1,13,1)
print (r)
r = random.randrange(1,13,1)
def two():
if r==7 or r==11:
print (r)
else:
print (r)
main()
two()
Well, depending on the situation, you either want to make a class or return the data, then pass it in as an argument, the latter is probably what you want given your code, so, for example:
def main():
...
r = do_something()
...
return r
def two(r):
...
do_something_else(r)
...
r = main()
two(r)
If this was happening within something you could define as an entity, you could do it in a class:
class Main():
def main(self):
...
self.r = do_something()
...
def two(self):
...
do_something_else(self.r)
...
main = Main()
main.main()
main.two()
However, in this case, this is unnecessary as you are creating a class that doesn’t really encapsulate anything.
Use return values and function parameters:
import random
from random import randrange
def main():
r = random.randrange(1,13,1)
return r
def two(r):
if r==7 or r==11:
print (r)
else:
print (r)
r = main()
two(r)
The function main
computes the random value and then returns it to the place where it was called. You can then store the return value in a variable (also called r
in this case: r = main()
). It does not need to be called r
though, you can also name it something else.
To pass the value to two
, you can pass it as parameter. As you can see in def two(r):
, the function two
now expects a parameter (also called r
) and it is used in that function. Again, this does not need to be called r
but it seems fitting to use the same name.