一个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,我想知道为什么????
求好心人解答、。。
展开
 我来答
fullfocus
推荐于2018-04-14
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部

按照您的code,代码是无法编译的,简单的例证见图片。

另外,您的代码是不是应该这样:

def interval(start,stop=None,step=1):

                if stop is None:

                              start,stop=0,start

                              step=1

                print start,' ',stop,' ',step

调用的时interval(10)

结果是 0 10 1

是因为start,stop = 0, start 这一句, 把0赋给start, start的值赋给stop

追问
恩,的确是我写错了,还有个小问题,为什么那一句能达到那个效果呢?
能拆分一下讲解一下么?
为什么我用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
ziank
2011-02-28 · 知道合伙人互联网行家
ziank
知道合伙人互联网行家
采纳数:27 获赞数:166
网易资深员工 多年软件开发经验

向TA提问 私信TA
展开全部
start,stop=0,start
相当于
stop = start
start = 0
也就是吧start的值10赋给stop
然后把0赋值给start
stop自然就变成了10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nndmd3
2021-08-02 · TA获得超过117个赞
知道小有建树答主
回答量:211
采纳率:20%
帮助的人:30.7万
展开全部
这个叫序列解包(可迭代对象解包)。
一开始我也是理解错误,start,stop=0,start我理解为以逗号隔开的三个语句,结果也是不得其解。
但是后面看对应的语法,知道它是以“=”为分隔,等号右边的值赋值给左边的变量,这样一下子就理解了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乜私谢63bf602
2018-10-04
知道答主
回答量:1
采纳率:0%
帮助的人:802
展开全部
start, stop = 0, start等价于(start, stop) = (0, start)
就是给多个变量赋值,在《Python基础教程》的5.2.1节中有介绍。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
csusheep
2011-02-28
知道答主
回答量:29
采纳率:0%
帮助的人:18.3万
展开全部
python 特有的语法:
变量赋值的时候 可以 这样
a , b = 1, 2
print a , b
输出 12
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式