entrada recolección de basura de pitón, la interacción del usuario con los operadores básicos

En primer lugar, el mecanismo de recolección de basura

1. ¿Qué es la basura?

	我们写代码过程中对变量引用过的一些值,在后续操作中这个值不在使用了,
没有变量能找到它了,我们称这个值是垃圾。

2. ¿Por qué la basura para reciclar

	在我们编写代码的过程中会有给变量赋值的操作,赋值过程中会在内存空间
中为值开辟出一个空间来存储这个值,然后将值的内存地址给到变量。变量与值地
址所在区域我们称为栈区,值所在区域称为堆区,例如:x=10,y=20 如下图

valor de la variable lugar accesible

	当执行x=y时x会指向20,x与10的关系解除了,没有变量可以找到10了,
10也就没意义了,当这样的值多了会大量占用内存,导致内存溢出,所以需要
进行垃圾回收,释放内存空间

3. ¿Cuál es el mecanismo de recolección de basura

	垃圾回收机制(简称GC)是Python解释器自带一种机,专门用来回收不可
用的变量值所占用的内存空间

4, el principio de la recolección de basura

4.1, la cuenta de referencias

	引用计数就是值被变量名关联的次数。
	如:x=10
	我们就说10被关联了一次
	如果y=x,这样10也被y关联了,10的计数就 为2,这叫**计数增加**。
	del x   将x的关联解除,10的计数变为1,这叫**计数减少**。
	当计数被减为0时,该值没有变量与它关联,它就变为了垃圾,需要进行回
收

4,2, borrar la marca

	有两个列表
	l1 = [1,2,l2]
	l2 = [1,2,l1]
	可以看到俩个列表互相引用,你中有我,我中有你。但是,这样会出现一个
问题,我们说一个值被回收有个前提,是没有关联计数了,如果我们将l1、l2的
关联解除 :
	del l1
	del l2
	这俩列表没有变量可以引用他们了,但由于他俩又在互相引用,引用计数不
为0,但是这俩列表又没有变量相关联也就不会被调用了,内存被占用。所以为了
解决这个问题引入了标记与清除。
	再运行程序到内存快满的时候,程序会停下来,进行扫描标记,标记什么呢?
就是那些引用计数不为0,但是又没有变量引用的数据,进行清除,释放内存。

4.3, se recuperó generacional

	分代回收是为了提升python的回收效率设定的以空间换时间的方法。
	python会将数据进行分代,每次扫描垃圾时会将一些正在使用的值进行
标记,当标记积累到一定程度时会升代,然后,减少该值的扫描频率,增加扫描效
率。这会导致一些辈分高的数据不能及时回收,会占用内存空间,但会使扫描效
率加,所以说分代回收是以空间换时间

En segundo lugar, la entrada de interacción del usuario

1, la interacción

	交互说白了就是人与计算机交流的过程,人进行信息输入(input)计算机进行结果
输出(print)例如:输入
user_name = input('请输入账号:')
user_password = input('请输入密码:')
	输出
print(user == user_name)
print(password == user_password)

2, el formato de cadenas

2.1 ¿Por qué el formato de cadena?

我们在需要输出某些固定格式的字符串时,例如:
‘’我们去***玩,坐***去,住***酒店”,我们需要将***替换成具体的内容,这

Necesitamos cadena de formato en la línea.

2.2, la forma de formato de cadena

2.2.1 marcadores de posición,

占位符例如%s、%d
print('我们去%s玩,坐%s去,住%s酒店,价钱是%d元' %('迪士尼','飞机',
'上海大酒店',100))
我们去迪士尼玩,坐飞机去,住上海大酒店酒店,价钱是100

2.2.2, el formato

	使用方式是:str.format
'''
1、
用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式
------------ info of Egon -----------
Name  : Egon
Age   : 22
Sex   : male
Job   : Teacher
------------- end -----------------

'''

user_name = input('请输入姓名:')
user_age = int(input('请输入年龄:'))
user_work = input('请输入工作:')
user_like = input('请输入爱好:')

res = '''
------------ info of Egon -----------
Name  : {name}
Age   : {age}
Sex   : {like}
Job   : {work}
------------- end -----------------

'''.format(name=user_name, age=user_age, like=user_like, work=user_work)
print(res)

3, operadores básicos

1. Los operadores aritméticos

+ - * / // % **
 print(10 + 3.1)
 print(10 + 3)
 print(10 / 3)  # 结果带小数
 print(10 // 3)  # 只保留整数部分
 print(10 % 3) # 取模、取余数
 print(10 ** 3) # 幂运算

2, operadores de comparación

< > = <= >= !=
 print(10 > 3)
 print(10 == 10)
 print(10 >= 10)
 print(10 >= 3)

 name=input('your name: ')
 print(name == 'egon')

3, el operador de asignación

 =  += -= *= %= /= //= **=
 age = 18
 age += 1  # age=age + 1
 print(age)
 age*=3
 age/=3
 age%=3
 age**=3 # age=age**3

3,1, misiones cadena

 x=10
 y=x
 z=y
 z = y = x = 10 # 链式赋值
 print(x, y, z)
 print(id(x), id(y), id(z))
 

3,2, misiones cruz

 m=10
 n=20
 print(m,n)
 交换值
 temp=m
 m=n
 n=temp
 print(m,n)
 m,n=n,m # 交叉赋值
 print(m,n)

3.3, la asignación de descompresión

salaries=[111,222,333,444,555]
mon0,mon1,mon2,mon3,mon4=salaries
 print(mon0)
 print(mon1)
 print(mon2)
 print(mon3)
 print(mon4)
 mon0,mon1,mon2,mon3=salaries # 对应的变量名少一个不行
 mon0,mon1,mon2,mon3,mon4,mon5=salaries # 对应的变量名多一个也不行
# 引入*,可以帮助我们取两头的值,无法取中间的值
# 取前三个值
 x,y,z,*_=salaries=[111,222,333,444,555] # *会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为_
 print(x,y,z)
 print(_)

 #取后三个值
 *_,x,y,z=salaries=[111,222,333,444,555]
 print(x,y,z)

 x,*_,y,z=salaries=[111,222,333,444,555]
 print(x,y,z)

 salaries=[111,222,333,444,555]
 _,*middle,_=salaries
 print(middle)

# 解压字典默认解压出来的是字典的key
x,y,z=dic={'a':1,'b':2,'c':3}
print(x,y,z)


4, el operador miembro

	只有一个 :in
1.判断一个字符或字符串是否在一个大字符串中
 print("world" in "hello world")
 print('w' in 'hello world')
2、判断元素是否在一个列表中
list1 = ['age','name','sex']
print('age' in list1)
3、判断key是否在字典中
dict1 = {'name':'dog','age':18,'sex':'play'}
print('name' in dict1)
4not in
print ('world' not in 'hello world')

5, la identidad del operador

	只有一个:is
	作用:判断两个变量id是否相等

6, los operadores lógicos

包含:not and or
优先级:not > and > or
1、逻辑非not #就是把跟在not后面的条件结果取反,即:真变假,假变真
# ps:not与紧跟其后的那个条件是一个不可分割的整体
 print(not 16 > 13)
 print(not True)
 print(not False)
 print(not 10)
 print(not 0)
 print(not None)
 print(not '')

2、逻辑与 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 )  # 偷懒原则
 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) # 偷懒原则

	
Publicado 16 artículos originales · ganado elogios 0 · Vistas 157

Supongo que te gusta

Origin blog.csdn.net/weixin_46466247/article/details/104684805
Recomendado
Clasificación