为什么在Python中不创建新变量时,数据类型转换无法生效?
为什么Python中直接调用int()转换不改变原变量类型?
先看你给出的代码示例:
age = input("how old are you? ") int(age) print(type(age)) # <class 'str'> age = input("how old are you? ") age_as_int = int(age) print(type(age_as_int)) # <class 'int'>
原因很简单:
- Python里的字符串属于不可变类型,而且
int()这类类型转换函数不会修改原变量本身——它只是基于原变量的数值,创建一个全新的整数对象并返回。 - 如果不把这个返回的新对象赋值给某个变量,它会被Python的垃圾回收机制直接丢弃,原变量
age还是指向最初的字符串对象,类型自然不会变。 - 只有把
int(age)的返回值赋值给变量(不管是新变量,还是重新赋值给age本身,比如age = int(age)),这个变量才会指向新的整数对象,类型也就变成int了。
内容的提问来源于stack exchange,提问作者Arthur Romo
相关产品推荐
相关产品推荐

