你可以这样做:
def caps_lock(func, string):
print(func(string))
string = 'Hello World'
caps_lock(str.upper, string)
caps_lock(str.lower, string)
或者:
def caps_lock(thunk):
print(thunk())
string = 'Hello World'
caps_lock(string.upper)
caps_lock(string.lower)
从技术上讲,这也是一种选择,但我不建议这样做:
def caps_lock(func_name, string):
print(getattr(string, func_name)())
string = 'Hello World'
caps_lock("upper", string)
caps_lock("lower", string)
在所有这些情况下,caps_lock 函数并没有强制它仅将字符串大写或小写;您可以传递任意函数,它会在字符串上打印运行该函数的结果。
另请注意,必须将函数传递给 caps_lock 并不能真正为您节省任何精力,而不仅仅是自己调用函数:
string = 'Hello World'
print(string.upper())
print(string.lower())
如果您想要一个在打印之前专门只对字符串进行大写或小写的函数,则必须在 caps_lock 的主体内指定这些函数,如下所示:
def caps_lock(on, string):
print(string.upper() if on else string.lower())
string = 'Hello World'
caps_lock(True, string)
caps_lock(False, string)