如何存储和检索函数?

时间:2015-12-22 22:11:28

标签: python

我是python的新手,最初来自C,我无法弄清楚python中的函数指针和回调函数。

我正在做以下但不知道为什么我会收到错误而没有错误? :

def a():
    print "a"

def b():
    print "b"

def c():
    print "c"

def d():
    print "d"

# Build dummy table    
sm = [ [ a , b ], [ c, d ] ]

print sm[0][1]() # Name error sm not defined. --??

结果是:

b # This is expected
None  

为什么名称错误,为什么我得到无?如何在python中创建表并存储一些函数?

2 个答案:

答案 0 :(得分:2)

您可能会混淆returnprint

返回

返回值进入表达式。

例如:

def b():
    return 7
7*b() #prints 49

打印

将输出打印到控制台

def b():
    print "Hello World"
b() #Prints Hello World!

如果您尝试

def b():
    print "3"
b()*2 

这是无效的语法。

一起

def b():
    print "10"
    return 7
print b()*5 #prints 35 because 7*5

python函数的默认返回值为None,因此如果您不返回任何内容,则会返回该函数。这就是您看到None

的方式

答案 1 :(得分:-1)

您正在函数b()中打印变量。 print返回None,因此外部打印语句正在打印“无”。函数中的所有prints都应该返回。