我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python中的函数嵌套和嵌套调用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python中的函数嵌套和嵌套调用

函数嵌套和嵌套调用

函数的嵌套

函数的嵌套:在函数里面还有函数。分为外函数和内函数。

嵌套函数是为函数内部服务的,比如减少代码的重复,想要调用函数,要使用函数名,内函数也一样。如果不用函数名调用内函数,内函数就永远不会执行。

内函数的调用

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

def func1():
    print("这是外部函数")
    def func2():
        print("这是内部函数")
func2()  

没有执行外函数内部的代码块,python找不到内函数,所以报name ‘func2’ is not defined,函数func2()没有定义

有几种方式可以实现对内函数的调用。

1.在外函数内部调用内函数,即用函数名调用

def func1():
    print("这是外部函数")
    def func2():
        print("这是内部函数")
    func2() #函数名调用内函数
func1() 

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

2.可以用return调用内函数

在使用return之前,需要说明一点:我们都是使用"函数名()“调用函数的方法,单独使用"函数名”,我们会得到函数的内存地址;(函数名后面加括号才会告诉python,参数是否对得上,然后执行函数的代码块。)

  • "return函数名()"调用内函数
def func1():
    print("这是外部函数")
    def func2():
        print("这是内部函数")
    return func2()
func1()

函数没有返回值,即返回值为None,"return func2()"和"func2()"的效果是一样的

def func1():
    print("这是外部函数")
    def func2():
        print("这是内部函数")
    return func2()
m = func1() #调用函数func1(),调用函数func2的方法
print(m)    #m为None
  • 外函数内部"return函数名",也可以调用内函数,只不过调用外函数时多加一个括号
def func1():
    print("这是外部函数")
    def func2():
        print("这是内部函数")
    return func2
m = func1() 
print(m)
# 
#执行结果为
这是外部函数
<function func1.<locals>.func2 at 0x0000000002EB6620>

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

def func1():
    print("这是外部函数")
    def func2():
        print("这是内部函数")
    return func2
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则可以直接修改

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python中的函数嵌套和嵌套调用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python函数嵌套调用的实现方法

这篇文章主要讲解了“python函数嵌套调用的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python函数嵌套调用的实现方法”吧!说明1、在一个函数中又调用了另一个函数,调用函数t
2023-06-20

如何使用Python中的内嵌函数和嵌套作用域

如何使用Python中的内嵌函数和嵌套作用域Python是一种功能强大的编程语言,它为开发者提供了许多有用的功能和工具。其中,内嵌函数和嵌套作用域是Python中的两个重要概念。本文将介绍如何使用这些概念,并提供具体的代码示例。在Pytho
如何使用Python中的内嵌函数和嵌套作用域
2023-10-28

c++中函数的定义和调用可以嵌套吗

可以。c++ 允许函数嵌套定义和调用。外部函数可定义内置函数,内部函数可在作用域内直接调用。嵌套函数增强了封装性、可复用性和作用域控制。但内部函数无法直接访问外部函数的局部变量,且返回值类型需与外部函数声明一致,内部函数不能自递归。C++
c++中函数的定义和调用可以嵌套吗
2024-05-06

python 中的嵌套类

在看 idarling 源码中,经常出现如下代码:import sysimport ida_funcsimport ida_kernwinfrom PyQt5.QtCore import ( # noqa: I202 QAbstra
2023-01-31

python中的嵌套类

在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下。动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问题同时简化了程序,值得学习。#!/usr/bin/env pyt
2023-01-31

怎么在Python中实现函数嵌套

怎么在Python中实现函数嵌套?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。内部/内嵌函数1、定义:在一个函数的函数体内使用关键字def关键字定义一个新的函数,这个新的函
2023-06-15

python-函数的对象、函数嵌套、名称

目录 函数的对象 函数对象的四大功能 引用 当做参数传给一个函数 可以当做函数的返回值 可以当做容器类型的元素
2023-01-31

python 库中的嵌套目录和类

问题内容高效导入我正在构建的这个库中有几个嵌套目录,一些嵌套目录没有文件但其他目录没有,或者每个目录都有一个或多个类文件。该库基本上是从另一种语言移植的,我必须保持结构相同。我正在寻找代码组织和模块访问,而无需在导入语句中重复myl
python 库中的嵌套目录和类
2024-02-06

Excel的round函数如何嵌套

本篇内容主要讲解“Excel的round函数如何嵌套”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Excel的round函数如何嵌套”吧!round函数嵌套的方法1、首先选中数据。 2、选择方方
2023-07-04

Python中嵌套类的实现

本文主要介绍了Python中嵌套类的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-14

Python嵌套循环的使用

本文主要介绍了Python嵌套循环的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
2023-02-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录