python函数编写⾃减1_python⾃增⾃减?赋值语句返回值?逗
号表达式?
咳咳,直接进⼊正题吧。
⾃增⾃减(++/--),以及赋值语句,还有逗号表达式都是在C/C++中常见的运算符或表达式。
熟悉C/C++的⼩伙伴们都知道,在C/C++中:
⾃增⾃减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的语句会使最终 x 的值为1
赋值语句将所赋的值作为该语句的返回值(值传递); 类似 (x = func()) > 0; 的语句会将函数 func()的返回值赋给 变量x ,并继续执⾏ x > 0的条件判断语句,这样的语句在C/C++中显然是合法且简洁的
逗号表达式⽤逗号作为语句间的分隔符,并以最后⼀个表达式的值作为整个逗号表达式的值; 类似 x = 5, y = 6, x > y;的语句就是⼀个逗号表达式,先执⾏x= 5,再执⾏y= 6,最终⽐较 x > y结果为 0 ,0就是该逗号表达式的结果
但是
这些
在python⾥通通⽆效
先来看第⼀个实例
注意 ++x 和 --x得到的值均为 x的值 5 ,也就是说++/--并没有像我们想象的那样将x 的值+1/-1,这个伪⾃增⾃减可真是够狠的。
⽽且我们注意到后缀的++/--不仅没有做出改变,反⽽还提⽰语法错误
python lady真的让⼈琢磨不到头脑啊
问题先放在这,来看下⼀个实例
这⾥我仍然像使⽤C⼀样使⽤了这⼀连串的语句,最终判断 x 的值是否⼤于0,但是直接报错 SyntaxError!
可见这⼀连串的语句并不能正常运⾏,那么问题出在哪了呢?
紧接着看最后⼀个实例
显然我⽤C的语法在这⾥写了⼀个逗号表达式,逗号表达式中包含了赋值语句
python lady依旧毫不留情的报错
答案在这⾥:
1.python中并没有⾃增⾃减运算符,有的只是作为正负号(+/-)的数学符号
所以上例中 ++x 相当于给 x的值取正再取正,⽽ --x相当于给 x的值取负再取负,⾃然最后x的值不会发⽣变化
⽽我们都知道数学中正负号只能位于数字的前边,并不能位于数字后⾯(变成加减号),因此 C⾥⾯的后缀++/--在python⾥⾯理所应当的报错啦
看⼀个例⼦加深⼀下理解
怎么样,这样就清楚多了吧
2.python中赋值语句采⽤的引⽤传递⽅式,⽽不是值传递
也就是 y = x = 5 是正确的,传递的是引⽤,⽽ y = (x = 5)就是错误的
前者属于python中的链式赋值,从左往右,先将y引⽤对象5,再让x引⽤对象5,;
后者由于在python中赋值号从左⾄右,但括号优先级⾼,故先让x引⽤对象5,⽽x= 5是没有返回值的,因此就相当于将⼀个没有返回值的结果赋值给y
3.还记得python中同时赋值的语句吗?
x,y,z = 3,4,5
这条语句让x引⽤3,y引⽤4,z引⽤5,;同时赋值要求等号两边数⽬对等。
⽽在⽰例语句中 x= 5, y = 6, x < y
将逗号与赋值混合使⽤,python lady⾃然先考虑赋值,发现前半段 x = 5, y不对等,直接就报错
可见在python中并没有C/C++中的逗号表达式
在python中逗号的作⽤有2:
a>分隔符,如我们的多个变量同时赋值语句
b>类型转换,还记得元组中提到的 (5) 与 (5,)的区别吗?前者类型为 int, 后者类型就是 tuple元组啦
每⽇精进⼀点点,加油!
------------------------------------------分隔线-----------------------------------
再补⼀个python中遇到的⼩知识逗号表达式的运算顺序
x,y,x = eval(input())
在使⽤eval()并且同时为 x,y,z三个变量赋值时,输⼊格式应⽤逗号隔开,⽽不是其他分隔符
---------------------------------------------end-----------------------------------
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论