Python入门之可变不可变类型、逻辑、成员、身份运算符、

一、可变不可变类型

  可变类型:值改变,id不变,证明改的是原值,证明原值是可以被改变的
  不可变类型:值改变,id也变了,证明是产生新的值,压根没有改变原值,证明原值是不可以被修改的

2、验证

2.1 int是不可变类型

x=10
print(id(x))
x=11 # 产生新值
print(id(x))

 

2.2 float是不可变类型

x=3.1
print(id(x))
x=3.2
print(id(x))

 

2.3 str是不可变类型

x="abc"
print(id(x))
x='aaa'
print(id(x))

  小结:int、float、str都被设计成了不可分割的整体,不能够被改变

   

2.4 list是可变类型

l=['aaa','bbb','ccc']
print(id(l))
l[0]='AAA'
print(l)
print(id(l))

2.5 dict

dic={'k1':111,'k2':222}
print(id(dic))
dic['k1']=3333333333

print(id(dic))

2.6 bool不可变

  关于字典补充:
  定义:{}内用逗号分隔开多key:value,
   其中value可以是任意类型
   但是key必须是不可变类型

dic={
    'k1':111,
    'k2':3.1,
    'k3':[333,],
    'k4':{'name':'egon'}
}
dic={
    2222:111,
    3.3:3.1,
    'k3':[333,],
    'k4':{'name':'egon'}
}
print(dic[3.3])
dic={[1,2,3]:33333333}
dic={{'a':1}:33333333}

 


2、条件

第一大类:显式布尔值

2.1 条件可以是:比较运算符

age = 18
print(age > 16)  # 条件判断之后会得到一个布尔值

 

2.1 条件可以是:True、False

is_beautiful=True
print(is_beautiful)

第二大类:隐式布尔值,所有的值都可以当成条件去用

   其中0、None、空(空字符串、空列表、空字典)------->代表的布尔值为False,其余都为真

  


三、逻辑运算符

1、not、and、or的基本使用

  not:就是把紧跟其后的那个条件结果取反(not与紧跟其后的那个条件是一个不可分割的整体)

print(not 16 > 13)
print(not True)
print(not False)
print(not 10)
print(not 0)
print(not None)
print(not '')

  

  and:逻辑与,and用来链接左右两个条件,两个条件同时为True,最终结果才为真

print(True and 10 > 3)
print(True and 10 > 3 and 10 and 0) # 条件全为真,最终结果才为True
print( 10 > 3 and 10 and 0 and 1 > 3 and 4 == 4 and 3 != 3)  # 偷懒原则

 

  or:逻辑或,or用来链接左右两个条件,两个条件但凡有一个为True,最终结果就为True, 两个条件都为False的情况下,最终结果才为False

print(3 > 2 or 0)
print(3 > 4 or False or 3 != 2 or 3 > 2 or True) # 偷懒原则

 

2、优先级not>and>or

  如果单独就只是一串and链接,或者说单独就只是一串or链接,按照从左到右的顺讯依次运算即可(偷懒原则)如果是混用,则需要考虑优先级了

res=3>4 and not 4>3 or 1==3 and 'x' == 'x' or 3 >3
print(res)

res=(3>4 and (not 4>3)) or (1==3 and 'x' == 'x') or 3 >3
print(res)

 


四、成员运算符

print("egon" in "hello egon") # 判断一个字符串是否存在于一个大字符串中
print("e" in "hello egon") # 判断一个字符串是否存在于一个大字符串中
print(111 in [111,222,33]) # 判断元素是否存在于列表

# 判断key是否存在于字典
print(111 in {"k1":111,'k2':222})
print("k1" in {"k1":111,'k2':222})

# not in
print("egon" not in "hello egon") # 推荐使用
print(not "egon" in "hello egon") # 逻辑同上,但语义不明确,不推荐

 


五、身份运算符

  is : 判断的是id是否相等

posted @ 2020-03-07 10:46  Lance_王  阅读(187)  评论(0编辑  收藏  举报