python变量与C/C++有很大不同,具体表现为:
在Python创建变量时: int a = 20,int b = 20;此时a,b的地址是相同的,即是给20分配内存地址,而非给a,b分配,C/C++与此相反
python支持链式赋值:例:int a=b=c=d=20; C/C++不支持链式赋值,如上情况会说:b,c,d为未定义标识符,即只定义了a变量,后面的不定义
简单推测:可能定义变量的不同导致Python支持链式赋值,而C/C++不支持
理由分析(不确定正误):因为Python的内存分配是分配给数值20的,a,b,c,d的id是相同的,故可以链式赋值,(类似C++中的指针,但不同,如上,给b重新赋值,其它变量的赋值不会改变) 而C++的内存分配是分配给变量的,故abcd四个变量地址不同,无法这样分配。疑惑:为什么无法分配?不是把同一个值赋给不同的地址?
解释:
csdn的ai说的:C不支持链式赋值是因为在C语言中,赋值操作的结果是一个右值,不能再次进行赋值。在链式赋值中,每个赋值操作的结果都是右值,而右值不能作为左值进行赋值操作。因此,C不支持链式赋值。
python还支持系列解包赋值:例:
a,b,c = 10,20,30 #定义abc三变量并赋值
print(a,b,c)
a,b,c = b,a,c #交换a,b的值
print(a,b,c)
一个变量由三部分组成:标识(变量名?),类型(数据类型),值
bool类型:true,false true为1,false为0
且可以作为十进制整形直接相加减
例:下方代码结果为:2,1
f = True
g = False
print( f + 1 )
print( g + 1 )
字符串类型:
可以使用单引号,双引号,三引号来定义
单引号和双引号中的内容只能在一行,三引号中内容可以分布在连续的多行
此处三引号指的是三个单引号,或三个双引号,均可实现此目的
强制类型转换:浮点型转整形直接抹小数,不谈四舍五入之类
文字类和小数类字符串,转不成整形
例:
a = '123'
print(int(a))
输出结果为123,因为是整数字符串 转整形
b = '123.123'
print(int(b))
结果为错误,因为字符串是小数串 转整形
c = 'Hello'
print(int(c))
结果为错误,因为是文字字符串 转整形
input小细节:input输入的数据均为字符串,无论输入什么数据,输出的都是字符串
例:
num1 = input('输入第一个数')
num2 = input('输入第二个数')
print(int(num1)+int(num2))
如果不强制类型转换,结果为1020,因为两个变量的数据类型都是字符串型,而不是预期的30
整除运算符:// 例:11 // 2 结果为 5
幂运算: ** 例:2**3 结果为 8 意为2的三次方