深度实践OpenStack:基于Python的OpenStack组件开发—3.5.6 可调用的变量
3.5.6 可调用的变量
变量是函数的例子前面已经见过了,如map函数,它接收的第一个参数就是函数。有了这一个概念之后,现在看一下什么是可调用的变量。
可调用的变量即可以被解释为方法或者函数的变量,通常指的都是方法或者函数。在这里将遇到一个新的内置函数:callable。可调用的变量,或者说可调用的对象,就是执行callable(param)之后返回为True的变量,简单地说,就是能够直接在最后边添加()的变量或者对象。例如:
def hello():pass result = hello
在上面的代码中,执行callable(result)将得到True,即result()的形式是可行的,这种变量就称为可调用的对象或者变量;其余的便称为不可调用的变量或者对象。在这里再次强调一下,Python中,一切均可以是变量,包括函数和方法。下面来看这么一段代码:
def callback_fun(function,name,age):
true_name = function(name)
return "The user name is %s,age is %d" % (true_name,age)
def get_true_name(name):
return "".join([" ",name])
print callback_fun(get_true_name,"awcloud",24)
这一段代码是完全合法而且正确的,在这段代码中,将get_true_name当作一个普通的变量传递到callback_fun当中,在该方法中执行然后返回相应的结果。
回过头来看一下以前说过的采用字典方式实现switch语法。
def hello():
return "Hello"
def greeting():
return "Hello,awcloud"
def say_goodbye():
return "Goodbye,awcloud"
OPERATION = {"hello":hello,
"greeting":greeting,
"say_goodbye":say_goodbye}
def switch_function(operation,*arg,**karg):
return OPERATION[operation](*arg,**karg)
以上代码中构造了一个字典OPERATION,这个字典的键是操作条件,值是对应的操作;还定义了一个方法switch_function,根据传递过来的参数,选择不同的函数,实现不同的功能。这个例子是简易的switch语法的模拟。
- 点赞
- 收藏
- 关注作者
评论(0)