Python基础-对象/运算符(2)

对象:

py是一门面向对象的语言,在程序运行时,所有的数据都是存储在内存当中再去运行的。对象就是内存中专门用来存储数据的一块区域。对象实际上就是一个容器,专门用来存储数据。数值,字符串,布尔值,None都是对象。对象分为可变对象和不可变对象,可变仅针对值。

对象结构:

每个对象都要保存三种数据.

  • id(标识):
    id用来标识对象的唯一性,每个对象都有唯一的id。可以通过id()函数查看对象的id,py中id就是对象的内存地址,对象一旦创建,其id值永远不会改变。
  • type(类型)
    用来标识当前对象所属的类型,类型决定了对象拥有哪些功能,可以通过type()函数查看对象的类型。py是一门强类型语言,对象一旦创建,类型不可以修改。
    -value(值)
    值就是对象中存储的具体的数据,可变对象的值可以改变。
可变对象:

列表就是一个可变对象,我们对列表的操作都是通过变量去修改对象的值,这种操作不会改变变量所指向的对象。

list=[1,3,'w']
print(id(list)) #2468798735816
list[0]=2
print(id(list)) #2468798735816
list=[3,5,1]
print(id(list)) #2468798716936
变量和对象区别

对象并没有直接存储在变量中,变量更像对象的别名,变量中存储的是对象id也就是内存地址。当我们使用变量时,实际上就是通过对象id查找对象。
变量中保存的对象,只有在为变量重新赋值时才会改变。变量和变量之间是相互独立的,修改一个变量不会影响另一个变量。

注意:

当通过变量给变量赋值时,其所存储的对象id时一样的。也可以说,这两个变量指向同一个对象。

a=6
b=a
print(id(a))
print(id(b))

运算符:

运算符可以对一个值或者多个值进行运算或者操作

运算符分类:
  • 算数运算符
  • 赋值运算符
  • 比较运算符(关系运算符)
  • 逻辑运算符
  • 条件运算符(三元运算符)
算数运算符
  • +:加法运算符(如果是两个字符串则会进行拼串)
  • -:减法运算符
  • *:乘法运算符(如果字符串和数字相乘则会进行字符串复制操作)
  • /:除法运算符,结果总会返回一个浮点
  • //:整除,只会保留计算后整数位,返回一个整型
  • **:幂运算,求一个值的几次幂
  • %:取模,求两个数相除的余数
    注意:True与整数和浮点数运算,True等价于1。False等价于0。
    在除法或者整除时,除数不能为0
赋值运算符
关系运算符

关系运算符用来比较两个值之间的关系,总会返回一个布尔值,关系成立为True,不成立为False。
=> <这些不在赘述。 ==和!=比较的是两个对象的值。
注意:两个字符整数或者浮点数参照整数进行比较,字符也是可以比较的,参照unicode码。 字符和整数/浮点不能进行比较,字符和布尔也不能比较。整数/浮点和布尔可以进行比较。
介绍两个py特有的。

  • is :比较两个对象是否是同一个对象,比较的是对象的id
  • is not 比较两个对象是否不是同一个对象,比较的是对象的id
逻辑运算符(与或非)

主要来做一些逻辑判断。

  • not 逻辑非:
    not对符号右侧的值进行非运算,对于布尔值进行取反,True->False。对于非布尔值,非运算会将其转换为布尔值,然后在取反。
  • and 逻辑与:
    and可以对符号两侧的值进行与运算, 只有两侧的值为True时才会返回True。 当左侧的值为False时,则不在看右侧
  • or 逻辑或:
    or可以对符号两侧的值进行或运算,只要有一侧的值为True就会返回True。同样,当左侧值为True时,不在看右侧。
    注意: 逻辑运算符返回的是其能到达最远处的值,而不是像java一样只返回布尔值。逻辑判断时,不局限两侧值的类型,因为每一种类型都可以当布尔值判断,只是返回结果不是布尔类型,而是其原本类型
    and比or优先级高
print( '' or 'b') # b
print( 1 and 2.0)  #2.0
print(0 and 2) #0
#证明and优先级高
print( 0 or 2 and 3) # 3
条件运算符(三元运算符)

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

a=2
b=3
c=a if a>b else b 
print(c) #3
print(a)if a>b else print(b) #3
注意:
1<2<3 等效于 1<2 and 2<3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章