码迷,mamicode.com
首页 > 编程语言 > 详细

【Python学习日记】函数列表

时间:2015-03-17 10:22:38      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

import re

def match_sxz(noun):
    return re.search(‘[sxz]$‘,noun)

def apply_sxz(noun):
    return re.sub(‘$‘,‘es‘,noun)

def match_h(noun):
    return re.search(‘[^aeioudgkprt]h‘,noun)

def apply_h(noun):
    return re.sub(‘$‘,‘es‘,noun)

def match_y(noun):
    return re.search(‘[^aeiou]y$‘,noun)

def apply_y(noun):
    return re.sub(‘y$‘,‘ies‘,noun)

def match_default(noun):
    return True

def apply_default(noun):
    return re.sub(‘$‘,‘s‘,noun)

rules = ((match_sxz, apply_sxz),
         (match_h, apply_h),
         (match_y, apply_y),
         (match_default, apply_default)
         )

def plural(noun):
    for match_rule, apply_rule in rules:
        if(match_rule(noun)):
            return apply_rule(noun)

print(plural(‘body‘));

改成动态创建函数的方式

import re

def build_match_apply_function(pattern, search, replace):
    def match_rule(word):
        return re.search(pattern, word)
    def apply_rule(word):
        return re.sub(search, replace, word)
    return (match_rule, apply_rule)

patterns =          (
             (‘[sxz]$‘,‘$‘,‘es‘),
             (‘[^aeioudgkprt]h$‘,‘$‘,‘es‘),
             (‘(qu|[^aeiou]y$)‘,‘y$‘,‘ies‘),
             (‘$‘,‘$‘,‘s‘),
             )

rules = [build_match_apply_function(pattern, search, replace)
         for (pattern, search, replace) in patterns]

def plural(noun):
    for match_rule, apply_rule in rules:
        if(match_rule(noun)):
            return apply_rule(noun)

print(plural(‘body‘));

  

【Python学习日记】函数列表

标签:

原文地址:http://www.cnblogs.com/joyber/p/4343653.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!