首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
Python嵌套函数变量作用域
社区首页 >问答首页 >Python嵌套函数变量作用域

Python嵌套函数变量作用域

提问于 2018-03-13 20:28:46
回答 2关注 0查看 446

我读过几乎所有关于这个主题的其他问题,但我的代码仍然不能正常工作。

我想我遗漏了python变量范围的一些东西。

这是我的代码:

代码语言:txt
AI代码解释
复制
PRICE_RANGES = {
                64:(25, 0.35),
                32:(13, 0.40),
                16:(7, 0.45),
                8:(4, 0.5)
                }

def get_order_total(quantity):
    global PRICE_RANGES
    _total = 0
    _i = PRICE_RANGES.iterkeys()
    def recurse(_i):
        try:
            key = _i.next()
            if quantity % key != quantity:
                _total += PRICE_RANGES[key][0]
            return recurse(_i) 
        except StopIteration:
            return (key, quantity % key)

    res = recurse(_i)

我得到了

"global name '_total' is not defined"

我知道问题出在_total任务,但我不明白为什么。不应该recurse()是否有权访问父函数的变量?

有人能向我解释一下关于python变量范围我缺少的是什么吗?

午夜的船长

发布于 2018-03-14 06:11:01

这是一个例子。

代码语言:txt
AI代码解释
复制
def outer():
    a = 0
    b = 1

    def inner():
        print a
        print b
        #b = 4

    inner()

outer()

连同声明b = 4注释掉,此代码输出0 1就像你期望的那样。

但如果你不评论那行,在这行print b,你会发现错误

代码语言:txt
AI代码解释
复制
UnboundLocalError: local variable 'b' referenced before assignment

似乎神秘的是b = 4可能会让b消失在它前面的线上。但是david引用的文本解释了为什么:在静态分析期间,解释器确定b被分配给inner,因此它是inner...。打印行尝试打印b在它被分配之前。

查看全部 2 条回答
为您推荐午夜的船长回答过的其他问题

实时音视频TRTC怎么实现直播场景类应用?

提问于 2021-04-05208
午夜的船长
blocks|key|614lg|type|unstyled|text|您好,实时音视频(TRTC)专门针对在线直播场景推出了10万人低延时互动直播解决方案,能保证主播与连麦主播的最低延时到200ms,普通观众的延时在1s以内,并且超强的抗弱网能力适应移动端复杂的网络环境。具体接入请您点击跑通直播模式(iOS&Mac)查看。|depth|inlineStyleRanges|entityRanges|offset|length|entityMap|0|LINK|mutability|MUTABLE|data|url|https://cloud.tencent.com/document/product/647/35429^0|0|31|F^^$0|@$1|2|3|4|5|6|7|K|8|@]|9|@$1|L|A|M|B|N]]]]|C|$D|$3|E|F|G|H|$I|J]]]]
1人回答了此问题
相关文章
python中作用域与函数嵌套
实际上我们在定义函数的时候,如果省略了星号,那么在调用函数的时候必须要省略星号,除非我们拆解后的参数个数刚好相等。
刘金玉编程
2019/07/31
8070
Python 变量作用域与函数
一个程序的所有的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的,变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称,两种最基本的变量作用域,第一种是局部变量,第二种是全局变量.定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域,而局部变量只能在其被声明的函数内部访问,全局变量则可以在整个程序范围内访问.
王 瑞
2022/12/28
2.5K0
Python进阶|函数变量作用域
在Python编程中,函数是我们接触较多的知识点,毕竟函数是用来节省代码量和提高程序效率很重要的一个手段。
罗罗攀
2019/10/08
7600
Python进阶|函数变量作用域
Python 函数与变量作用域
# Python 函数与变量作用域 # 函数的创建和调用 什么是函数 函数就是执行特定任务和以完成特定功能的一段代码 为什么需要函数 复用代码 隐藏实现细节 提高可维护性 提高可读性便于调试 函数的创建 """ @Author :frx @Time :2021/10/25 17:36 @Version :1.0 """ def calc(a,b): c=a+b return c result=calc(1,2) print(result) #3 # 函数的参数传递
用户9615083
2022/12/25
4770
Python 函数与变量作用域
Python函数详解一(函数参数、变量作用域)
函数的返回值用return语句返回,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。
吾非同
2020/10/26
1.1K0
Python函数详解一(函数参数、变量作用域)
【Python】包、模块、函数与变量作用域
文章目录 包 __init__ 注意包和模块的导入注意 引用 自动生成 一个py文件(模块)可以写多个类 包 必须要有__init__.py 包名 init init 导入,会自
瑞新
2020/07/07
3750
Python变量作用域
  Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
