<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def dtype_checker_df(df, dtype, return_=None):
 """Check if there are NaN values of values outside of a given datatype range. Arguments: df {dataframe} -- A dataframe. dtype {str} -- The datatype to check for. Keyword Arguments: return_ {str} -- Returns a boolean dataframe with the values not in the range of the dtype ('all'), the row ('rowsums') or column ('colsums') sums of that dataframe or an exit code 1 (None, default) if any of the values is not in the range. Returns: [int or DataFrame or Series] -- If no value is out of the range exit code 0 is returned, else depends on return_. """

    dtype_range = dtype_ranges[dtype]
    df_out_of_range = (df < dtype_range[0]) | (df > dtype_range[1]) | (~np.isfinite(df))
    if df_out_of_range.any().any():
        if return_== "colsums":
            df_out_of_range = df_out_of_range.apply(sum, axis=0) # column
        elif return_== "rowsums":
            df_out_of_range = df_out_of_range.apply(sum, axis=1) # row
        elif return_== "all":
            df_out_of_range = df_out_of_range
        else:
            df_out_of_range = 1
    else:
        df_out_of_range = 0
    return df_out_of_range