# Shared function with some output variables

**URL:** <https://forum.inductiveautomation.com/t/shared-function-with-some-output-variables/10882>\
**Category:** 3rd Party Modules\
**Created:** [December 7, 2015, 1:50pm UTC](https://forum.inductiveautomation.com/t/shared-function-with-some-output-variables/10882 "2015-12-07T13:50:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![flavien](https://avatars.discourse-cdn.com/v4/letter/f/f475e1/32.png) [@flavien](https://forum.inductiveautomation.com/u/flavien)\
**Post date:** [December 7, 2015, 1:50pm UTC](https://forum.inductiveautomation.com/t/shared-function-with-some-output-variables/10882/1 "2015-12-07T13:50:55Z")

</div>

Hi,

I created a shared function in my script library which have some output variable :

An example :

```auto
def function(a,b,c):
x=a²
y=a+b
z=a+b*c
return x,y,z
```

Is it possible to write this ?  
How can we use the output variables in a script ?

Thanks,

---

<div class="post-metadata">

**Author:** ![nmudge](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nmudge/32/3394_2.png) [@nmudge](https://forum.inductiveautomation.com/u/nmudge)\
**Post date:** [December 7, 2015, 3:40pm UTC](https://forum.inductiveautomation.com/t/shared-function-with-some-output-variables/10882/2 "2015-12-07T15:40:02Z")

</div>

This works:

`def function(a,b,c):
	x= a**2
	y=a+b
	z=a+b*c
	return x,y,z`Best,

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 7, 2015, 6:26pm UTC](https://forum.inductiveautomation.com/t/shared-function-with-some-output-variables/10882/3 "2015-12-07T18:26:33Z")

</div>

[quote=“flavien”]`
def myFunction(a,b,c):
  ....
  return x,y,z`How can we use the output variables in a script ?[/quote]Although it looks like you are returning multiple values, this syntax really returns a [tuple](http://www.jython.org/docs/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange) with those values as elements. As a convenience, python allows you to assign to multiple local variables from a tuple, as long as there’s a recipient for every element of the tuple. So, your code can do this:`x, y, z = shared.myModule.myFunction(a, b, c)`

---

<div class="post-metadata">

**Author:** ![flavien](https://avatars.discourse-cdn.com/v4/letter/f/f475e1/32.png) [@flavien](https://forum.inductiveautomation.com/u/flavien)\
**Post date:** [January 4, 2016, 2:35pm UTC](https://forum.inductiveautomation.com/t/shared-function-with-some-output-variables/10882/4 "2016-01-04T14:35:34Z")

</div>

Thanks for your help which is more simple than the python list solution that I found :

```auto
def myFunction(a,b,c):
   x= a²
   y=a+b
   z=a+b*c
return {'return1':x, 'return2':y, 'return3':z}

output=shared.MyModule.MyFunction(4,3,5)

x=output['return1']
y=output['return2']
z=output['return3']

```
