code: def has_same_base_dtype(df_1, df_2, columns=None):
      """Check if specified columns have the same base dtypes across both DataFrames
  
      Args:
          df_1 (pandas.DataFrame): first DataFrame
          df_2 (pandas.DataFrame): second DataFrame
          columns (list(str)): columns to check, None checks all columns
  
      Returns:
          bool: True if DataFrames columns have the same base dtypes.
      """
  
      if columns is None:
          if any(
              set(df_1.columns).symmetric_difference(set(df_2.columns))
          ):
              logger.error(
                  "Cannot test all columns because they are not all shared across DataFrames"
              )
              return False
          columns = df_1.columns
  
      if not (
          has_columns(df=df_1, columns=columns)
          and has_columns(df=df_2, columns=columns)
      ):
          return False
  
      result = True
      for column in columns:
          if (
              df_1[column].dtype.type.__base__
              != df_2[column].dtype.type.__base__
          ):
              logger.error(
                  "Columns {} do not have the same base datatype".format(
                      column
                  )
              )
              result = False
  
      return result
  
imports: import logging
  import pandas
  import numpy
  from functools import lru_cache, wraps
  from recommenders.utils.constants import DEFAULT_USER_COL, DEFAULT_ITEM_COL, DEFAULT_RATING_COL, DEFAULT_LABEL_COL
label_desc: Use image node_id 5 for calling a global function with example usage: has_same_base_dtype(df_1, df_2, columns) and returns: result, False, False