python函数嵌套

尽管c语言可以进行递归调用函数,也可以嵌套调用,但是不允许嵌套定义,即在函数定义中继续定义一个函数。而python可以,举例如下:

def foo():

       def bar():

              print('hello world')

       bar()

再举一例:

spam = 99

def tester():

    def nested():

        global spam

        print('current=',spam)

        spam += 1

    return nested

#注意:打印 print 那行的代码调用是tester()()

#而不是tester().nested()

#为了说明这一点,我们再举一个例子

def multiplier(factor):

       def multiplybyfactot(number):

              return number*factor

       return multibyfactor

观察以上两个例子,我们发现在外层函数中,外层函数的值被内层函数使用,同时内层函数或者内层函数的值被返回,最为外层函数的值。

>>>double=multiplier(2)

>>>double(5)

#相当于multiplier(2)(5)

再说递归


def search(sequence,number,lower,upper):
if lower==upper:
  assert number==sequence[upper]
  return upper
else:
    middle=(lower+upper)//2
    if number>sequence[middle]:
    return search(sequence,number,middle+1,upper)
    else:
    return search(sequence,number,lower,middle)

这个程序实现对从小到大排列的序列进行二分查找,其中assert的引入,即断言,是为了让程序在断言那里出错时报错,如果用if,是不会报错的。//表示整除

你可能感兴趣的:(python函数嵌套)