一个Python函数的问题 5
我在看《Python基础教程》的时候对于里面有一段代码和结果很疑惑,百思不得其解。有一个函数(我有所改动)definterval(start,stop=None,step...
我在看《Python基础教程》的时候对于里面有一段代码和结果很疑惑,百思不得其解。 有一个函数(我有所改动)
def interval(start,stop=None,step=1):
if stop is None:
start,stop=0,step=1
print start,' ',stop,' ',step
调用的时interval(10)
结果是 0 10 1
可以知道stop的值在start,stop=0,start这一句之后变成了10,我想知道为什么????
求好心人解答、。。 展开
def interval(start,stop=None,step=1):
if stop is None:
start,stop=0,step=1
print start,' ',stop,' ',step
调用的时interval(10)
结果是 0 10 1
可以知道stop的值在start,stop=0,start这一句之后变成了10,我想知道为什么????
求好心人解答、。。 展开
7个回答
展开全部
追问
恩,的确是我写错了,还有个小问题,为什么那一句能达到那个效果呢?
能拆分一下讲解一下么?
为什么我用start,stop=10
这样写就不行,必须在后面再加上一个start!
追答
至于为什么需要这样赋值,可能跟楼主学习过C,C++或者JAVA语言有关,举例来讲, 在C语言中,如下代码是可以正常编译的:
#include
int main()
{
int start, stop = 10;
int a;
printf("start:%d, stop:%d, a:%d", start, stop, a);
return 0;
}
输出:
start:0, stop:10, a:0
说明10赋值给了stop, start跟a一样,你只是定义了这两个变量,然后C编译器自动把他们初始化为0
在python就不太一样, python无需变量申明,你只要使用变量并同时赋值,这个变量就产生了,所以像上述语句中start,a变量都只是定义,在python中是不允许的。
另外python中有多变量赋值这个概念
如:
>>> v = ('a', 'b', 'e')
>>> (x, y, z) = v
>>> x
'a'
>>> y
'b'
>>> z
'e'
所以如果像以下方式赋值的话:
start,stop=10
10只是赋值给了start,而stop没有被赋值,所以出错。
可以这样 start,stop = 10 , 20
输出: start=10, stop=20
如果
start = 9
start,stop = 10 , start
输出:
start = 10
stop = 9
展开全部
start,stop=0,start
相当于
stop = start
start = 0
也就是吧start的值10赋给stop
然后把0赋值给start
stop自然就变成了10
相当于
stop = start
start = 0
也就是吧start的值10赋给stop
然后把0赋值给start
stop自然就变成了10
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个叫序列解包(可迭代对象解包)。
一开始我也是理解错误,start,stop=0,start我理解为以逗号隔开的三个语句,结果也是不得其解。
但是后面看对应的语法,知道它是以“=”为分隔,等号右边的值赋值给左边的变量,这样一下子就理解了。
一开始我也是理解错误,start,stop=0,start我理解为以逗号隔开的三个语句,结果也是不得其解。
但是后面看对应的语法,知道它是以“=”为分隔,等号右边的值赋值给左边的变量,这样一下子就理解了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
start, stop = 0, start等价于(start, stop) = (0, start)
就是给多个变量赋值,在《Python基础教程》的5.2.1节中有介绍。
就是给多个变量赋值,在《Python基础教程》的5.2.1节中有介绍。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
python 特有的语法:
变量赋值的时候 可以 这样
a , b = 1, 2
print a , b
输出 12
变量赋值的时候 可以 这样
a , b = 1, 2
print a , b
输出 12
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询