user: Give a detailed overview of FunctionNode(NodeInternal): syntax, arguments, return values, common patterns.

assistant: # FunctionNode(NodeInternal)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), [`NodeInternal`](bpy.types.NodeInternal.html#bpy.types.NodeInternal "bpy.types.NodeInternal")

subclasses —
[`FunctionNodeAlignEulerToVector`](bpy.types.FunctionNodeAlignEulerToVector.html#bpy.types.FunctionNodeAlignEulerToVector "bpy.types.FunctionNodeAlignEulerToVector"), [`FunctionNodeAlignRotationToVector`](bpy.types.FunctionNodeAlignRotationToVector.html#bpy.types.FunctionNodeAlignRotationToVector "bpy.types.FunctionNodeAlignRotationToVector"), [`FunctionNodeAxesToRotation`](bpy.types.FunctionNodeAxesToRotation.html#bpy.types.FunctionNodeAxesToRotation "bpy.types.FunctionNodeAxesToRotation"), [`FunctionNodeAxisAngleToRotation`](bpy.types.FunctionNodeAxisAngleToRotation.html#bpy.types.FunctionNodeAxisAngleToRotation "bpy.types.FunctionNodeAxisAngleToRotation"), [`FunctionNodeBitMath`](bpy.types.FunctionNodeBitMath.html#bpy.types.FunctionNodeBitMath "bpy.types.FunctionNodeBitMath"), [`FunctionNodeBooleanMath`](bpy.types.FunctionNodeBooleanMath.html#bpy.types.FunctionNodeBooleanMath "bpy.types.FunctionNodeBooleanMath"), [`FunctionNodeCombineColor`](bpy.types.FunctionNodeCombineColor.html#bpy.types.FunctionNodeCombineColor "bpy.types.FunctionNodeCombineColor"), [`FunctionNodeCombineMatrix`](bpy.types.FunctionNodeCombineMatrix.html#bpy.types.FunctionNodeCombineMatrix "bpy.types.FunctionNodeCombineMatrix"), [`FunctionNodeCombineTransform`](bpy.types.FunctionNodeCombineTransform.html#bpy.types.FunctionNodeCombineTransform "bpy.types.FunctionNodeCombineTransform"), [`FunctionNodeCompare`](bpy.types.FunctionNodeCompare.html#bpy.types.FunctionNodeCompare "bpy.types.FunctionNodeCompare"), [`FunctionNodeEulerToRotation`](bpy.types.FunctionNodeEulerToRotation.html#bpy.types.FunctionNodeEulerToRotation "bpy.types.FunctionNodeEulerToRotation"), [`FunctionNodeFindInString`](bpy.types.FunctionNodeFindInString.html#bpy.types.FunctionNodeFindInString "bpy.types.FunctionNodeFindInString"), [`FunctionNodeFloatToInt`](bpy.types.FunctionNodeFloatToInt.html#bpy.types.FunctionNodeFloatToInt "bpy.types.FunctionNodeFloatToInt"), [`FunctionNodeFormatString`](bpy.types.FunctionNodeFormatString.html#bpy.types.FunctionNodeFormatString "bpy.types.FunctionNodeFormatString"), [`FunctionNodeHashValue`](bpy.types.FunctionNodeHashValue.html#bpy.types.FunctionNodeHashValue "bpy.types.FunctionNodeHashValue"), [`FunctionNodeInputBool`](bpy.types.FunctionNodeInputBool.html#bpy.types.FunctionNodeInputBool "bpy.types.FunctionNodeInputBool"), [`FunctionNodeInputColor`](bpy.types.FunctionNodeInputColor.html#bpy.types.FunctionNodeInputColor "bpy.types.FunctionNodeInputColor"), [`FunctionNodeInputInt`](bpy.types.FunctionNodeInputInt.html#bpy.types.FunctionNodeInputInt "bpy.types.FunctionNodeInputInt"), [`FunctionNodeInputRotation`](bpy.types.FunctionNodeInputRotation.html#bpy.types.FunctionNodeInputRotation "bpy.types.FunctionNodeInputRotation"), [`FunctionNodeInputSpecialCharacters`](bpy.types.FunctionNodeInputSpecialCharacters.html#bpy.types.FunctionNodeInputSpecialCharacters "bpy.types.FunctionNodeInputSpecialCharacters"), [`FunctionNodeInputString`](bpy.types.FunctionNodeInputString.html#bpy.types.FunctionNodeInputString "bpy.types.FunctionNodeInputString"), [`FunctionNodeInputVector`](bpy.types.FunctionNodeInputVector.html#bpy.types.FunctionNodeInputVector "bpy.types.FunctionNodeInputVector"), [`FunctionNodeIntegerMath`](bpy.types.FunctionNodeIntegerMath.html#bpy.types.FunctionNodeIntegerMath "bpy.types.FunctionNodeIntegerMath"), [`FunctionNodeInvertMatrix`](bpy.types.FunctionNodeInvertMatrix.html#bpy.types.FunctionNodeInvertMatrix "bpy.types.FunctionNodeInvertMatrix"), [`FunctionNodeInvertRotation`](bpy.types.FunctionNodeInvertRotation.html#bpy.types.FunctionNodeInvertRotation "bpy.types.FunctionNodeInvertRotation"), [`FunctionNodeMatchString`](bpy.types.FunctionNodeMatchString.html#bpy.types.FunctionNodeMatchString "bpy.types.FunctionNodeMatchString"), [`FunctionNodeMatrixDeterminant`](bpy.types.FunctionNodeMatrixDeterminant.html#bpy.types.FunctionNodeMatrixDeterminant "bpy.types.FunctionNodeMatrixDeterminant"), [`FunctionNodeMatrixMultiply`](bpy.types.FunctionNodeMatrixMultiply.html#bpy.types.FunctionNodeMatrixMultiply "bpy.types.FunctionNodeMatrixMultiply"), [`FunctionNodeProjectPoint`](bpy.types.FunctionNodeProjectPoint.html#bpy.types.FunctionNodeProjectPoint "bpy.types.FunctionNodeProjectPoint"), [`FunctionNodeQuaternionToRotation`](bpy.types.FunctionNodeQuaternionToRotation.html#bpy.types.FunctionNodeQuaternionToRotation "bpy.types.FunctionNodeQuaternionToRotation"), [`FunctionNodeRandomValue`](bpy.types.FunctionNodeRandomValue.html#bpy.types.FunctionNodeRandomValue "bpy.types.FunctionNodeRandomValue"), [`FunctionNodeReplaceString`](bpy.types.FunctionNodeReplaceString.html#bpy.types.FunctionNodeReplaceString "bpy.types.FunctionNodeReplaceString"), [`FunctionNodeRotateEuler`](bpy.types.FunctionNodeRotateEuler.html#bpy.types.FunctionNodeRotateEuler "bpy.types.FunctionNodeRotateEuler"), [`FunctionNodeRotateRotation`](bpy.types.FunctionNodeRotateRotation.html#bpy.types.FunctionNodeRotateRotation "bpy.types.FunctionNodeRotateRotation"), [`FunctionNodeRotateVector`](bpy.types.FunctionNodeRotateVector.html#bpy.types.FunctionNodeRotateVector "bpy.types.FunctionNodeRotateVector"), [`FunctionNodeRotationToAxisAngle`](bpy.types.FunctionNodeRotationToAxisAngle.html#bpy.types.FunctionNodeRotationToAxisAngle "bpy.types.FunctionNodeRotationToAxisAngle"), [`FunctionNodeRotationToEuler`](bpy.types.FunctionNodeRotationToEuler.html#bpy.types.FunctionNodeRotationToEuler "bpy.types.FunctionNodeRotationToEuler"), [`FunctionNodeRotationToQuaternion`](bpy.types.FunctionNodeRotationToQuaternion.html#bpy.types.FunctionNodeRotationToQuaternion "bpy.types.FunctionNodeRotationToQuaternion"), [`FunctionNodeSeparateColor`](bpy.types.FunctionNodeSeparateColor.html#bpy.types.FunctionNodeSeparateColor "bpy.types.FunctionNodeSeparateColor"), [`FunctionNodeSeparateMatrix`](bpy.types.FunctionNodeSeparateMatrix.html#bpy.types.FunctionNodeSeparateMatrix "bpy.types.FunctionNodeSeparateMatrix"), [`FunctionNodeSeparateTransform`](bpy.types.FunctionNodeSeparateTransform.html#bpy.types.FunctionNodeSeparateTransform "bpy.types.FunctionNodeSeparateTransform"), [`FunctionNodeSliceString`](bpy.types.FunctionNodeSliceString.html#bpy.types.FunctionNodeSliceString "bpy.types.FunctionNodeSliceString"), [`FunctionNodeStringLength`](bpy.types.FunctionNodeStringLength.html#bpy.types.FunctionNodeStringLength "bpy.types.FunctionNodeStringLength"), [`FunctionNodeStringToValue`](bpy.types.FunctionNodeStringToValue.html#bpy.types.FunctionNodeStringToValue "bpy.types.FunctionNodeStringToValue"), [`FunctionNodeTransformDirection`](bpy.types.FunctionNodeTransformDirection.html#bpy.types.FunctionNodeTransformDirection "bpy.types.FunctionNodeTransformDirection"), [`FunctionNodeTransformPoint`](bpy.types.FunctionNodeTransformPoint.html#bpy.types.FunctionNodeTransformPoint "bpy.types.FunctionNodeTransformPoint"), [`FunctionNodeTransposeMatrix`](bpy.types.FunctionNodeTransposeMatrix.html#bpy.types.FunctionNodeTransposeMatrix "bpy.types.FunctionNodeTransposeMatrix"), [`FunctionNodeValueToString`](bpy.types.FunctionNodeValueToString.html#bpy.types.FunctionNodeValueToString "bpy.types.FunctionNodeValueToString")

*class* bpy.types.FunctionNode(*NodeInternal*)
:   *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type