Python 代码提取函数定义信息:函数名、参数类型、参数名
import re/n/n/ndef parse_function_def(func_def):/n '正则表达式匹配函数定义'/n pattern = r'(/w+)/s+(/w+)/s*/(([^)])/)'/n match = re.match(pattern, func_def)/n /n '提取函数名'/n func_name = match.group(1)/n /n '提取参数'/n params_str = match.group(3)/n params_pattern = r'(/w+)/s+(/w+)'/n params = re.findall(params_pattern, params_str)/n /n '提取参数类型和参数名'/n param_types = []/n param_names = []/n for param in params:/n param_types.append(param[0])/n param_names.append(param[1])/n /n return func_name, param_types, param_names/n/n'测试代码'/nfunc_def1 = 'CUresult cuModuleGetFunction ( CUfunction hfunc, CUmodule hmod, const char* name );'/nfunc_def2 = 'CUresult cuOccupancyMaxActiveBlocksPerMultiprocessor ( int* numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize );'/nfunc_def3 = 'CUresult cuGetErrorString ( CUresult error, const char** pStr );'/nfunc_def4 = 'CUresult cuLaunchKernel ( CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void** kernelParams, void** extra );'/nfunc_def5 = 'CUresult cuCtxGetCurrent ( CUcontext* pctx );'/nfunc_def6 = 'CUresult cuModuleUnload ( CUmodule hmod );'/nfunc_def7 = 'CUresult cuDevicePrimaryCtxGetState ( CUdevice dev, unsigned int* flags, int* active );'/n/nprint(parse_function_def(func_def1))/nprint(parse_function_def(func_def2))/nprint(parse_function_def(func_def3))/nprint(parse_function_def(func_def4))/nprint(parse_function_def(func_def5))/nprint(parse_function_def(func_def6))/nprint(parse_function_def(func_def7))
原文地址: https://www.cveoy.top/t/topic/n9Pq 著作权归作者所有。请勿转载和采集!