Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

笨方法学python 33课

$
0
0

今天Eiffel看到了第33章,任务是把一个while循环改成一个函数。

我在把while循环改成函数上很顺利,但是不知道怎么写python的主函数,在参数的调用上也出现了问题。

通过查资料,发现python的main函数可以用如下的方式来表示:

if __name__ == '__main__'

然后自然而然的想把main函数里声明的参数i,numbers,m传入loop()中。

最开始的想法:


def loop(i,numbers,m):
while(i<m):
print "at the top is %d" %i
numbers.append(i)
i = i+1
print "Numbers now: ", numbers
print "At the bottom i is %d" % i
print "The numbers:"
for num in numbers:
print num
if __name__ == '__main__':
i = 0
numbers = []
m = rawinput("input:")
loop(i,numbers,m)
print "thank you"

成功运行,但是运行结果是一个远大于输入的的数组,下图书raw_input为3的结果:


笨方法学python 33课

讲raw_input改为input之后,可以正常输出结果:


笨方法学python 33课

心得总结:

1、main函数在python中的表示(如上述)。

2、python中的参数传递方法,目前看来,与c++差别不大。

3、input与raw_input:区别在于raw_input将所有输入的东西一视同仁(视为字符串),而input则会自动区分输入的类型。如上文输入3的时候,raw_input应该是将3看成了字符串,那么字符串的值可能就是运行结果中的6907+1=6908了。

4、global参数:在编写的过程中,一直很疑惑一点:就是main函数中的i变量应该是默认为全局变量的,我并没有在loop函数里边声明i变量为global,为什么loop里边的i值持续改变,却没有报错“referenced before assignment”呢?后来想到,是因为我是用参数传递的方法传递的i变量,所以函数内外的i值始终是一致的。换言之,如果loop()没有引用参数i,那么其内部的i则必须定义为global i。

5、其实python中main函数并不是必要的。


Viewing all articles
Browse latest Browse all 9596

Latest Images

Trending Articles