python3数据类型

1、介绍

python是解释型语言,变量不声明类型,而是由赋值进行确定,比如=之后的字面量或类型,或者形参接收的实参。

每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

2、标准数据类型

包括数值number(int、float、bool、comlex)、字符串str、元组tuple、列表list、集合set、字典dict

关于各类型的具体内容,另外分别记录。

2.1 可变和不可变

这六个标准数据类型中,可分为两组。

不可变数据:number、str和tuple,可变数据:list、set和dict

可变数据类型,是指的该类型的数据,允许改变其元素或属性,而不会改变对象整体,准确的说是对其内部操作,不改变对象的地址。

不可变数据类型,是不允许直接改写其元素或属性。

一般对象类型,是天然的可变数据类型。

2.2 传地址与传值

在方法或函数使用中,传地址还是传值取决于实参是可变类型还是不可变类型。

传地址,即对应的实参是可变类型,在方法或函数内对该变量操作,会直接影响方法或函数外的变量

相对的,则传值对应不可变类型,在方法或函数内对该变量操作,不会直接影响方法或函数外的变量

需要注意一种场景,方法或函数中通过形参接收到实参的对象或者list等可变类型,想在方法或函数内直接操作并改变实参的值,那么绝对不能重新使用该形参通过=赋值。而应该是直接对该形参的属性或者集合元素进行操作。

3、None值和未定义

(1)在python中,不存在未定义的变量,会提示报错

(2)python中,如果一个变量的值或类型暂不确定,又或者想清除某变量的值,可以将其赋值为None

None的类型是NoneType

4、数据类型转换

分为主动转换和被动转换

4.1 主动转换

基于函数或类的初始化进行转换

(1)str可以将所有类型转换为字符串

  • 对于基本数据类型,可以理解为直接就是字面量的str
  • 对于浮点数转换时,末尾无效的0会被抹除
  • 对非基础类型对象转换,输出<__main__.stu object at 0x0000027B1AE4BFD0>形式
  • 如果list、dict、set、tuple中包含非基础类型对象,则在其它部分是直接输出,对包含的对象占位输出
print(str([stu(), 'abc', 3.200, None, True, 2e5]))
[<__main__.stu object at 0x0000019DDFB7BFD0>, 'abc', 3.2, None, True, 200000.0]

(2)int转换

  • 可以将float转为int,是保留整数部分
print(int(5.4), int(5.5), int(5.6), int(-5.4), int(-5.5), int(-5.6))
5 5 5 -5 -5 -5
  • 可以将str转为int,包括正负数,但是不能是浮点数。空字符串或其它情况会报错
print(int('5'), int('+5'), int('-5'))
5 5 -5
  •  能将bool类型转换,True表示1,False表示0

(3)bool转换

print(bool(''), bool('abc'), bool(None), bool(5), bool(0), bool(-5), bool([]), bool(['aaa']))
False True False True False True False True
  •  空字符串、None值、0值、空list为False
class Stu:
    def __init__(self):
        pass
print(bool(Stu()), bool(list()), bool(str()), bool(dict()), bool(int()), bool(bytes()))
# True False False False False False
  • 对象一般会被转为True,但是基础数据类型以及部分builtins模块中的类创建会转为False

4.2 被动转换

(1)python中str只能与str相加,与其他类型相加会报错

(2)0+True的结果是1,int类型

5、type类

python3-type - 挖洞404 - 博客园 (cnblogs.com)

posted @ 2023-04-14 14:21  挖洞404  阅读(8)  评论(0编辑  收藏  举报