> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chaintable.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Advanced features

> Call an existing Function from another Function, pass arguments, and use the returned value.

Save shared calculation logic as a Function and reuse it by its full Function ID. The caller passes arguments, waits for the result, and continues computing.

## Call an existing Function

First follow [Create a Function](/guides/functions/create) to save `demo.usdc_amount`. Create `usdc_value` in the same Space with this code:

```python theme={null}
def _():
    from blockx import function

    amount = function.call('demo.usdc_amount', 1500000)
    return {'amount': amount, 'symbol': 'USDC'}
```

No parameters are needed. Save and click **Run** to return:

```json theme={null}
{"amount": 1.5, "symbol": "USDC"}
```

<Frame>
  <img src="https://mintcdn.com/opcodelabspteltd/TOA0bb8_WqdBuVVN/images/guides/functions/reuse.png?fit=max&auto=format&n=TOA0bb8_WqdBuVVN&q=85&s=c0e67b3b22f78e8a465bc17fc380b8ec" alt="usdc_value calls an existing Function and returns the amount and token symbol" width="1920" height="1080" data-path="images/guides/functions/reuse.png" />
</Frame>

The first argument to `function.call()` is the Function ID. The remaining arguments are passed by position, and the return value is the called Function's result.

## Pass multiple arguments

For an entry point `def _(address, block_id)`, pass the address and block ID in that order. Do not wrap them in one list unless the called function itself accepts a single list argument.

Use the full ID for calls across Spaces and ensure the current account has the required access. Calls use the Function's saved code, so save edits first.
