关于python的两个入门问题

dddeee 2007-04-23 02:12:14
我使用的是python2.5 + eclipse + pydev

1。新建一个module时,为什么会产生一个__init__.py?这个文件有什么用?

2。看下面一段代码,为什么出错?
直接在一个py文件中输入:

index = 0

def test():
print index
if index >0 :
index = 1
else:
index = -1

test()

错误为:
Traceback (most recent call last):
File "D:\java\WORK32\TestPython\src\sdfd\SDf.py", line 10, in <module>
test()
File "D:\java\WORK32\TestPython\src\sdfd\SDf.py", line 4, in test
print index
UnboundLocalError: local variable 'index' referenced before assignment

我明白它的意思,但是我不知道怎么实现我的要求:
在test()中的index使用之前声明的,而不是在if else中重新声明

多谢大家!


...全文
268 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dddeee 2007-04-25
  • 打赏
  • 举报
回复
to ChumpKlutz(朽木) ( )
不是在类中,是在包下有一个__init__.py的文件
比如我现在新建了一个包
aaa
然后点键点它,再新建一个module,比如是Test.py
则在aaa下,会自动产生一个__init__.py的文件

这个文件里的代码,在什么情况下会被调用?
ChumpKlutz 2007-04-23
  • 打赏
  • 举报
回复
第一个问题的答案是:

在加载模块时,会首先执行这个方法

在类中定义__init()__的意思是在创建类实列时调用这个方法来初始化
dddeee 2007-04-23
  • 打赏
  • 举报
回复
第2个问题我已经找到答案了。原来要使用global。

但是如果把它再推广一下,如下,又将怎么办呢?
index = 0
def test():
index = 2
def test2() :
print index
index = 3
test2()

test()

怎么让print index打印出的是2的值而不是0?

37,722

社区成员

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

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