You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中通过变量名调用fuzzywuzzy库的方法?

解决fuzzywuzzy方法通过变量名调用的问题

你的代码里直接用fuzz.alg会报错,因为alg是字符串,不是fuzz对象的方法属性。下面是两种可行的解决方式:

方法1:用getattr()动态获取方法

如果你需要保留字符串形式的方法名,可以用Python内置的getattr()函数,从fuzz对象中取出对应名称的方法,再调用它:

from fuzzywuzzy import fuzz

method_name1 = 'token_sort_ratio'
method_name2 = 'partial_ratio'
method_name3 = 'ratio'

def compare_alg(l1, l2, alg):
    # 从fuzz对象中获取名为alg的方法
    compare_func = getattr(fuzz, alg)
    # 调用方法并打印结果
    print(compare_func(l1, l2))

compare_alg("Catherine M Gitau","Catherine Gitau", method_name1)
compare_alg("Catherine M Gitau","Catherine Gitau", method_name2)
compare_alg("Catherine M Gitau","Catherine Gitau", method_name3)

方法2:直接传递方法对象(更推荐)

不需要用字符串存方法名,直接把fuzz里的方法本身赋值给变量,调用时直接使用这个变量即可,这种方式更直观,还能避免字符串拼写错误:

from fuzzywuzzy import fuzz

# 直接赋值方法对象,而非字符串
method1 = fuzz.token_sort_ratio
method2 = fuzz.partial_ratio
method3 = fuzz.ratio

def compare_alg(l1, l2, alg):
    # 直接调用传入的方法
    print(alg(l1, l2))

compare_alg("Catherine M Gitau","Catherine Gitau", method1)
compare_alg("Catherine M Gitau","Catherine Gitau", method2)
compare_alg("Catherine M Gitau","Catherine Gitau", method3)

两种方式的适用场景:

  • 方法1适合需要动态指定方法名的场景(比如从配置文件读取方法名称)
  • 方法2是Python中传递方法的常规做法,代码更简洁安全

内容的提问来源于stack exchange,提问作者sksankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:35:38