python-内存管理-与用户交互-基本数据类型-基本运算符

本文深入讲解Python的基础知识,包括内存管理机制、用户交互方式、数据类型应用及基本运算符使用。探讨CPython垃圾回收机制,解析引用计数原理,演示不同类型变量的特性,并对比可变与不可变类型。此外,介绍Python2与Python3的输入处理差异,列举常见数据类型如整型、浮点型、字符串、列表和字典的定义与操作方法。
摘要由CSDN通过智能技术生成

一、内存管理

  1. cpython解释器的垃圾回收机制

    什么是垃圾:当一个值身上没有人绑定任何变量名(该值的引用计数=0)时

    引用计数增加

    age = 18 #18的引用计数等于1
    x = age  #18的引用计数等于2
    print(age)
    print(x)
    

    引用计数减少

    age = 19 #给变量重新赋值,18的引用计数等于1
    print(age)
    del x #删除x的引用,18的引用等于0
    
  2. 变量值的三个特征:

age = 18
print(id(age)) #id:反映的是内存地址
print(type(age)) #type:数据类型
print(age) #值:
总结: id相同,值一定相同 值相同,id可以不同

#在交互模式中

python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被GC回收

>>> x = 'name:egon age:18'
>>> y = 'name:egon age:18'
>>> id(x)
1872412445120
>>> id(y)
1872412445192

#在pycharm中

但在pycharm中运行python程序,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究

x = 11111111111111111111111111231231231231222222222222
y = 11111111111111111111111111231231231231222222222222
print(id(x))
1937134351488
print(id(y))
1937134351488
  1. is 与 ==

    == :值是否相等

    is: id是否相等

  2. 可变类型与不可变类型

    可变类型:值改变,id不变,证明就是在改变原值

    不可变类型:值改变,id也变,证明不是在改变原值,是创建了新值

    不可变类型举例:

    >>> x = 10
    id(x)
    1975086848
    >>> x = 11
    id(x)
    1975086880
    

    可变类型举例:

    l = ['a','b','c']
    print(id(l)) #id 2615441779656
    l[0]='a'
    print(id(l)) #id 2615441779656
    

二、python2中与用户交互

  1. 在pyhton3中只有一个input:

    特点:用户输入的任意内容都存成str类型

    x = input('>>>: ')
    print(type(x))
    
    salary = input('>>>: ')
    salary = int(salary)
    print(salary * 12)
    
  2. 在python2中只有一个raw_input,与python3中的input 一模一样,python2中的raw_input必须要求用户必须输入一个明确的类型,输入什么类型就存成什么类型

    x = raw_input('>>>:')
    

三、数据类型的基本使用

  1. 数字类型

    整型int

    作用:用来记录年龄、等级、各种号码状态

    定义:

    age = 10
    print(type(age))
    

    使用:

    print(age + 1)
    print(age > 3)
    
  2. 浮点型float

    作用:用来记录身高、体重、工资状态

    定义:

    salary = 3.1
    print(type(salary))
    

    使用:

    print(3.1 + 2.3)
    print(3.1 > 2.3)
    
  3. 字符串类型str

    作用:用来记录描述性质状态,比如名字、性别

    定义:在单引号(’’)、双引号("")、三引号内(’’’ ‘’’,’""" “”")包含一系列的字符

    使用:

    x = 'abc'
    y = "abc"
    z = """
    abc
    xxxx
    """
    
    msg='my name is "egon"'
    print('abc' + 'def') #仅限于str类型直接相加
    print('abc' * 10) #*的只能是数字
    
    

    了解:ASCII表

    x = 'abcdef'
    y = 'z'
    print(x > y) #字符串也可以比较
    print('a' > 10)
    
  4. 列表类型

    作用:用来记录多个值,用索引对应值,索引反映位置

    定义:在[] 内用逗号分隔开多个任意类型的值

    使用:

    l = [1,3.1,'xxx',['a','b','c']]
    print(type(l))
    print(l[0])
    print(l[2])
    print(l[3][0])
    
    students_info=[
        ['egon',18,['play',]],
        ['alex',18,['play','sleep']]
    ]
    print(students_info[1][2][0])
    
  5. 字典的方式

    emp_info={'name':'egon','age':18,"gender":'male','company_info':['Oldboy','SH',200]}
    print(emp_info['age'])
    print(emp_info['company_info'][0])
    
  6. 布尔类型:True、Flase

    print(type(True)) #<class 'bool'>
    print(type(False)) #<class 'bool'>
    
    tag1 = True     
    tag2 = True     
    print(id(tag1)) 
    print(id(tag2)) 
    

    所有数据类型都自带布尔值

    布尔值为假的数据类型:0,None,空

    print(bool([])) #False    
    print(bool('')) #False    
    print(bool(None)) #False 
    
  7. None

    print(type(None)) #<class 'NoneType'>
    

四、基本运算符

  1. 比较运算符

    > >=

    < <=

    ==

    !=

    print(10 !=11)
    

    了解

    x = None           
    print(x == None) #True
    print(x is None) #True
    
    list1 = ['abc','1',['a','b','c']]
    list2 = ['abc','2']
    print(list2 > list1) #True
    
  2. 逻辑运算符

    and:连接左右两个条件,只有两个条件同时成立时and运算的结果为True

    print(10 > 9 and 3 > 2 and 'egon' == 'egon' and True)
    

    or:连接左右两个条件,两个条件成立任意一个or运算的结果就为True

    print(False or False or True or False or 3 > 10)
    res = (True or (False and True)) or ((False or True) and False)
    res = (True or False) or (True and False)
    res = True or False
    print(res) #True
    
  3. not

    print(not 10 >3)
    
    x = None
    print(x is not None)
    
    age1 = 18
    age2 = 19
    print(age2 is not age1)
    

​ 小练习:

name_bk = 'egon'
pwd_bak = '123'
name = input('please input your name: ')
pwd = input('please input your password: ')
if name == name_bk and pwd == pwd_bak:
    print('login successfull')
else:
    print('username or password error')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值