Python变量与运算符

1.变量的命名规则  (c1.py)

# 变量 (命名要求,可读性强)

# 1.规则
    # 1.1首字符不能为数字
    # 1.2可以包含  数字,字母,下划线  ,不能以数字开头
    # 1.3系统中的关键字(系统中的关键字也叫保留关键字,例如:if,and,import等等),不能用在变量名里
    # 1.4虽然type,print等 不是系统保留关键字,但如果将其作为变量(作为变量时,不报错),就不能当函数方法使用了,禁止将其作为变量名使用
# type = 3
# print(type)
    # 然后再将其作为判断数据方法使用就会报错
# print(type(type))

    # 1.5区分大小写  (eg:a=1,A=1不同)
    # 1.6Python中对变量没有类型限制
        # (eg:a=1,a='1',a=[1,2],可以给一个变量赋不同类型的值;在其它的一些编程语言中,在变量定义时就得声明其类型)
        # 所以Python也称为动态语言(和JavaScript有点类似)
    # 1.7也会存在深浅拷贝
        # 1.7.1值类型(int,float,str,tuple等,不可变),浅拷贝
        # 1.7.2引用类型(set,list,dict,可改变),深拷贝
# a = [1,2]
# b = a
# a[0] = 2
# print(b)
        # 1.7.3对于下例子中的a,并不是a改变了,而是生成了一个新的字符串,将这个新生成的字符串赋给a。可以通过id()来查看一下变量的内存地址
# a = 'hello'
# print(id(a))        # 31203824                      
# a = a + ' world'
# print(id(a))        # 31425584 (内存地址改变了)
# print(a)         # hello world

        # 1.7.4  list 和 tuple  
# a = [1,2,3]
# print(id(a))        #1794696
# a[0] = 2
# print(id(a))        #1794696 (内存地址未改变)
# b = (1,2,3)
# b[0] = 2            # 这种写法就报错了,元组是不可变类型;同时对于不可变类型,也没有 . 操作符

# 对于可变类型list还可使用 . 操作符
# c = [1,2,3]
# c.append(4)
# print(c)            #[1, 2, 3, 4]

        # 1.7.5 对于大型项目,会存在相互调用,有些不想在别人调用时改变,就可使用tuple(一变就会报错),更安全;如果需要动态改变,就用list
# a = (1,2,[1,2,3])
# print(a[1])         # 2
# print(a[2][2])      # 访问第三项里的3,使用双重下标
# # a[0] = 2            # 不能改变
# a[2][2] =2          # 可以改变list项中的某一项

2.Python运算符总括  (c2.py)

# Python运算符

# 1.算数运算符
print('hello '+'world')
print([1,2,3]*3)
print(3-1)
print(3/2)
print(3//2)
print(5%2)
print(2**2)
print(2**3)
print(2**4)

# 2.赋值运算符
# =
# +=
# *=
# /=
# %=
# **=
# //=

# 3.比较(关系)运算符
# ==
# !=
# >
# <
# >=        (大于或者等于)
# <=        (小于或者等于)

# 4.逻辑运算符
# and       (且(与),有一个为False则为False,否则为True)
# or        (或,有一个为True则为True,否则为False)
# not       (非,)

# 5.成员运算符 (一个元素是否在另一组元素里;返回值是bool类型)
# in
# out in

# 6.身份运算符      (如果两个变量取值相等,则is返回True)
# is
# is not

# 7.位运算符        (把数字当做二进制数进行运算)
# &                 (按位与)
# |                 (按位或)
# ^                 (按位异或)      
# <<                (左移动)
# >>                (右移动)


# 8.优先级大方向 (最终的优先级顺序,可查百度(后须自己再验证一下,因为资料也不一定特别准))
# 算数(+,-,*,/,%,//,**)  >  比较(关系,==,+=)  >  逻辑(not > and > or)

3.Python运算符详解  (c3.py)

# 1.赋值运算符  (终点在赋值)

# c = 1
# c = c + 1
# print(c)
    # 1.1其它语言中还有  c++(自增),c--(自减)运算符,但Python中没有
# c += 1
# print(c)

# a = 3
# b = 2
# b += a
# print(b)
# b -= a
# print(b)
# b *= a
# print(b)

# d = 2
# e = 3
    # 1.2 d+e 和 d += e 的最大区别是,前者只运算(运算前后,各自变量的值不变),后者不仅运算且赋值(运算过后d的值改变)

# 2.比较(关系)运算符      (最终返回一个bool值)
    # 2.1 右结合 (首先b>=1为True,然后b+=True,即b=b+True,最后得到结果)
# b = 1
# b+=b>=1
# print(b)        # 2

    # 2.2字符串也可比较,比较的是ASCII码,获取字符的ASCII码可以通过 ord()获取
# print('a'>'b')          #False
# print(ord('a'))         # 97
# print(ord('b'))         # 98

# print('abc'<'abd')      # True  (从前往后,c的ASCII码小于d的ASCII码)
# print([1,2,3]<[2,1,3])  #True   (第一项的1小于后边第一项的2)
# print((1,2,3)<(2,1,3))  #True   (第一项的1小于后边第一项的2)

# 3.逻辑运算符      (最终返回一个bool值)
    # 3.1
# print(True and True)        #True
# print(True and False)       #False
# print(True or False)        #True
# print(False or False)       #False
# print(not False)            #True
# print(not True)             #False

    # 其它类型和bool类型存在一个转化关系,虽然下边例子,得到一些结果
# print(1 and 1)                #1
# print('a' and 'b')            #b
# print('a' or 'b')             #a
# print(not 'a')                #False

    # 3.2其它类型对应的bool类型
        # int float         0  被认为False;非0  被认为True
        # str               空字符串  被认为是False;非空字符串  被认为True
        # list              []空列表  被认为是False;非空列表    被认为True
        # tuple,set,dict    遵循和列表相同的规则

# print([1] or [])    #[1]
# print([] or [1])    #[1]
# print('a' and 'b')  #b
# print('' and 'b')   #''

    # 3.3 and (返回)
    # 第一项为真会看第二项
    # 第一项为假直接返回第一项
    # 第一项和第二项都为真,返回第二项
# print(1 and 0)      #0
# print(0 and 1)      #0
# print(1 and 2)      #2
# print(2 and 1)      #1

    # 3.4 or (返回)
    # 第一项为真直接返回第一项
    # 第一项为假会看第二项
    # 第一项和第二项都为真,返回第一项
# print(1 or 0)       #1
# print(0 or 1)       #1
# print(1 or 2)       #1
# print(2 or 1)       #2

# 4.成员运算符
# print(1 in [1,2,3,4])       #True
# print(6 in [1,2,3,4])       #False
# print(1 in (1,2,3,4))       #True
# print(1 in {1,2,3,4})       #True

    # dict  中看的是key是否存在,不会检测value
# print('name' in {'name':'石敢当','age':18})     #True
# print(18 in {'name':'石敢当','age':18})         #False

# 5.身份运算符      (对象的三个特征:值,身份,类型)  (在Python中一切皆对象)
    # 5.1   如果两个变量取值相等,则is返回True
# a = 1
# b = 2
# c = 1
# print(a is b)
# print(a is c)

    # 5.2 is 和 == 
        # 5.2.1在某些情况结果相同,有些情况有一定区别
        # 5.2.1 == 关系运算符比较的是两个变量的值是否相等;而is比较的是两个变量的身份(即id地址)是否相等
# a = 1
# b = 1
# c = 1.0
# print(a is b)       #True       (相同)
# print(a == b)       #True       (相同)
# print(a is c)       #False      (不同)
# print(a == c)       #True       (不同)
# print(id(1))        #8791043924816
# print(id(1.0))      #5615736

        # 5.2.2
# a = {1,2,3}
# b = {2,1,3}
# print(a == b)       #True       (集合是无序的,顺序不影响值的大小比较)
# print(a is b)       #False      (is 是身份的比较,通过id获取,不同)
# print(id(a))        #31992968   
# print(id(b))        #32047624

# c = (1,2,3)
# d = (2,1,3)
# print(c == d)       #False      (元组是序列,是有序的,书序会影响取值)
# print(c is d)       #False      (is 是身份的比较,通过id获取,不同)
# print(id(c))        #34693408   
# print(id(d))        #34693624

    # 5.3类型的判断
        # 5.3.1通过 type 来判断   (不能判断子类,不太推荐)
# a = 'hello'
# print(type(a) == str)       #True
# print(type(a) == int)       #False

        # 5.3.2通过 isinstance 来判断
            # 5.3.2.1 isinstance(被判断的变量,类型)
# print(isinstance('hello',str))      #True

            # 5.3.2.2 isinstance(被判断的变量,(类型1,类型2,类型3))  (后边接一个元组,满足其一即可)
# print(isinstance('hello',(str,int,bool,dict)))      #True

        # 5.3.3对象的三个特征(重要)   (身份id,值value,类型type   分别对应三种运算关系    is,==,isinstance)

# 6.位运算符
    # 6.1 按位与 &
# a = 2
# print(bin(a))       #0b10
# b = 3
# print(bin(b))       #0b11
# print(a & b)        #ob10  (即转为十进制为2)

    # 6.1 按位或 |
# a = 2
# print(bin(a))       #0b10
# b = 3
# print(bin(b))       #0b11
# print(a | b)        #ob11  (即转为十进制为3)

(备注:以上内容来自七月老师的学习笔记,仅作为学习使用)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章