博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python web框架企业实战详解(第六期)\第二课时-pickle&__eq__
阅读量:4177 次
发布时间:2019-05-26

本文共 1973 字,大约阅读时间需要 6 分钟。

1、python的值传递和引用传递区别,哪些类型值传,哪些是引用传递?值传递和引用传递区别:依据对象是否可变来确定和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。python一般内部赋值变量的话,都是传个引用变量,和C语言的传地址的概念差不多。可以用id()来查询内存地址如果a=b的话, a和b的地址是相同的;如果只是想拷贝,那么就得用 a=b[:]。# -*- coding: cp936 -*-#值传递def f1(aa):    aa=1    print "id(aa)=" , id(aa)    print aa    bb=123print "id(bb)=" ,id(bb)f1(bb)print bb#引用传递def f2(aa):    aa[0]=[1]    print "id(aa)=" ,id(aa)    print aa    bb=[123]print "id(bb)=" ,id(bb)f2(bb)print bb>>> id(bb)= 30778664id(aa)= 307781441123id(bb)= 44761936id(aa)= 44761936[[1]][[1]]>>>2、使用python编写一个命令程序:里面保存了若干用户成员的信息,用户只有登陆后才能查看这些用户的信息。即:用户启动python脚本,然后输入用户名密码登陆成功后,使用命令可以查看其他用户信息# -*- coding: cp936 -*-class MyUser(object):    def __init__(self,username,password):        self.username=username        self.password=password    def __del__(self):        pass    def __str__(self):        return str('username=%s,password=%s' % (self.username,self.password))    def __eq__(self,other):        return self.username==other.username and self.password==other.password        import pickledir(pickle)user1=MyUser('karliao','123456')user2=MyUser('test','123')fa=open('e:/aa.txt','w')pickle.dump(user1,fa,2) ##0->文本形式、1,2->二进制形式pickle.dump(user2,fa,2)fa.close()fr=open('e:/aa.txt','r')users=[]while True:    try:        user=pickle.load(fr)        users.append(user)    except EOFError,e:        breakusername=raw_input('Please input your username:')password=raw_input('Please input your password:')curUser=MyUser(username,password)if curUser in users:    for user in users:        print user>>> Please input your username:testPlease input your password:123username=karliao,password=123456username=test,password=123>>> ================================ RESTART ================================>>> Please input your username:testPlease input your password:111>>> --eof--

转载地址:http://nktai.baihongyu.com/

你可能感兴趣的文章
Ubuntu18上交叉编译树莓派3B+ opencv4.10 (非常详细) 第二章-依赖库
查看>>
Effective C++ 自己不足的地方摘要
查看>>
ubuntu安装和完全卸载命令
查看>>
QT保存文本为ANIC和Unicode
查看>>
高效程序员的45个习惯:敏捷开发修炼之道 - 读后感
查看>>
linux灰度图数组保存为bmp图像
查看>>
linux获取MAC地址办法
查看>>
简单的c++ UDP类 + 多线程 win32编程
查看>>
推荐一本挺好的Android书籍
查看>>
Android EditText和Button控件搭配如何更好看些
查看>>
Android相对布局
查看>>
Android - 自定义标题栏
查看>>
Android ListView 动态添加一行数据
查看>>
MFC 查找文件夹内指定后缀的文件名
查看>>
论选书的重要性
查看>>
单片机跑马灯代码示例
查看>>
Vivo 手机升级最新系统,Android Studio不能再调试,报The application could not be installed: INSTALL_FAILED_TEST_ONLY
查看>>
74HC595串转并模块使用代码例子 (并口接交通灯)
查看>>
74 HC595 级联控制16 * 16显示屏
查看>>
MFC ListCtrl增加了item,却没有显示
查看>>