1. Cpython解释器的垃圾回收机制
什么是垃圾:当一个值身上没有人绑定任何变量名(该值的引用计数=0)时,该值就是一个垃圾
什么是垃圾:当一个值身上没有人绑定任何变量名(该值的引用计数=0)时,该值就是一个垃圾
引用计数增加
age=18 # 18的引用计数等于1
x=age # 18的引用计数等于2
print(age)
print(x)
age=18 # 18的引用计数等于1
x=age # 18的引用计数等于2
print(age)
print(x)
引用计数减少
age=19 #18的引用计数等于1
print(age)
del x #18的引用计数等于0
2. 变量值的三个特征:
id: 反映的是内存地址
type:数据类型
值:
age=18
print(id(age))
print(type(age))
print(age)
#总结:
# 2.1. id相同,值一定相同
# 2.2. 值相同,id可以不同
'''
>>> x='name:egon age:18***'
>>> y='name:egon age:18***'
>>> id(x)
2847698422856
>>> id(y)
2847698422928
'''
# 2.1. id相同,值一定相同
# 2.2. 值相同,id可以不同
'''
>>> x='name:egon age:18***'
>>> y='name:egon age:18***'
>>> id(x)
2847698422856
>>> id(y)
2847698422928
'''
# x=11111111111111111111111111231231231231222222222222
# y=11111111111111111111111111231231231231222222222222
#
# print(id(x))
# print(id(y))
#3. is 与 ==
# ==:值是否相等
# is:id是否相等
#4. 可变类型与不可变类型
# 可变类型: 值改变,id不变,证明就是在改变原值
# 不可变类型:值改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可变类型
# x=10 print(id(x))
x=11
print(id(x))
# 可变类型: 值改变,id不变,证明就是在改变原值
# 不可变类型:值改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可变类型
# x=10 print(id(x))
x=11
print(id(x))
l=['a','b','c']
print(id(l))
l[0]='A'
print(id(l))
print(l)
1. 在python3中只有一个input:
特点:会用户输入的任意内容都存成str类型
特点:会用户输入的任意内容都存成str类型
2. 在python3中只有一个raw_input,与python3的input一模一样
x=raw_input('>>>: ')
x=raw_input('>>>: ')
# 一: 数字类型
#1. 整型int
#作用:用来记录年龄、等级、各种号码状态
#定义:
# age=10 #age=int(10)
# print(type(age))
#使用:
# print(age + 1)
# print(age > 3)
#1. 整型int
#作用:用来记录年龄、等级、各种号码状态
#定义:
# age=10 #age=int(10)
# print(type(age))
#使用:
# print(age + 1)
# print(age > 3)
#2. 浮点型float
#作用:用来记录身高、体重、工资状态
#定义:
# salary=3.1 #salary=float(3.1)
# print(type(salary))
#使用:
# print(3.1 + 2.3)
# print(3.1 > 2.3)
# print(3.1 > 2)
# print(3.1 + 2)
#作用:用来记录身高、体重、工资状态
#定义:
# salary=3.1 #salary=float(3.1)
# print(type(salary))
#使用:
# print(3.1 + 2.3)
# print(3.1 > 2.3)
# print(3.1 > 2)
# print(3.1 + 2)
# 二:字符串类型str
# 作用:用来记录描述性质状态,比如名字、性别
# 定义:在单引号('')、双引号("")、三引号内(''' ''',""" """),包含一系列的字符
x='abc' # x=str('abc')
# print(type(x))
# 作用:用来记录描述性质状态,比如名字、性别
# 定义:在单引号('')、双引号("")、三引号内(''' ''',""" """),包含一系列的字符
x='abc' # x=str('abc')
# print(type(x))
y="abc"
z="""
abc
xxxx
"""
# print(type(x))
# print(type(y))
# print(type(z))
# print(type(y))
# print(type(z))
# msg='my name is "egon"'
# 使用:
# print('abc'+'def') # 仅限于str类型直接相加
# print('abc'*10) # *的只能是数字
# 了解:ASCII表
# x='abcdef'
# y='z'
# print(x > y)
# x='abcdef'
# y='z'
# print(x > y)
# print('a' > 'Z' )
# print('a' > 10 )
# print('a' > 10 )
# 三:列表类型list
# 作用:用来记录多个值,用索引对应值,索引反映是位置
# 定义:在[]内用逗号分隔开多个任意类型的值
# l=[1,3.1,'xxx',['a','b','c']] #l=list(...)
# 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])
# ['egon',18,['play',]],
# ['alex',18,['play','sleep']]
# ]
#
# print(students_info[1][2][0])
# 四:字典类型dict
# 作用:用来记录多个值,用key对应value,其中key对value有描述性的功能
# 定义:在{}内,用逗号分割开多元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key通常应该是str类型
# d={'x':1,'y':3.1,'z':['a','b'],'m':{'aaa':1111}} #d=dict(...)
# print(type(d))
# 使用:
# print(d['x'])
# print(d['m']['aaa'])
# print(d['z'][1])
# 作用:用来记录多个值,用key对应value,其中key对value有描述性的功能
# 定义:在{}内,用逗号分割开多元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key通常应该是str类型
# d={'x':1,'y':3.1,'z':['a','b'],'m':{'aaa':1111}} #d=dict(...)
# print(type(d))
# 使用:
# print(d['x'])
# print(d['m']['aaa'])
# print(d['z'][1])
# 列表的方式
# name age gender compay_info
# emp_info=['egon',18,'male',['Oldboy','SH',200]]
# print(emp_info[1])
# print(emp_info[3][2])
# 字典的方式
# emp_info={'name':'egon','age':18,"gender":'male','company_info':['Oldboy','SH',200]}
# emp_info={'name':'egon','age':18,"gender":'male','company_info':['Oldboy','SH',200]}
# print(emp_info['age'])
# print(emp_info['company_info'][0])
# print(emp_info['company_info'][0])
# names=['egon','alex','kevin']
# dic={'name1':'egon','name2':'alex','name3':'kevin'}
# dic={'name1':'egon','name2':'alex','name3':'kevin'}
# 五:布尔类型:True,Flase
# print(type(True))
# print(type(False))
# tag1=True
# tag2=True
# print(id(tag1))
# print(id(tag2))
# tag2=True
# print(id(tag1))
# print(id(tag2))
# age=18
# print( age > 18)
# print( age > 18)
# 所有数据类型自带布尔值
# 布尔值为假的数据类型:0,None,空
# print(bool([]))
# print(bool(''))
# print(bool(None))
# 布尔值为假的数据类型:0,None,空
# print(bool([]))
# print(bool(''))
# print(bool(None))
# 六 None
# print(type(None))
# print(type(None))
#01 比较运算符
#> >=
#< <=
#==
#!=
# print(10 != 11)
#> >=
#< <=
#==
#!=
# print(10 != 11)
# 了解
# x=None
# print(x == None)
# print(x is None)
# x=None
# print(x == None)
# print(x is None)
# l1=['abc',1,['a','b','c']]
# l2=['abc','aa',]
# print(l2 > l1)
# l2=['abc','aa',]
# print(l2 > l1)
#02 逻辑运算符
#and:连接左右两个条件,只有两个条件同时成立时and运算的结果为True
# print(10 > 9 and 3 > 2 and 'egon' == 'egon' and True)
#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)
# 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)
#res=(True or False) or (True and False)
#res=True or False
# print(res)
#not
# print(not 10 > 3)
# print(not 10 > 3)
# x=None
# print(not x is None)
# print(x is not None)
# print(not x is None)
# print(x is not None)
# age1=18
# age2=19
# print(age2 is not age1)
# 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')
print('login successfull')
print('login successfull')
print('login successfull')
print('login successfull')
else:
print('username or password error')