python:UnboundLocalError: local variable 'sum1' referenced before assignment

错误概述:

#自定义统计目录大小函数
import os 
#统计文件大小
sum1=0
#
def fSize(file1):

	return os.path.getsize(file1)  #少了return

def foSize(dir1):
#获取文件中的所有文件信息
	flist=os.listdir(dir1)
	for f in flist:
		file1=os.path.join(dir1,f)
		#判断是否为文件
		if os.path.isfile(file1):
			global sum1
			sum1+=fSize(file1)  #调用自定义文件复制函数复制文件
		#判断是否为目录
		if os.path.isdir(file1):
			foSize(file1)  #递归调用
	return sum1

对于python中的变量而言,即使前面定义了全局变量

sum1=0

但是当后面的程式段要用时,由于是在函数范围内被赋值,故被认为是局部变量:

def foSize(dir1):
#获取文件中的所有文件信息
	flist=os.listdir(dir1)
	for f in flist:
		file1=os.path.join(dir1,f)
		#判断是否为文件
		if os.path.isfile(file1):
			global sum1
			sum1+=fSize(file1)  #调用自定义文件复制函数复制文件
		#判断是否为目录
		if os.path.isdir(file1):
			foSize(file1)  #递归调用
	return sum1

解决方法:

在函数里再用golbal 声明即可(这样编译器就可以看到该全局变量其实已经在函数外就被定义过了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值