Python中在进行赋值运算时即使两侧操作数的类型不同也不会报错?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中在进行赋值运算时即使两侧操作数的类型不同也不会报错?相关的知识,希望对你有一定的参考价值。
是的,在 Python 中,在进行赋值运算时,即使两侧操作数的类型不同也不会报错。例如,下面的代码将一个整数赋值给一个字符串变量,不会产生任何错误:
在 Python 中,这种赋值方式称为动态类型赋值。这意味着在 Python 中,变量的类型是在运行时动态确定的,而不是在编译时静态确定的。这也是 Python 与其他语言的一个主要区别。
但是,在 Python 中,在进行某些运算时,如果两侧操作数的类型不匹配,可能会产生类型错误。例如,如果尝试将一个字符串与一个整数相加,会产生类型错误:
在 Python 中,即使在赋值运算时不会报错,但在进行某些运算时,如果两侧操作数的类型不匹配,可能会产生类型错误。例如,如果尝试将一个字符串与一个整数相加,会产生类型错误:
因此,在 Python 中,在进行某些运算时,需要注意操作数的类型是否匹配,以避免类型错误的发生。
总之,在 Python 中,在进行赋值运算时即使两侧操作数的类型不同也不会报错,但在进行某些运算时,如果两侧操作数的类型不匹配,可能会产生类型错误。因此,在编写 Python 代码时,需要注意操作数的类型。
参考技术A Python 和严格限定变量类型的C语言、Java语言不同。在 Python 中,变量的类型是在程序运行时动态确定的,而不是在运行前静态编译阶段被确定的。Java基础——运算符
Java运算符
算术运算符
操作符 | 名称 | 描述 |
---|---|---|
+ | 加法 | 相加运算符两侧的值 |
– | 减法 | 左操作数减去右操作数 |
* | 乘法 | 相乘操作符两侧的值 |
/ | 除法 | 左操作数除以右操作数 |
% | 取余 | 左操作数除以右操作数的余数 |
++ | 自增 | 操作数的值增加1 |
-- | 自减 | 操作数的值减少1 |
要点 :
- 加号:当+两边是数值时,当作算术符号,当某一边是非数值时,当作字符串连接符号
- 进行除法运算时,若两个操作数是整型的,结果也会是整型的,舍弃掉小数部分;如果有一个数是浮点数,结果将自动转型为浮点型
- 进行取余运算时,若两个操作数是整型的,结果也会是整型的,如果有一个数是浮点数,结果将自动转型为浮点型
- 自增和自减时,需要注意操作符的位置。当操作数在数值前面时,先进行自增/自减操作,再使用数值。当操作数在数值后面时,先使用数值,再进行自增/自减操作。
关系运算符
操作符 | 名称 | 描述 |
---|---|---|
> | 大于 | 相加运算符两侧的值 |
< | 小于 | 左操作数减去右操作数 |
== | 等于 | 相乘操作符两侧的值 |
>= | 大于等于 | 左操作数除以右操作数 |
<= | 小于等于 | 左操作数除以右操作数的余数 |
!= | 不等于 | 操作数的值增加1 |
要点 :
- 比较运算符“==”用来比较基本数据类型是比较的是值是否相等,比较引用数据类型是比较的是引用是否相等,引用数据类型用equals()来比较字面量是否相等
- equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象),定义的equals与==是等效的
- String类重写了equals方法,先判断是否为同一个对象,不是的话再判断长度,长度不同返回false,长度相同再转为char字符数字,判断每一个字符是否相同
逻辑运算符
操作符 | 名称 | 描述 |
---|---|---|
&& | 短路与 | 当且仅当两个操作数都为真时,条件才为真 |
& | 逻辑与 | 当且仅当两个操作数都为真时,条件才为真 |
| | | 短路或 | 当两个操作数中任何一个为真,条件为真 |
| | 逻辑或 | 当两个操作数中任何一个为真,条件为真 |
! | 逻辑非 | 用来反转操作数的逻辑状态 |
要点 :
- 短路与:从左到右依次判断,遇到false则停止,不再进行后面的判断。(比如对象先判空,再判断值)
- 短路或:从左到右依次判断,遇到true则停止,不再进行后面的判断。
位运算符
操作符 | 名称 | 描述 |
---|---|---|
& | 按位& | 如果相对应位都是1,则结果为1,否则为0 |
| | 按位或 | 如果相对应位都是0,则结果为0,否则为1 |
^ | 异或 | 如果相对应位值相同,则结果为0,否则为1 |
~ | 按位取反 | 翻转操作数的每一位,即0变成1,1变成0。结果为: -(X+1) |
<< | 按位左移 | 通常格式为:value << num,value按位左移num位 |
>> | 有符号按位右移 | 通常格式为:value >> num,value按位右移num位。 |
>>> | 无符号按位右移 | 通常格式为:value >> num,value按右移num位 |
要点 :
- 计算机中的数字运算是以补码形式进行的
- 位移运算符使用的数据类型有char、byte、short、int和long
- 一个数左移n位,就是将这个数乘以2的n次方
- 一个数右移n位,就是将这个数除以2的n次方
赋值运算符
操作符 | 名称 | 描述 |
---|---|---|
= | 赋值 | 右操作数的值赋给左侧操作数 |
+= | 加和赋值 | 左操作数和右操作数相加赋值给左操作数 |
-= | 减和赋值 | 左操作数和右操作数相减赋值给左操作数 |
*= | 乘和赋值 | 左操作数和右操作数相乘赋值给左操作数 |
/= | 除和赋值 | 左操作数和右操作数相除赋值给左操作数 |
%= | 取模和赋值 | 左操作数和右操作数取模后赋值给左操作数 |
<<= | 左移位赋值 | 左移位赋值运算符 |
>>= | 右移和赋值 | 右移位赋值运算符 |
&= | 按位与赋值 | 按位与赋值运算符 |
^= | 按位异或赋值 | 按位异或赋值操作符 |
|= | 按位或赋值 | 按位或赋值操作符 |
要点 :
- 上面这些赋值运算符都具有隐式强制类型转换功能
条件运算符
(条件) ? 结果一 : 结果二;
如果条件成立,则执行结果一,否则,执行结果二
要点 :
- jdk1.7三目运算符,并且第二、第三位操作数分别是基本类型和对象。所以对对象进行拆箱操作,由于该对象为null,所以在拆箱过程中调用null.booleanValue()的时候就报了NPE
instanceof运算符
要点 :
运算符优先级
要点 :
- 运算符优先级不要死记硬背
- 记住常用的加减乘除
- 其余的用括号,方便阅读
以上是关于Python中在进行赋值运算时即使两侧操作数的类型不同也不会报错?的主要内容,如果未能解决你的问题,请参考以下文章