藏猊 2022-05-06 15:35 采纳率: 57.1%
浏览 46
已结题

python中的局部变量和全局变量问题

class Solution:
    def findTarget(self, nums: list[int], target: int):
        t = 0
        li = []
        def get_num(n):
            if n == target:
               # global t
                t += 1
                li.append(n)
        for i in li:
            get_num(i)
      return t

我有这样一个函数,为了方便提问简化了一下.
确认数组中有没有与目标相同的数,最后返回一个数量.
这个功能是很简单,问题是我在get_num中使用t的时候提示我

未解析的引用

当我加入global t时却提示:

全局变量在模块级别未定义.

不过li数组可以正常添加元素.
想问问这个局部变量究竟是个怎么回事.如果我想在前面的例子中修改t,要怎么样才能做到?

  • 写回答

1条回答 默认 最新

  • 於黾 2022-05-06 16:09
    关注

    因为你的t是在外层函数中定义的,所以不是全局变量
    然而内层函数中没有定义,所以只能读取,不能赋值
    如果需要在闭包函数中给外面的t赋值,需要在内层将t声明为
    nonlocal t

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 创建了问题 5月6日

悬赏问题

  • ¥15 高通安卓11提取完整线刷包软件,或者优博讯dt50顺丰刷机包
  • ¥20 C,有个译码器,换了信道就跑不出原来数据
  • ¥15 MIMIC数据库安装问题
  • ¥60 基于JTag协议开发Fpga下载器上位机,哪位大🐂有偿指导?
  • ¥20 全书网Java爬取数据
  • ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
  • ¥100 微信小程序跑脚本授权的问题
  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏
  • ¥15 STM32串口接收问题
  • ¥15 腾讯IOA系统怎么在文件夹里修改办公网络的连接