在python中函数可以嵌套定义吗,python嵌套语句

  在python中函数可以嵌套定义吗,python嵌套语句

  本文主要介绍python中的函数嵌套和嵌套调用方法,具有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。

  00-1010嵌套函数和嵌套调用函数嵌套调用函数在函数中定义函数。要在函数中调用函数,可以引用外部变量并尝试修改它们。关于如何修改外部变量的值的说明。

  

目录

  

函数嵌套和嵌套调用

  函数的嵌套:函数中也有函数。它分为外部功能和内部功能。

  嵌套函数服务于函数内部,比如减少代码重复。如果你想调用一个函数,你应该使用函数名,内部函数也是如此。如果在没有函数名的情况下调用内部函数,内部函数将永远不会被执行。

  内函数的调用

  如何在函数外调用内部函数?首先,不能直接调用内层函数,需要先执行外层函数的代码块。

  定义函数1():

  打印(“这是一个外部函数”)

  定义函数2():

  打印(“这是一个固有函数”)

  函数2()

  Python不执行外层函数内部的代码块就找不到内层函数,所以没有定义名字‘func2’,也没有定义函数func 2()。

  调用内部函数有几种方法。

  1.在外部函数内部调用内部函数,也就是用函数名调用。

  定义函数1():

  打印(“这是一个外部函数”)

  定义函数2():

  打印(“这是一个固有函数”)

  Func2() #函数名调用内部函数

  func1()

  这样,调用外部函数也会执行内部函数的代码块。

  2.可以用return调用内部函数

  在使用return之前,需要说明一下:我们都是使用函数名()来调用函数,单独使用函数名就可以得到函数的内存地址;(在函数名后面加括号告诉python参数对不对,然后执行函数的代码块。)

  “返回函数名()”调用内部函数def func1():

  打印(“这是一个外部函数”)

  定义函数2():

  打印(“这是一个固有函数”)

  返回函数2()

  func1()

  该函数没有返回值,即返回值为none。Return func2()和 func2()具有相同的效果。

  定义函数1():

  打印(“这是一个外部函数”)

  定义函数2():

  打印(“这是一个固有函数”)

  返回函数2()

  M=func1() #调用func1(),调用func2的方法

  Print(m) #m是无

  外层函数里面的‘返回函数名’也可以调用内层函数,但是调用外层函数的时候要加一个括号def func1():

  打印(“这是一个外部函数”)

  定义函数2():

  打印(“这是一个固有函数”)

  返回功能2

  m=func1()

  打印(m)

  #

  #执行结果是

  这是一个外部函数。

  0x0000000002EB6620处的函数func1.locals.func2

  正如您在上面看到的,使用函数名可以获得函数的地址。我们可以用一个变量指向这个地址,相当于创建了一个指向函数地址的变量。因为只有函数名不能调用函数的方法,所以调用外层函数时要用双括号。

  定义函数1():

  打印(“这是一个外部函数”)

  定义函数2():

  打印(“这是一个固有函数”)

  返回功能2

  Func1()() ##执行Func1()将返回func2

  然后再func2()

  # m = func1()

  # m()

  我们可以用func1()返回一个函数func2,再加一个括号调用内函数的方法。

  小结:想要调用内函数,首先要调用外函数,即执行外函数的代码块,才有内函数调用的环境。在外函数内部,可以用函数名调用内函数。也可以用return调用内函数,如果return是函数本身的地址,调用外函数时会用到双括号,先调用func1()得到func2然后再func2()。如果return func2(),那么和func2()是一样的,都是告诉python调用内函数。

  变量的作用范围

  外函数里面的变量和内函数里面的变量是有区别的,作用范围不一样。内函数也可以使用外函数的变量,但是如果想要在内部函数修改外部函数变量的值,就要使用关键字nonlocal

  

def func1():

      b = 2

      def func2():

          nonlocal b

          b = b - 1

      func2()

      print(b)

  

  

函数的嵌套调用

  在一个函数里面调用别的函数

  

def print1():

      print("这是第一个函数")

  def print2():

      print("这是定义的第二个函数")

      print1() #在print2()中调用print1()

  print2()

  

  

函数中定义函数

  

  

在函数内部定义的函数要在函数内部调用

  

def paint():

      print("paint")

      def paintA():

          print("paintA")

      paintA()

  paint()

  //输出如下:

  //paint

  //paintA

  在函数外部调用函数的结果如下

  

paintA //试图在函数外部调用paintA()
//以下是报错信息
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-15-1a59d6e3eeb5> in <module>()
5 paintA()
6 paint()
----> 7 paintA

  NameError: name 'paintA' is not defined

  

  

  

函数内的函数可以引用外部变量

  但是不可以对其进行修改

  

a=6

  def FuncX(x):

       def FuncY(y):

               return a*y

              // return x*y,这里也可以写这条语句进行测试,因为对于FuncY()来说,x也算外部变量,我这里主要是为了突出外部变量这个概念

       return FuncY

  FuncX(5)(6)//把5赋给x,6赋给y

  //输出结果如下:

  36

  

  

试图对外部变量进行修改

  

a=6

  def FuncX(x):

       def FuncY(y):

              #global a    加上这条语句即可修改a的值

               a=a*y

               return a  #试图修改 a 的值

             #return a=a*y   Python不允许返回赋值表达式,并不是因为修改a的原因,这里更新一下

             #更新时间  2019.1.4                

       return FuncY

  FuncX(5)(6)

  //报错信息

  UnboundLocalError: local variable a referenced before assignment

  

  

函数怎么修改外部变量的值的说明

  对于全局变量的修改,如果全局变量是int或者str,那么如果想要在函数中对函数变量进行修改,则需要先在函数内,声明其为global或nonlocal,在进行修改, 如果是list或者dict则可以直接修改

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: