• Python 基础知识


    一、运行python程序的两种方式:

    方式一:交互式模式
    方式二:脚本文件

    交互式模式下可以即时得到代码执行结果,调试程序十分方便。
    若想将代码永久保存下来,则必须将代码写入文件中。
    若将代码写入文件中,偶尔需要打开交互式模式调试某段代码、验证结果。

    二、变量

    1、什么是变量

    变:变化

    量:指的是事物的状态

    变量:是一种可以反映出状态变化的一种机制,比如人的年龄,性别,等级,金钱等

    2、为什么要有变量

    为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的,程序执行的本质就是一系列状态的变化

    3、如何定义变量

    level = 0

    level = 1

    name = "Bob"

    img

    变量的命名规范?

    1. 变量名只能是 字母、数字或下划线的任意组合
    2. 变量名的第一个字符不能是数字
    3. 关键字不能声明为变量名
    4. 变量名不能为中文

    变量的三大特性:
    值:value
    内存地址:id
    变量的类型:type

    三、常量

    常量是指在程序运行过程中不会改变的量,在python中没有一个专门的语法定义常量,约定俗成是用全部大写的变量名表示常量。如:PAI=3.14。所以单从语法层面去讲,常量的使用与变量完全一致。

    四、与用户交互

    与用户交互就是人往计算机中input/输入数据,计算机print/输出结果,为了让计算机能够像人一样与用户沟通交流

    user_name = input('请输入您的用户名:')
    print(user_name)
    
    input():接受用户的输入,把用户输入的内容都转化成字符串
    
    在python3中:
    
    ​    input() #把用户输入的内容全部都存为字符串类型
    
    在python2中:
    
        raw_input() #把用户输入的内容全部都存为字符串类型
    
        input()#必须输入明确的数据类型,输入什么就存成什么类型
    
    
    

    五、格式化输出

    定义:就是把一段字符串里面的某些内容替换掉之后再输出。

    %s 占位符:可以接受任意类型的值
    %d 占位符:只能接受整数类型
    # 按照顺序传值
    
    name = input('your name:')
    age = input('your age:')
    print('my name is %s,my age is %s' %(name,age))
    
    print('my name is %s,my age is %s' %('egon',18))
    
    #format
    name = input('your name:')
    age = input('your age:')
    print("my name is {},my age is {}".format(name,age))
    
    print('my name is {name},my age is {age}'.format(name=name,age=age))
    
    #f'{}'
    print(f'my name is {name},my age is {age}')
    

    六、基本数据类型

    1.整型int

    用途:年龄,等级,号码
    
    #定义方式:
    
    age = 10   #age = int(10)
    

    2.浮点型float

    用途:身高,体重,薪资
    
    定义方式:
    height =1.81   #height =float(1.81)
    
    
    #十进制转其他进制
    
    print(bin(3))     #ob11    十进制转二进制
    
    print(oct(8))     #0o10    十进制转八进制
    
    print(hex(16))  #0x10      十进制转十六进制
    

    3.字符串类型str

    用来表示名字、年龄等描述性的信息(数据)
    定义方式:
    str:包含在引号内的一串字符
    # 字符串拼接(+,*)是开辟一个新的内存空间,将你拼接之后的值存进去
    s1 = 'hello '
    s2 = 'world'
    print(s1 + s2)  #hello world
    
    print(s1*3)  #hello hello hello 
    
    常用操作+内置方法:
    
    优先掌握的操作:
    1、按索引取值(正向取+反向取): **只能取不能改**
    name = "baohan"
    print(name[0])    #正向取
    print(name[-1])   #反向取
    print(type(name[-1]))   #<class 'str'>
    
    2、切片(顾头不顾尾,默认步长为1)
    msg = "my name is Bob"
    print(msg[0:6])
    print(msg[0:6:2])  #m a
    #了解:
    #print(msg[0:5:1])
    #print(msg[3:1,-1])
    #print(msg[-1:-5:-1])
    msg = 'alex is sb'
    print(msg[0:])  #取全部
    print(msg[::-1])  #顺序全部倒过来
    
    3、长度len():获取当前数据中元素的个数
    msg = 'my name is Bob'
    print(len(msg))   #字符的个数 
    
    4、成员运算in 和 not in
    msg = 'my name is Bob'
    print("my"in msg)  #True
    print("name" not in msg)   #False
    
    5、循环  for循环适用于字符串,列表,字典,元组,集合
    msg = 'alex is sb'
    #for i in msg:
        #print(i)
    i = 0
    while i < len(msg):
        print(msg[i])
        i+=1
    
    6、strip():移除空白 
    name = input ('你的用户名:').strip()
    print(name)
    
    7、split():对字符串进行切分,可以指定切分的分隔符,返回的是一个列表
    info = 'bob:123:admin'
    res = info.split(':')
    print(res,type(res))  #切完是列表类型
    print(res[0])    #bob
    
    
        
    需要掌握的操作:
    1、 strip,lstrip,rstrip
    print('**sss*****'.strip("*"))    #移除两边的*
    print('**sss*****'.lstrip("*"))   #移除右边的*
    
    2、lower,upper:转字符串里字符的大小写
    name1 = "egon"
    name2 = "ALEX"
    print(name1.upper())
    print(name2.lower())
    
    3、startswith,endswith  判断字符串是否以括号内指定的字符开头、结尾,返回的是布尔值True或False
    info = "my name is bob"
    print(info.startswith('m'))
    print(info.startswith('my'))
    print(info.endswith('b'))
    
    4、format的三种用法
    1)类似于%s的用法,传入的值与{}一一对应
    s1 = "my name is {},my age is {}".format("bob",18,19)
    print(s1)
    
    2)把format传入的多个值当作一个列表,然后用{索引}取值
    s2 = "my name is {0},my age is {1}".format("bob",18)
    print(s2)
    
    3)format括号内传参数可以完全打乱顺序,但根据键值对传入指定参数
    s3 = "my name is {name},my age is {age}".format(name="bob",age=18)
    print(s3)
    
    5、split,rsplit 
    info = "get|bob|hobby"
    print(info.split("|"))   #默认从左边开始切分
    print(info.split("|",1))   #可以指定切分的次数
    print(info.rsplit("|",1))  #从右边开始切分
    
    6、join 将(列表)中每个元素按照""里的内容为分隔符号进行拼接(传入的列表内只能是字符串)
    l1 = ['get', 'bob', 'hobby']
    print("+".join(l1))  #get+bob+hobby
    
    7、f-string:通过大括号接受变量,在字符串前面一定要加一个小写的f,在python3.6以后才有
    
    8、replace 将字符串中的元素进行替换
    info = "my name is egon,egon is handsome"
    print(info.replace('egon','bob'))
    print(info.replace('egon','bob',1))  #语法:replace('旧内容','新内容',修改的个数)
    
    9、isdigit 判断字符串是否是整型,返回结果为布尔值
    age = "18"
    print(age.isdigit())    #True
    age = "19.1"
    print(age.isdigit())    #False
    
    print('sdaw'.isdigit())    #False
    
    inp = input(">>>:")
    if inp.isdigit():
        inp = int(inp)
        if inp == 10:
            print("right")
    else:
        print("输入格式错误")
    
    了解的知识点:
    # 1、find:查找当前字符串中某个元素的位置,返回索引,找不到返回-1
    msg='tony say hello'
    msg.find('o',1,3)  # 在索引为1和2(顾头不顾尾)的字符中查找字符o的索引
    # 2、index:同find,但在找不到时会报错
    msg.index('e',2,4) # 报错ValueError
    # 3、rfind与rindex:略
    # 4、count:统计当前字符串中某一个元素出现的次数
    msg = "hello everyone"
    msg.count('e')  # 统计 e 出现的次数
    # 5、center居中对齐,ljust左对齐,rjust右对齐,zfill填充0
    name='tony'
    name.center(30,'-')  # 总宽度为30,字符串居中显示,不够用-填充
    >>>-------------tony-------------
    name.ljust(30,'*')  # 总宽度为30,字符串左对齐显示,不够用*填充
    >>>tony**************************
    name.rjust(30,'*')  # 总宽度为30,字符串右对齐显示,不够用*填充
    >>>**************************tony
    name.zfill(50)  # 总宽度为50,字符串右对齐显示,不够用0填充
    >>>0000000000000000000000000000000000000000000000tony
    #6、expandtabs 
    msg='abc	def' #制表符
    print(msg.expandtabs(3))
    #7、captalize():只有首字母是大写
    #8、swapcase():大小写反转
    #9、title():每个单词的首字母大写
    
    #10、is数字系列
    #在python3中
    num1 = b'4' #bytes
    num2 = u'4' #unicode,python3中无需加u就是unicode
    num3 = '四' #中文数字
    num4 = 'Ⅳ' #罗马数字
    
    num1.isdigit()  #True
    num2.isdigit()  #True
    num3.isdigit()  #False
    num4.isdigit()  #False
    
    总结:
        最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
        如果要判断中文数字或罗马数字或unicode,则需要用到isnumeric
        isdecimal:只能用来判断unicode
    #11 is其他
    name = 'tony123'
    name.isalpha(): #字符全由字母组成
    >>> True
    name.isalnum(): #字符由字母或数字组成
    >>> True
    name.islower()  # 字符串是否是纯小写
    >>> True
    name.isupper()  # 字符串是否是纯大写
    >>> False
    name.isspace()  # 字符串是否全是空格
    >>> False
    name.istitle()  # 字符串中的单词首字母是否都是大写
    >>> False
    
    
    

    字符串中的转义字符:

    字符串前面加一个小写的r,代表转义
    print(r'hello
     world')
    	   输入一个 制表符,协助在输出文本时垂直方向保持对齐
    print("1	2	3")    
    print("10	20	30")
    
       换行符
    "   可以输出一个"  
    \   就表示一个  
    

    4.列表list:

    列表:定义在[ ]中括号内,用逗号分隔开多个值,值可以是任意类型

    用来存放多个值

    类型转换:
    
    但凡能被for循环遍历的数据类型都可以传给list()转换成列表类型,list()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中
    >>> list('wdad') # 结果:['w', 'd', 'a', 'd'] 
    >>> list([1,2,3]) # 结果:[1, 2, 3]
    >>> list({"name":"jason","age":18}) #结果:['name', 'age']
    >>> list((1,2,3)) # 结果:[1, 2, 3] 
    >>> list({1,2,3,4}) # 结果:[1, 2, 3, 4]
    
    常用操作:
    1、索引取值:(正反都可以取,即可存也可取)
    user_info = ['egon',18,['football','eat','sleep']]
    print(user_info[2][0])
    >>> football
    
    2、索引切片  切出来的也是列表
    my_friends = ['tony', 'jason', 'tom', 4]
    print(my_friends[0:4:2])   #第三个参数2代表步长
    >>>['tony', 'tom']
    
    3、长度len(): 获取列表中元素的个数
    my_friends = ['tony', 'jason', 'tom', 4]
    len(my_friends)
    >>>4
    
    4、成员运算in和not in
    my_friends = ['tony', 'jason', 'tom', 4]
    'tony' in my_friends
    >>>True
    'egon' in my_friends
    >>>False
    
    5、循环 #循环遍历my_friends列表里面的值
    #依赖索引
    stus = ['bob','alex','egon']
    i = 0
    while i <len(stus):
    	print(stus[i])
    	i+=1
    
    #不依赖于索引
    for i in my_friends:
        print(i) 
    
    内置方法:
    1、添加
    # append(): 列表尾部追加值,一次性只能添加一个值
    l1 = ['a','b','c']
    l1.append('d')
    print(l1)
    >>>['a', 'b', 'c', 'd']
    
    # insert(): 插入值,通过索引指定插入的位置
    l1 = ['a','b','c']
    l1.insert(0,"first")  # 0表示按索引位置插值
    print(l1)
    >>>['first', 'a', 'b', 'c']
    
    # extend(): 一次性在列表尾部添加多个元素
    l1 = ['a','b','c']
    l1.extend(['a','b','c'])
    print(l1)
    >>>['a', 'b', 'c',  'a', 'b', 'c']
    
    2、删除
    2.1 remove():删除指定的值,只能删一个,没有返回值
    l = [11,22,33,22,44]
    res=l.remove(22) # 从左往右查找第一个括号内需要删除的元素
    print(res)
    >>>None
    2.2 pop()默认从列表最后一个元素开始删,并将删除的值返回,括号内可以通过加索引值来指定删除元素
    l = [11,22,33,22,44]
    res=l.pop()
    print(res)
    >>>44
    
    res=l.pop(1)
    print(res)
    >>>22
    
    2.3 del 彻底删除
    l = [11,22,33,44]
    del l[2]  # 删除索引为2的元素
    print(l)
    >>>[11,22,44]
    
    3、reverse()颠倒列表内元素顺序
    l = [11,22,33,44]
    l.reverse() 
    print(l)
    >>>[44,33,22,11]
    
    4、sort()给列表内所有元素排序,排序时,列表元素之间必须是相同数据类型,不可混搭,否则报错
    # 默认从小到大排序
    # 大前提:只能同类型直接比较大小,对于有索引值的直接比较是按照位置一一对应进行比较的
    l = [11,22,3,42,7,55]
    l.sort()
    print(l)
    >>>[3, 7, 11, 22, 42, 55]  
    
    l = [11,22,3,42,7,55]
    l.sort(reverse=True)  # reverse用来指定是否跌倒排序,默认为False
    print(l)
    >>> [55, 42, 22, 11, 7, 3]
    
    5、sorted():python的内置函数,在排序时生成一个新列表,原数据不变
    
    6、count():统计当前列表内指定元素的个数
    l = [11,22,3,42,7,55,11]
    print(l.count(11))
    >>>2
    
    7、index():获取当前指定元素的索引值,还可以指定查找范围
    l = [11,22,3,42,7,55,11]
    print(l.index(11,1,7))
    >>>6
    
    8、clear():清空列表数据
    l = [11,22,3,42,7,55,11]
    l.clear()
    print(l)
    >>>[]
    
    补充知识点:
    
    #队列:先进先出 
    l1 =[]                                 
    l1.append(1)
    l1.append(2)
    l1.append(3)
    print(l1)
    l1.pop(0)
    print(l1)
    l1.pop(0)
    l1.pop(0)
    print(l1)
    
    #堆栈:先进后出
    l1 =[]
    l1.append(1)
    l1.append(2)
    l1.append(3)
    print(l1)
    l1.pop()
    print(l1)
    l1.pop()
    l1.pop()
    print(l1)
    

    5.字典dict:

    定义:通过{ }来存储数据,通过key:value来定义键值对数据,每个键值对中间用逗号分隔开,其中value可以是任意类型,而key一定要是不可变类型(数字,字符串)。

    字典的三种定义方式:

    1、d1 = {'name':'bob','age':18}
    2、d2 = dict({'name':'bob'})
    3、#了解  zip:  
    l1 = ['name','bob']
    l2 = ['age','18']
    z1 = zip(l1,l2)
    print(dict(z1))
    
    
    常用方法:
    
    1.1、按照key:value映射关系取值(可存可取)
    user_info = {'name':'egon','age':18,'hobbies':['football','eat','sleep']}
    print(user_info['age'])
    >>>18
    print(user_info['hobbies'][0])
    >>>football
    
    1.2、赋值:如果key原先不存在于字典,则会新增key:value
    dic = {'name':'egon'}
    dic['age'] = 18
    print(dic)
    >>>{'name': 'egon', 'age': 18}
    
    1.3 赋值:如果key原先存在于字典,则会修改对应value的值
    dic = {'name':'egon','age':18}
    dic['name'] = 'tony'
    print(dic)
    >>>{'name': 'tony', 'age': 18}
    
    2、成员运算:in , not in #默认判断某个值是否为字典的key
    user_info = {'name':'egon','age':18}
    print("name" in user_info)
    >>>True
    
    3、len():#获取当前字典中键值对的个数
    user_info = {'name':'egon','age':18}
    print(len(user_info))
    >>>2
    
    4、for循环
    4.1 默认遍历的是字典的key
    for key in user_info:
    print(key)
    >>>name
    >>>age
    
    4.2 只遍历key
    for i in user_info.keys():
        print(i)
    >>>name
    >>>age
    
    4.3 只遍历value
    user_info ={'name':'egon','age':18}
    for i in user_info.values():
        print(i)
    >>>egon
    >>>18
    
    4.4 遍历key和value
    for i in user_info.items():
        print(i)
        
    内置方法:
    1、keys,values,items
    dic= {'k1':'jason','k2':'Tony','k3':'JY'}
    print(dic.keys())  #返回所有的key
    print(dic.values()) #返回所有的value
    print(dic.items()) #返回一个可迭代对象,是列表套元组的形式,每一个键值对都是一个元组
    >>>dict_keys(['k1', 'k2', 'k3'])
    >>>dict_values(['jason', 'Tony', 'JY'])
    >>>dict_items([('k1', 'jason'), ('k2', 'Tony'), ('k3', 'JY')])
    
    
    2、get():获取指定key的值,如果值不存在,默认返回None,可以通过第二个参数修改默认返回的值
    dic= {'k1':'jason','k2':'Tony','k3':'JY'}
    dic.get('k1')
    >>> 'jason'  
    res=dic.get('xxx') # key不存在,不会报错而是默认返回None
    print(res)
    >>> None  
    res=dic.get('xxx',666) # key不存在时,可以设置默认返回的值
    print(res)
    >>> 666 
    # ps:字典取值建议使用get方法
    
    3、pop():删除指定key对应的键值对,有返回值,返回为对应的value
    dic= {'k1':'jason','k2':'Tony','k3':'JY'}
    v =dic.pop('k2')  # 删除指定的key对应的键值对,并返回值
    print(dic)
    >>> {'k1': 'jason', 'k3': 'JY'}
    print(v)
    >>> 'Tony'
    
    4、popitem(): 随机删除一组键值对,并将删除的键值放到元组内返回
    dic= {'k1':'jason','k2':'Tony','k3':'JY'}
    item = dic.popitem() 
    print(dic)
    >>> {'k3': 'JY', 'k2': 'Tony'}
    print(item)
    >>> ('k1', 'jason')
    >
    5、update():用新字典更新旧字典,有则修改,无则添加
    dic= {'k1':'jason','k2':'Tony','k3':'JY'}
    dic.update({'k1':'JN','k4':'xxx'})
    print(dic)
    >>>{'k1': 'JN', 'k3': 'JY', 'k2': 'Tony', 'k4': 'xxx'}
    
    6、fromkeys():生成一个新字典,第一个参数(列表),它会以第一个参数中的各个元素为key,以第二个参数为值,组成一个新字典
    dic = dict.fromkeys(['k1','k2','k3'],'egon')
    print(dic)
    >>>{'k1':'egon', 'k2':'egon', 'k3':'egon'}
    
    7、setdefault():
    若key不存在,新增键值对,有返回值,返回新增value。
    dic={'k1':111,'k2':222}
    res=dic.setdefault('k3',333)
    print(res)
    >>>333
    print(dic) 
    >>>{'k1': 111, 'k2': 222, 'k3': 333}
    
    若key存在则不做任何修改,并返回已存在key对应的value值
    dic={'k1':111,'k2':222}
    res=dic.setdefault('k1',666)
    res
    >>> 111
    dic # 字典不变
    >>> {'k1': 111, 'k2': 222}
    

    6.元组

    元组就是一个不可变的列表
    用途:存储多个不同类型的值,只有读的需求,没有改的需求
    定义方式:用小括号存储数据,数据之间通过逗号分隔(值不能被改变)
    t1 = ('a','b') # t1 = tuple(('a','b'))
    强调:如果元组内只有一个值,则必须加一个逗号

    常用方法:
    
    1、按索引取值(正向取+反向取):只能取,不能改,否则报错! 
    tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33)  
    tuple1[0]
    >>> 1
    tuple1[-2]
    >>> 22
    tuple1[0] = 'hehe'  # 报错:TypeError:
    
    2、切片(顾头不顾尾,步长)
    tuple1[0:6:2]    
    >>> (1, 15000.0, 22)   #切出来的还是元组
    
    3、长度
    len(tuple1)  
    >>> 6
    
    4、成员运算 in 和 not in
    tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33)
    print('hhaha' in tuple1)
    print('hhaha' not in tuple1)
    
    5、count()
    tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33)
    print(tuple1.count(11))
    >>>1
    # 6、index()
    tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33)
    print(tuple1.index('hhaha'))
    >>>1
    

    7.集合

    用途:去重、关系运算
    定义:在{ }内用逗号分隔开多个元素
    1:每个元素必须是不可变类型
    2:集合内没有重复的元素
    3:集合内元素是无序的
    s = {1,2,3,4} # 本质 s = set({1,2,3,4})

    注意1:列表类型是索引对应值,字典是key对应值,均可以取得单个指定的值,而集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。

    注意2:{ }既可以用于定义dict,也可以用于定义集合,但是字典内的元素必须是key:value的格式,现在我们想定义一个空字典和空集合,该如何准确去定义两者?

    默认是空字典: d = {}    
    定义空集合: s = set()   
    
    关系运算:
    
    friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们 
    friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们
    1.合集(|):求两个用户所有的好友(重复好友只留一个)
    >>> friends1 | friends2
    {'kevin', 'ricky', 'zero', 'jason', 'Jy', 'egon'}
    
    2.交集(&):求两个用户的共同好友
    >>> friends1 & friends2
    {'jason', 'egon'}
    
    3.差集(-):
    >>> friends1 - friends2 # 求用户1独有的好友
    {'kevin', 'zero'}
    >>> friends2 - friends1 # 求用户2独有的好友
    {'ricky', 'Jy'}
    
    4.对称差集(^) # 求两个用户独有的好友们(即去掉共有的好友)
    >>> friends1 ^ friends2
    {'kevin', 'zero', 'ricky', 'Jy'}
    
    5.值是否相等(==)
    >>> friends1 == friends2
    False
    
    6.父集:一个集合是否包含另外一个集合
    6.1 包含则返回True
    >>> {1,2,3} > {1,2}
    True
    >>> {1,2,3} >= {1,2}
    True
    6.2 不存在包含关系,则返回False
    >>> {1,2,3} > {1,3,4,5}
    False
    >>> {1,2,3} >= {1,3,4,5}
    False
    
    7.子集
    >>> {1,2} < {1,2,3}
    True
    >>> {1,2} <= {1,2,3}
    True
    
    去重:
    集合去重复有局限性:
      1. 只能针对不可变类型
      2. 集合本身是无序的,去重之后无法保留原来的顺序
      
    例如:
    >>> l=['a','b',1,'a','a']
    >>> s=set(l)
    >>> s # 将列表转成了集合
    {'b', 'a', 1}
    >>> l_new=list(s) # 再将集合转回列表
    >>> l_new
    ['b', 'a', 1] # 去除了重复,但是打乱了顺序
    
    # 针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
    l=[
        {'name':'lili','age':18,'sex':'male'},
        {'name':'jack','age':73,'sex':'male'},
        {'name':'tom','age':20,'sex':'female'},
        {'name':'lili','age':18,'sex':'male'},
        {'name':'lili','age':18,'sex':'male'},
    ]
    
    new_l=[]
    
    for i in l:
        if i not in new_l:
            new_l.append(i)
    
    print(new_l)
    # 结果:既去除了重复,又保证了顺序,而且是针对不可变类型的去重
    #打印结果:
    [
        {'age': 18, 'sex': 'male', 'name': 'lili'}, 
        {'age': 73, 'sex': 'male', 'name': 'jack'}, 
        {'age': 20, 'sex': 'female', 'name': 'tom'}
    ]
    

    在这里插入图片描述

    8.布尔类型(True,False)

    用途:判断

    重点:所有数据类型自带布尔值,等号比较的是值,is比较的是地址

    0,
    None,
    空:"",[],{}的值为False
    其余全部为真

    七、可变类型与不可变类型

    可变:值改变的情况下,id不变
    不可变:值一变,id就变
    
    不可变类型:数字,字符串,元组
    可变类型:列表,字典,集合
    
    x =1
    print(id(x),x)
    x =2
    print(id(x),x)
    # >>>140736221442320 1
    # >>>140736221442352 2
    #
    x="abc"
    print(id(x),x)
    x="bcd"
    print(id(x),x)
    # >>>2291351178288 abc
    # >>>2291351217840 bcd
    
    x=['a','b','c']
    print(id(x),type(x),x)
    x[2]=10
    print(x)
    print(id(x),type(x),x)
    # >>>1887760765512 <class 'list'> ['a', 'b', 'c']
    # >>>['a', 'b', 10]
    # >>>1887760765512 <class 'list'> ['a', 'b', 10]
    
    dic={'x':1,'y':2}
    print(id(dic),type(dic),dic)
    dic['x']=111111111
    print(dic)
    print(id(dic),type(dic),dic)
    # >>>1571299274008 <class 'dict'> {'x': 1, 'y': 2}
    # >>>{'x': 111111111, 'y': 2}
    # >>>1571299274008 <class 'dict'> {'x': 111111111, 'y': 2}
    

    八、基本运算符

    1.算数运算符

    //:取整
    %:取余数
    **:次幂
    

    2.比较运算符

    != 不等于
    

    3.赋值运算符

    1)增量赋值: +=  //= %= 等等
    2)链式赋值: x = y = z = 1
    3)交叉赋值:m = 10 ,n = 20
               m,n=n,m
    4)解压赋值:
      l1=[1,2,3,4]
      a,b,c,d=l1
      print(a,b,c,d)
      >>>(1,2,3,4)
      
    l1 =[1,2,3,4]
    a,b,*_=l1
    print(a,b)
    >>>(1,2)
    

    4.逻辑运算

    与 或 非
    and or not
    逻辑运算符的优先级顺序:not,and,or
    
    
    a = 1
    b = 2
    c = 3
    print(a < b and b > c)  # and:如果有一个式子不符合条件,整条式子都为False
    print(a > b and b < c)
    print(a < b or b < c)   # or:只要有一个式子符合条件,整条式子都为True
    print(a > b or b < c)
    print(not a < b)  # 取反
    print(a < b and b < c or a > c)  # True
    print(a > b or b < c and a > c)  # False
    

    九:进制转换

    十进制转成其他进制
    bin(3): ob11         #十进制转二进制
    oct(8): oc10         #十进制转八进制
    hex(16) ox10         #十进制转十六进制
    
    其他进制转换成十进制
    
    二进制转成十进制
    print(int('110',2)) #第二个参数是第一个参数的进制
    
    八进制转成十进制
    print(int('110',8))
    

    十、什么是垃圾回收机制?

    垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间
    引用计数:当内存中的值引用计数为0,垃圾回收机制就会自动清除变量值

  • 相关阅读:
    【JavaScript框架封装】数据类型检测模块功能封装
    【JavaScript框架封装】数据类型检测模块功能封装
    JavaScript进阶【五】利用JavaScript实现动画的基本思路
    JavaScript进阶【四】JavaScript中的this,apply,call的深入剖析
    JavaScript进阶【三】JavaScript面向对象的基础知识复习
    JavaScript进阶【二】JavaScript 严格模式(use strict)的使用
    JavaScript进阶【一】JavaScript模块化开发的基础知识
    OPENGL学习【一】VS2008开发OPENGL程序开发环境搭建
    WEBGL学习【十五】利用WEBGL实现三维场景的一般思路总结
    Blender软件导出的obj数据格式文件内容解读
  • 原文地址:https://www.cnblogs.com/baohanblog/p/12143023.html
Copyright © 2020-2023  润新知