code: def test_cache_complex_param(self):
      cache_fp = "demo.pkl"
      try:
  
          @cache_results(cache_fp, _refresh=False)
          def demo(*args, s=1, **kwargs):
              print("¥")
              return 1
  
          res = demo(1, 2, 3, s=4, d=4)
          with Capturing() as output:
              res = demo(1, 2, 3, d=4, s=4)
          assert "¥" not in output[0]
      finally:
          remove_postfix(".")
  
imports: import os
  import pytest
  import subprocess
  from io import StringIO
  import sys
  from fastNLP.core.utils.cache_results import cache_results
  from fastNLP.envs.distributed import rank_zero_rm
label_desc: Use image node_id 2 for calling the TestCacheResultsWithParam obj's underlying member method code with example usage: obj.test_cache_complex_param() and returns: int