python函数的两种嵌套方法使用

作者:小小程序员ol 时间:2022-01-14 08:06:58 

python函数的两种嵌套方法使用
函数的嵌套有两种方式:

  • 交叉嵌套

  • 回环嵌套

交叉嵌套

交叉嵌套的方式是在本函数中调用同一级或上一级函数的嵌套方法:

def func(foo):
    print(1)
    foo()
    print(3)
    
def a():
    print(1)

b = func(a)
print(b)

输出的结果为:

1
1
3
None

首先,程序会将 Python 文件中顶格的代码运行。函数 func 和 a 都是先开辟内存空间存储起来,但不会被执行。当程序走到赋值操作时,会先执行等号右边的代码。函数 func 被调用,函数 a 作为参数被传到 func 中。func 函数被执行,顺序也是从上往下,先是把 1 打印出来,然后调用参数 foo。

需要注意的是,foo 是形参,实参是 a。调用 foo 在此时的意思是调用函数 a。函数 a 被调用,又打印出一个 1 来。函数 a 运行完毕,返回至函数 func,继续执行下面的代码,打印出 3 来。最后,函数默认返回 None,赋值给 b。程序运行结束。

再看下面的代码:

def func():
    print(1)
    print("我太难了")
    print(2)

def foo(b):
    print(3)
    ss = b()
    print(ss)
    print(4)

def f(a,b):
    a(b)

f(foo,func)

输出的结果为:

3
1
我太难了
2
None
4

跟上面一样,先将函数全都加载到新开辟的内存空间中,但不执行。到最后 f 函数被调用,foo 和 func 两个函数作为参数被传到函数 f 中。在函数 f 中,foo 函数被调用,参数为 func 函数。进入到 foo 函数,先打印 3。到赋值语句,先执行等号右边的代码,函数 func 被调用。

在函数 func 中,打印三个内容 1、我太难了 和 2。函数默认返回值为 None,被赋值给 ss。打印 ss 就是打印 None。最后打印 4,然后返回到函数 f,再返回到全局空间。执行结束。

回环函数

回环函数就是在函数中调用下级函数的嵌套方法:

def func(a,b):
   def foo(b,a):
       print(b,a)
   return foo(a,b) #先执行函数调用
a = func(4,7)
print(a)

输出的结果为:

4 7
None

函数依然先存储在新开辟的空间中不会被调用。运行到赋值语句时,还是先执行等号右边的代码,将两个数字传到函数 func中。在函数内部,依然是先开辟空间把函数 foo 放进去。运行到 return 不会马上终止函数,而是先运行 return 后面的代码。foo 函数被调用,传进去的值是 4 和 7,然后打印出来。

需要注意的是,函数 foo 的形参与函数 func 的形参是相同的,不要给搞混了。日常写代码时不建议这样使用。打印出 4 和 7 之后,运行到函数最后一行,函数默认返回 None。然后再赋值给 a,打印出来。

来源:https://www.cnblogs.com/python960410445/p/16083933.html

标签:python,函数,嵌套
0
投稿

猜你喜欢

  • Python pathlib模块实例详解

    2023-03-10 10:59:06
  • vue.js 实现图片本地预览 裁剪 压缩 上传功能

    2024-05-11 09:11:06
  • python的重要技能输入与输出字符串格式化使用详解

    2021-02-15 09:49:11
  • selenium中get_cookies()和add_cookie()的用法详解

    2023-10-22 14:27:19
  • js实现的星星评分功能函数

    2024-06-16 10:28:07
  • Go压缩位图库roaring安装使用详解

    2024-05-22 10:16:42
  • Oracle学习笔记(一)

    2012-01-05 18:51:44
  • 简单了解MySQL SELECT执行顺序

    2024-01-17 21:45:46
  • 解决Python中的modf()函数取小数部分不准确问题

    2023-06-12 06:24:43
  • Java正则表达式之Pattern类实例详解

    2023-11-07 10:13:33
  • Ubuntu 18.04.4安装mysql的过程详解 亲测可用

    2024-01-15 18:46:21
  • Flash对象在(x)HTML中的格式和参数及安全性

    2010-04-01 11:55:00
  • Python计算三角函数之asin()方法的使用

    2023-08-04 22:31:46
  • M1芯片安装python3.9.1的实现

    2021-12-15 12:13:46
  • javascript 设置文本框中焦点的位置

    2024-05-02 17:29:41
  • PHP手机号码归属地查询代码(API接口/mysql)

    2023-10-26 04:35:44
  • 使用Python对微信好友进行数据分析

    2021-04-12 18:10:58
  • JS 函数的 call、apply 及 bind 超详细方法

    2024-04-30 10:42:28
  • 修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)

    2024-06-05 09:44:31
  • python在非root权限下的安装方法

    2023-12-05 20:28:35
  • asp之家 网络编程 m.aspxhome.com