tonglei0429
2019/07/19
1.1K0
Python 变量作用域
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 变量作用域 ---- Python 变量作用域 1.变量作用域 2.局部变量 3.全局变量 4.同名的局部变量和全局变量 5.global 语句 ---- 1.变量作用域 Python 中规定每个变量都有它的作用域, 即变量只有在作用域范围内才是可见可用的。 作用域能避免程序代码中的名称冲突,在一
小嗷犬
2022/11/15
7940
Python 变量作用域
Python变量作用域
今天我们要说的是:变量的作用域 什么是作用域呢? 作用域就是某一个事件或者物体在某种情况下产生的特定的作用或效果(画外音:能不能说人话?) 好吧,那常老师来举个例子(不举栗子了,太累) 比如你,你是谁? 这个问题问的太TM好了,好吧,你先来试图回答一下你是谁? 可能有很多答案,没错,你只要能列举出两个以上不同的合理答案,就说明你已经理解并掌握作用域的概念了 常老师来举几个例子: 1.我在我父母面前我就是儿子 2.我在我爷爷面前我就是孙子 3.我在我侄子面前我就是叔叔 4.我在我弟弟的孩子面前,我就是TA大爷
企鹅号小编
2018/01/09
1K0
Python变量作用域
详解Python变量作用域
本文暂时不讨论类定义中的变量(成员)作用域,改天可能会单独成文介绍。 变量作用域总起来说可以这么理解:1)在函数内如果只引用某个变量的值而没有为其赋新值,该变量为(隐式的)全局变量;2)如果在函数内某条代码有为变量赋值的操作,该变量从此之后就被认为是(隐式的)局部变量,除非在函数内该代码之前显式地用关键字global进行了声明。 >>> def demo(): global x #声明或创建全局变量 x = 3 #修改全局变量的值 y =4 #局部变量 print(x, y) >>> x =
Python小屋屋主
2018/04/16
1.5K0
【Python系列】5. 函数与变量作用域
一、函数 函数:有一定功能的代码块 函数作用:提高利用率(重复使用)、封装(模块化) 语法 def 函数名(参数列表): 函数体(代码块) 调用 函数名(参数) 分类
用户9914333
2022/07/22
3460
Python 变量的作用域
变量可以使用的范围,程序的变量并不是哪个位置都可以访问的,访问的权限决定于变量时在哪里定义的
星哥玩云
2022/09/08
8290
Python 变量的作用域
python变量LEGB作用域
上层变量无法读取下层变量, 下层变量可读取上层变量, 但只可读取, 如果需要修改, 则需要关键字声明
不止于python
2022/05/31
3680
python 变量和作用域
python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
py3study
2018/08/02
7590
Python - 变量的作用域
局部变量:在函数内部,类内部,lamda.的变量,它的作用域仅在函数、类、lamda里面
小菠萝测试笔记
2020/06/09
1.7K0
Python之函数【参数,返回值,嵌套调用,作用域,匿名函数】
参数就是在声明函数时,在函数名后面的小括号内部填写参数,多个参数之间使用 , 分隔 。
叫我阿杰好了
2022/11/07
1.2K0
Python之函数【参数,返回值,嵌套调用,作用域,匿名函数】
4.0 Python 变量与作用域
在python中,变量的作用域决定了变量在哪些位置可以被访问。一个程序中的变量并不是所有的地方都可以访问的,其访问权限决定于变量的赋值位置。python中有两种最基本的变量作用域:局部作用域和全局作用域。局部变量是在函数内部定义的变量,只能在其被声明的函数内部访问。而全局变量则是在函数外定义的变量,可以在整个程序的范围内被访问。局部变量只有在其被声明的函数内部才能被访问,全局变量则可以在程序的任何地方被访问。变量的作用域对于程序的正确性和可读性非常重要,需要在编写程序时注意变量的赋值位置以及其作用域。
王 瑞
2023/08/13
4130
4.0 Python 变量与作用域
在python中,变量的作用域决定了变量在哪些位置可以被访问。一个程序中的变量并不是所有的地方都可以访问的,其访问权限决定于变量的赋值位置。python中有两种最基本的变量作用域:局部作用域和全局作用域。局部变量是在函数内部定义的变量,只能在其被声明的函数内部访问。而全局变量则是在函数外定义的变量,可以在整个程序的范围内被访问。局部变量只有在其被声明的函数内部才能被访问,全局变量则可以在程序的任何地方被访问。变量的作用域对于程序的正确性和可读性非常重要,需要在编写程序时注意变量的赋值位置以及其作用域。
王 瑞
2023/10/11
2020
Python中变量的作用域
我们在写代码过程中会用到很多变量,这些变量会出现在各种代码块中,有的出现在函数块里,有的在函数块外,例如:
py3study
2020/01/19
1.2K0
点击加载更多

相似问题

Python中默认参数的作用域是什么?

2280

参考:什么是变量作用域,哪些变量可以从哪里访问,什么是“未定义变量”错误?

2231

在if语句中初始化的变量的作用域是什么?

2365

设置跨域不起作用,仍然报跨域的错误??

1848

serverless函数如何支持跨域?

11.4K
相关问答用户
某公司 | 程序员擅长1个领域
新浪微博 | 高级总监擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档