• python入门II--类型检查--类型转换--运算符


    一、对象

      Python是一门面向对象的语言。程序运行当中,所有的数据都是存储到内存当中然后再运行的。

        - 对象就是内存中专门用来存储指定数据的一块区域。
        - 对象实际上就是一个容器,专门用来存储数据。
        - 像我们之前学习的数值、字符串、布尔值、None都是对象 。

    结构(每个对象中都要保存三个数据):

      ① id(标识)
                > id用来标识对象的唯一性,每一个对象都有唯一的id
                > 对象的id就相当于人的身份证号一样
                > 可以通过id()函数来查看对象的id
                > id是由解析器生成的,在CPython中,id就是对象的内存地址
                > 对象一旦创建,则它的id永远不能再改变

       ② type(类型)
                > 类型用来标识当前对象所属的类型
                > 比如:int str float bool
                > 类型决定了对象有哪些功能
                > 通过type()函数来查看对象的类型
                > Python是一门强类型的语言,对象一旦创建类型便不能修改

       ③ value(值)
                > 值就是对象中存储的具体的数据
                > 对于有些对象值是可以改变的
                > 对象分成两大类:可变对象 不可变对象
                    - 可变对象的值可以改变。
                    - 不可变对象的值不能改变,之前学习的对象都是不可变对象。

    二、变量

        变量中存储的不是对象的值,而是对象的id(内存地址),当我们使用变量时,实际上就是在通过对象id在查找对象。

        变量中保存的对象,只有在为变量重新赋值时才会改变。也就是说,变量和变量之间是相互独立的,修改一个变量不会影响另一个变量。

    三、类型检查

      通过类型检查,可以检查只能值(变量)的类型。

      type()用来检查值的类型,该函数会将检查的结果作为返回值返回,可以通过变量来接收函数的返回值。

    1. print(type(1)) #
    2. print(type(1.5)) #
    3. print(type(True)) #
    4. print(type('hello')) #
    5. print(type(None)) #

    四、类型转换

    1、int() 可以用来将其他的对象转换为整型

    规则:
       ①布尔值:True -> 1   False -> 0
       ②浮点数:直接取整,省略小数点后的内容
       ③字符串:合法的整数字符串,直接转换为对应的数字         

    注意:

    ①如果不是一个合法的整数字符串,则报错 ValueError: invalid literal for int() with base 10: '11.5'
    ②对于其他不可转换为整型的对象,直接抛出异常 ValueError

    2、float() 和 int()基本一致,不同的是它会将对象转换为浮点数

    3、str() 可以将对象转换为字符串

      True -> 'True'
      False -> 'False'
      123 -> '123'

    4、bool() 可以将对象转换为布尔值,任何对象都可以转换为布尔值

    规则:

    对于所有表示空性的对象都会转换为False,其余的转换为True

     哪些表示的空性:0 、 None 、 '' 。。。

    五、运算符

    1、算数运算符

    (1)+ 加法运算符(如果是两个字符串之间进行加法运算,则会进行拼串操作)
    (2)- 减法运算符
    (3)* 乘法运算符(如果将字符串和数字相乘,则会对字符串进行复制操作,将字符串重复指定次数)
    (4)/ 除法运算符,运算时结果总会返回一个浮点类型
    (5)// 整除,只会保留计算后的整数位,总会返回一个整型
    (6)** 幂运算,求一个值的几次幂
    (7)% 取模,求两个数相除的余数

    2、赋值运算符

      = 可以将等号右侧的值赋值给等号左侧的变量

    1. # += a += 5 相当于 a = a + 5
    2. # -= a -= 5 相当于 a = a - 5
    3. # *= a *= 5 相当于 a = a * 5
    4. # **= a **= 5 相当于 a = a ** 5
    5. # /= a /= 5 相当于 a = a / 5
    6. # //= a //= 5 相当于 a = a // 5
    7. # %= a %= 5 相当于 a = a % 5

    3、关系运算符

      关系运算符用来比较两个值之间的关系,总会返回一个布尔值。如果关系成立,返回True,否则返回False。
    (1)> 比较左侧值是否大于右侧值
    (2)>= 比较左侧的值是否大于或等于右侧的值
    (3)< 比较左侧值是否小于右侧值
    (4)<= 比较左侧的值是否小于或等于右侧的值
    (5)== 比较两个对象的值是否相等
    (6)!= 比较两个对象的值是否不相等
      !!相等和不等比较的是对象的值,而不是id !!
    (7)is 比较两个对象是否是同一个对象,比较的是对象的id
    (8)is not 比较两个对象是否不是同一个对象,比较的是对象的id

      在Python中可以对两个字符串进行大于(等于)或小于(等于)的运算,当对字符串进行比较时,实际上比较的是字符串的Unicode编码。
        > 比较两个字符串的Unicode编码时,是逐位比较的
        > 利用该特性可以对字符串按照字母顺序进行排序,但是对于中文来说意义不是特别大

    注意:如果不希望比较两个字符串的Unicode编码,则需要将其转换为数字然后再比较
        0061 > 0062

    1. result = 'a' > 'b' # False
    2. result = 'c' < 'd' # True
    3. result = 'ab' > 'b' # False

    4、逻辑运算符:逻辑运算符主要用来做一些逻辑判断

    (1)not 逻辑非

          not 可以对符号右侧的值进行运算
           ①对于布尔值,非运算会对其进行取反操作,True变False,False变True
           ②对于非布尔值,非运算会先将其转换为布尔值,然后再取反

     (2)and 逻辑与

          and 可以对符号两侧的值进行运算
          ①只有在符号两侧的值都为True时,才会返回True,只要有一个False就返回False
          ②与运算是找False的
          ③ Python中的与运算是短路的与,如果第一个值为False,则不再看第二个值

    1. True and print('你猜我出来吗?') # 第一个值是True,会看第二个值,所以print()会执行
    2. False and print('你猜我出来吗?') # 第一个值是False,不会看第二个值,所以print()不会执行

    (3)or 逻辑或

          or 可以对符号两侧的值进行运算
           ①或运算两个值中只要有一个True,就会返回True
           ②或运算是找True的
           ③ Python中的或运算是短路的或,如果第一个值为True,则不再看第二个值

    1. False or print('你猜我出来吗?') # 第一个值为False,继续看第二个,所以打印语句执行
    2. True or print('你猜我出来吗?') # 第一个值为True,不看第二个,所以打印语句不执行

    (4)非布尔值的与或运算

        当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终会返回原值。
      与运算的规则:
          ①与运算是找False的,如果第一个值是False,则不看第二个值
          ②如果第一个值是False,则直接返回第一个值,否则返回第二个值
      或运算的规则:
          ①或运算是找True的,如果第一个值是True,则不看第二个值
          ②如果第一个值是True,则直接返回第一个值,否则返回第二个值    

    1. # True and True
    2. result = 1 and 2 # 2
    3. # True and False
    4. result = 1 and 0 # 0
    5. # False and True
    6. result = 0 and 1 # 0
    7. # False and False
    8. result = 0 and None # 0
    9. # True or True
    10. result = 1 or 2 # 1
    11. # True or False
    12. result = 1 or 0 # 1
    13. # False or True
    14. result = 0 or 1 # 1
    15. # False or False
    16. result = 0 or None # None
    17. print(result)

    5、条件运算符(三元运算符)

     语法: 语句1 if 条件表达式 else 语句2
     执行流程:
        I.条件运算符在执行时,会先对条件表达式进行求值判断
        II. 如果判断结果为True,则执行语句1,并返回执行结果
        III.如果判断结果为False,则执行语句2,并返回执行结果

    练习:现在有a b c三个变量,三个变量中分别保存有三个数值,请通过条件运算符获取三个值中的最大值

    1. a = 40
    2. b = 50
    3. c = 30
    4. # 通过条件运算符获取三个值中的最大值
    5. # max = a if a > b else b
    6. # max = max if max > c else c
    7. max = a if (a > b and a > c) else (b if b > c else c) # 不推荐这么使用
    8. # max = a if (b < a > c) else (b if b > c else c)
    9. # print(max)

    6、运算符的优先级

    和数学中一样,在Python运算也有优先级,比如先乘除 后加减
    ① 运算符的优先级可以根据优先级的表格来查询,在表格中位置越靠下的运算符优先级越高优先级越高的越优先计算
    ② 如果优先级一样则自左向右计算
    ③ 在开发中如果遇到优先级不清楚的,则可以通过小括号来改变运算顺序

    1. # and的优先级高,则应该先计算与运算,则运算结果是1
    2. a = 1 or 2 and 3
    3. print(a)

     ④逻辑运算符可以连着使用

    1. result = 1 < 2 < 3 # 相当于 1 < 2 and 2 < 3
    2. result = 10 < 20 > 15
    3. print(result)

  • 相关阅读:
    aiOla推出超快 “多头 “语音识别模型,击败OpenAI Whisper
    Queue 中 poll()和 remove()的区别(详解)
    Linux ARM平台开发系列讲解(PCIE) 2.13.2 PCI设备的访问方法(非桥设备)
    数据库 范式化和反范式化
    Scratch、Python、C++,谁才是少儿编程的第一选择?
    亿流量大考(1):日增上亿数据,把MySQL直接搞宕机了...
    java计算机毕业设计网上购物商城演示录像源码+系统+数据库+lw文档+mybatis+运行部署
    字符串常量池与StringBuilder
    Leetcode 3121. Count the Number of Special Characters II
    从零入门激光SLAM(十一)——LeGo-LOAM源码超详细解析1
  • 原文地址:https://blog.csdn.net/gaoxiaochan/article/details/126609044