python.自定义函数传递序列变量与读文件的问题

hitcser01 2012-04-13 04:45:42
import cPickle as p

def read(body):
f=file('name.data')
body=p.load(f)
print body,'function'

name=[]
read(name)
print name,'main'

想从自定义函数中读入文件内容,放入‘name'中,可是失败,求帮助!
...全文
211 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hitcser01 2012-04-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

很正常没啥问题,你是操作body的元素,那么name的元素就会跟着变,如果写成body=['c','e'],那么name不会有任何变。
按c的思路,python都是传指针的,所以你不用担心返回的东西有多大,就是个指针而已。同样的c里传指针也是传值,函数里也不是为了要改指针本身的值,而是要改变指针所指的对象。
[/Quote]为什么“操作body的元素,那么name的元素就会跟着变,如果写成body=['c','e'],那么name不会有任何变。”?可以说说在书上哪里看的吗?没找到,或者帮忙解释下?
angel_su 2012-04-13
  • 打赏
  • 举报
回复
很正常没啥问题,你是操作body的元素,那么name的元素就会跟着变,如果写成body=['c','e'],那么name不会有任何变。
按c的思路,python都是传指针的,所以你不用担心返回的东西有多大,就是个指针而已。同样的c里传指针也是传值,函数里也不是为了要改指针本身的值,而是要改变指针所指的对象。
hitcser01 2012-04-13
  • 打赏
  • 举报
回复
问题还有:
def func(body):
body[0]='c'
print body,'func'


name=['a','e']
print name,'main-1'
func(name)
print name,'main-2'

结果:
['a', 'e'] main-1
['c', 'e'] func
['c', 'e'] main-2
hitcser01 2012-04-13
  • 打赏
  • 举报
回复
新手,真正学习不到5天,勿笑,呵呵。
1楼:特定情况下,必须要函数传值。
2楼:可以,有没有更好的办法,我觉得返回这么一个对象,如果数据较大,会不会很费劲?
老牛同学 2012-04-13
  • 打赏
  • 举报
回复

import cPickle as p

def read():
f=file('name.data')
body = p.load(f)
print body,'function'
return body

name = read()
print name,'main'

加载到数据后,直接返回。
angel_su 2012-04-13
  • 打赏
  • 举报
回复
函数是传值的,body=p.load(f)这样不会改动name,改body.append(...)或者直接返回p.load(f)简单点...

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