鱼C论坛

 找回密码
 立即注册
查看: 733|回复: 1

函数内调用全局变量报错,说我没有赋值局部变量,引用

[复制链接]
发表于 2019-1-17 22:16:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import easygui as g
  2. import sys
  3. import pickle
  4. import os
  5. 文件 = 0


  6. msg = '''【*真实姓名】为必填\n【*手机号码】为必填\n【E-mail】为必填'''
  7. title = '账号中心'
  8. list1 = ['*用户名','*真实姓名','固定电话','*手机号码','*QQ,E-mail']
  9. list2 = ['你登录的账号','你身份证上的名字','',]
  10. temp = g.multenterbox(msg,title,list1,list2)
  11. dict1 = {temp[0]:temp[1:]}


  12. def dir_data(name):
  13.     f = open('data.pkl','rb')
  14.    
  15.    

  16. def update_file(data_dict):
  17.     data_file = open('data.pkl','wb')
  18.     data_dict.update(dict1)   #跟新字典
  19.     pickle.dump(data_dict,data_file)  #把字典倒入泡菜缸
  20.     data_file.close()       #关闭文件,保存


  21. def panduan_name():           #判断数据是否重复
  22.     f = open('data.pkl','rb')
  23.     data_dict = pickle.load(f)
  24.     name_key = list(data_dict.keys())
  25.     if temp[0] in name_key:                      #这里想判断用户名在不在 KYE里面,,,居然说我变量没有赋值,这个TEMP变量我一出来就给了全局了。。。
  26.         msg = '用户信息已存在,是否更新【YES更新/NO查看数据】'
  27.         yes_or_no = g.buttonbox(msg,choices =('YES','No'))
  28.         print (yes_or_no)
  29.         if yes_or_no == 'YES':
  30.                 update_file(data_dict)
  31.         if yes_or_no == 'No':
  32.                 list2 = list(data_dict.items(temp[0]))
  33.                 temp = g.multenterbox(msg,title,list1,list2)
  34.                
  35.                
  36.         f.close()
  37.             
  38.     else:
  39.         update_file()







  40. if 'data.pkl' in os.listdir():
  41.     panduan_name()
  42. else:
  43.     data_file = open('data.pkl','wb')
  44.     pickle.dump(dict1,data_file) #
  45.     data_file.close()
  46.     print('初始化了数据')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-1-18 00:01:46 | 显示全部楼层
本帖最后由 _摆架_回宫、 于 2019-1-18 00:02 编辑

已经解决了temp = g.multenterbox(msg,title,list1,list2) 又赋值了一次
但是现在又出现一个问题,现在基本功能可以了,但是选择NO的时候还是会更新数据。。。
  1. import easygui as g
  2. import sys
  3. import pickle
  4. import os
  5. 文件 = 0
  6. def djyhxx(newlist):
  7.     msg = '''【*真实姓名】为必填\n【*手机号码】为必填\n【E-mail】为必填'''
  8.     title = '账号中心'
  9.     list1 = ['*用户名','*真实姓名','固定电话','*手机号码','*QQ,E-mail']
  10.     list2 = newlist
  11.     temp = g.multenterbox(msg,title,list1,list2)
  12.     dict1 = {temp[0]:temp[1:]}
  13.    
  14.     return temp,dict1


  15.    
  16.    

  17. def update_file(data_dict):
  18.     data_file = open('data.pkl','wb')
  19.     data_dict.update(dict1)   #跟新字典
  20.     pickle.dump(data_dict,data_file)  #把字典倒入泡菜缸
  21.     data_file.close()       #关闭文件,保存


  22. def panduan_name(temp,dict1):           #判断数据是否重复
  23.     f = open('data.pkl','rb')
  24.     data_dict = pickle.load(f)
  25.     name_key = list(data_dict.keys())
  26.     if temp[0] in name_key:                                    #为什么访问不了全局变量
  27.         msg = '用户信息已存在,是否更新【YES更新/NO查看数据】'
  28.         yes_or_no = g.buttonbox(msg,choices =('YES','No'))
  29.         print (yes_or_no)
  30.         if yes_or_no == 'YES':
  31.             update_file(data_dict)
  32.         if yes_or_no == 'No':
  33.             newlist =list(temp[0])                    #有点烦,从列表去的是字符串。。。。又换成列表
  34.             newlist.extend(data_dict.get(temp[0]))    #用查到的旧数据扩展newlist
  35.             f.close()
  36.             #newtemp = g.multenterbox(msg,title,list1,newlist)   #又弹出以框,显示以前的数据。。。接下来再这个界面又怎么操作呢?
  37.             temp2,dict2 = djyhxx(newlist)
  38.             return data_dict

  39.                
  40.    
  41.             
  42.     else:
  43.         f.close()
  44.         update_file(data_dict)
  45.         return data_dict
  46.    
  47.    
  48.    




  49. temp,dict1 = djyhxx('')
  50. if 'data.pkl' in os.listdir():
  51.     print ('有文件')

  52.     panduan_name(temp,dict1)
  53. else:
  54.    
  55.     data_file = open('data.pkl','wb')
  56.     pickle.dump(dict1,data_file) #
  57.     data_file.close()
  58.     print('初始化了数据')

  59. panduan_name(temp,dict1)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-13 11:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表