深度实践OpenStack:基于Python的OpenStack组件开发—3.5.6 可调用的变量

举报
华章计算机 发表于 2019/06/06 12:06:39 2019/06/06
【摘要】 本书摘自《深度实践OpenStack:基于Python的OpenStack组件开发》——书中第3章,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语法的模拟。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。