python中正确的赋值语句_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里通通无效!!!

先来看第一个实例

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xNjk2OTgwLzIwMTkwOS8xNjk2OTgwLTIwMTkwOTE5MTk0NTM2MzUwLTM0ODIxMzc2Ny5wbmc=.jpg

注意 ++x 和 --x得到的值均为 x的值 5 ,也就是说++/--并没有像我们想象的那样将x 的值+1/-1,这个伪自增自减可真是够狠的。

而且我们注意到后缀的++/--不仅没有做出改变,反而还提示语法错误

python lady真的让人琢磨不到头脑啊

问题先放在这,来看下一个实例

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xNjk2OTgwLzIwMTkwOS8xNjk2OTgwLTIwMTkwOTE5MTk0OTE1ODc1LTE2MzIzNjk1NTMucG5n.jpg

这里我仍然像使用C一样使用了这一连串的语句,最终判断 x 的值是否大于0,但是直接报错 SyntaxError!

可见这一连串的语句并不能正常运行,那么问题出在哪了呢?

紧接着看最后一个实例

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xNjk2OTgwLzIwMTkwOS8xNjk2OTgwLTIwMTkwOTE5MTk1MjE2NjA5LTE0NTA5MjA0MjcucG5n.jpg

显然我用C的语法在这里写了一个逗号表达式,逗号表达式中包含了赋值语句

python lady依旧毫不留情的报错

答案在这里:

1.python中并没有自增自减运算符,有的只是作为正负号(+/-)的数学符号

所以上例中 ++x 相当于给 x的值取正再取正,而 --x相当于给 x的值取负再取负,自然最后x的值不会发生变化

而我们都知道数学中正负号只能位于数字的前边,并不能位于数字后面(变成加减号),因此 C里面的后缀++/--在python里面理所应当的报错啦

看一个例子加深一下理解

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xNjk2OTgwLzIwMTkwOS8xNjk2OTgwLTIwMTkwOTE5MjAwMDA1OTQyLTE3NTk4Njc5NzQucG5n.jpg

怎么样,这样就清楚多了吧

2.python中赋值语句采用的引用传递方式,而不是值传递

也就是 y = x = 5 是正确的,传递的是引用,而 y = (x = 5)就是错误的

前者属于python中的链式赋值,从左往右,先将y引用对象5,再让x引用对象5,;

后者由于在python中赋值号从左至右,但括号优先级高,故先让x引用对象5,而x= 5是没有返回值的,因此就相当于将一个没有返回值的结果赋值给y

参考链接:https://blog.csdn.net/weixin_34320159/article/details/93577037

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基本语法&lowbar;函数&lowbar;返回值

目录 目录 前言 函数的返回值 在函数中Return和Print的区别 函数中的文档 前言 函数的返回值是函数重要的组成部分.函数的根本在于实现程序的部分功能,所以很多时候我们需要将函数执行后的结果返 ...

python使用threading获取线程函数返回值的实现方法

python使用threading获取线程函数返回值的实现方法 这篇文章主要介绍了python使用threading获取线程函数返回值的实现方法,需要的朋友可以参考下 threading用于提供线程相 ...

Python基础之函数参数与返回值进阶

参数作用:如果外界希望在函数内部处理数据,就可以将数据作为参数传入函数内部: 返回值作用:如果希望一个函数函数执行完成后,向外界报告函数的执行结果,就可以使用函数的返回值. 函数的返回值 进阶 利用元 ...

python中函数的参数和返回值

目录 函数 目标 01. 函数参数和返回值的作用 1.1 无参数,无返回值 1.2 无参数,有返回值 1.3 有参数,无返回值 1.4 有参数,有返回值 02. 函数的返回值 进阶 示例 -- 温度和 ...

Python调用C的SDK出现返回值不符合预期以及Segmentation fault

1.sdk返回值不是int型 1.1 登录函数调用 def login(ip, port, username, password, device_info, error_code):"&qu ...

Python迭代器:捕获Generator的返回值

但是用for循环调用generator时,发现拿不到generator的return语句的返回值.如果想要拿到返回值,必须捕获StopIteration错误,返回值包含在StopIteration的v ...

python定义函数时的默认返回值

python定义函数时,一般都会有指定返回值,如果没有显式指定返回值,那么python就会默认返回值为None, 即隐式返回语句: return None 执行如下代码 def now(): prin ...

python限定方法参数类型、返回值类型、变量类型等

typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方 ...

Python&plus;request 登录接口reponse的返回值token跨py文件的传递《二》

主要使用场景: 一般我们在进行接口测试时,依赖登录接口后reponse中的某些返回值,因此需要将login接口单独写一个py文件,另外的py文件均可调用login的reponse返回值使用.共用登录接 ...

随机推荐

T-Shirt 估算法

T-Shirt Size Estimation (2015-05-11 22:58:18) 转载▼     产出:产品经理会对每一条需求评估上业务影响力的尺寸,如:XXXL 影响一千万人以上或是可以占 ...

const 与指针

深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p ...

ExtJs 4&period;2&period;1 复选框数据项动态加载&lpar;更新一下&rpar;

最近在做博客项目,后台管理用的是ExtJs4.2.1版本,因为是初学所以在使用的时候也遇到不少的这样或那样的问题,也写了不少这方面的博客,今天要写的博客是关于复选框数据项动态的加载功能,以前也没用过, ...

PHP如何大幅度提升运行效率? -- 把它编译成机器码!

书接上回   今天讨论如何大幅度提升PHP的运行效率. 在这,我们不纠结神马单双引号.全局变量.OO.require_once.错误抑制.... 在这,我们也不讨论APC.opcache.XCac ...

javascript 内置对象 第17节

内置对象
内置对象 ...

HDU-2509 Be the Winner

http://acm.hdu.edu.cn/showproblem.php?pid=2509 Be the Winner Time Limit: 2000/1000 MS (Java/Others)  ...

&lbrack;RxJS&rsqb; Filtering operators&colon; takeLast&comma; last

Operators take(), skip(), and first() all refer to values emitted in the beginning of an Observable ...

Linux上安装和卸载mysql数据库 (一)

一.前言 第一次写博客,很激动同时有点畏惧,激动是我可以将我的经验进行分享,畏惧是我怕我写的东西,大家借鉴的时候,有些步骤不能成功.不过,我还是很有信息的,我分享的经验都是我搭建成功以后才分享出来.这 ...

1&period;Ubuntu系统与vmware虚拟机的安装与使用

1.下载Ubuntu的镜像文件 种子文件的下载页面的链接:https://www.ubuntu.com/download/alternative-downloads 可以去选择版本的桌面版(Deskt ...

&lbrack;Leetcode&rsqb;134&period;加油站

这一题是贪心不是模拟 是贪心不是模拟 是贪心不是模拟! 如果用模拟的做法会比较慢,也失去了做这一题的趣味了. 模拟的方法很简单,就是每一个加油站都做起点模拟一遍,试一下能不能完成一圈,能完成一圈就保存 ...

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值