python基础用户交互式、变量、垃圾回收机制
一、两种运行Python程序的方式
1.交互式
优点:输入内容立刻就有对应的返回结果
缺点:无法永久保存数据
在Python3中:input会将用户输入的内容都存为字符串类型
在Python2中:raw_input用法与python3中input一样
username = input("请输入您的账号名:") print(username)
2:命令行(文件的形式)
优点:可以永久保存数据
缺点:暂时来看运行该文件优点麻烦
运行一个py文件需要走的步骤
1.将python解释器代码从硬盘读到内存。
2.将你写好的py文件有硬盘读到内存。
3.解释器解释读取py文件中的内容,解释成计算机能够识别的语句
(如果是一个普通文本文件,仅仅只会将文件内容展示到屏幕上给用户查看,不会检测翻译文件内容)
ps:python解释器和普通的文本编辑器前面两步是一样的,仅仅第三步不一样(一个是解释语法,一个是文本展示)
二、变量
变量的三要素
1.id():返回的是一串数字,这一串数字你可以直接理解为内存地址
2.type():返回的是该变量对应的数据的类型
3.value:该变量指向的内存当中数据的值
变量名的命名规则:
1:只能用字母数字下划线
2:不能以数字开头
3:不能用关键字命名变量名
例如以下关键字不能命名变量
""" ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield'] """
注意:
命名尽量一看就知其意有具体的含义,尽量别用拼音或中文#
命名规则流派:驼峰体和下划线(前端推荐:userName python使用:user_Name_out)
常量:不可变更的量 Eg:pai=3.1415926 python里默认纯大写的变量名为常量改写需慎重
三、“==”和“is“的区别
#1 "=="比较的是value, #2 is比较的是id id相等value一定相等,但value相等id不一定相等 #注意: #1. id相同,意味着type和value必定相同 #2. value相同type肯定相同,但id可能不同
四、垃圾回收机制
1、引用计数:内存中的数据如果没有任何的变量名与其有绑定关系,那么会被自动回收
x = 10 # 直接引用 # print(id(x)) # y = x # z = x l = ['a', 'b', x] # 间接引用 # print(id(l[2])) d = {'mmm': x} # 间接引用 # print(id(d['mmm'])) # x=10 # l=['a','b',x] # l=['a'的内存地址,'b'的内存地址,10的内存地址] # # x=123 # print(l[2]) # # # x=10 # x=[10,] # # l=['a','b',10] # l=['a','b',10]
2、标记清除:当内存快要被某个应用程序占满的时候,会自动触发
# 循环引用=>导致内存泄露 l1=[111,] l2=[222,] l1.append(l2) # l1=[值111的内存地址,l2列表的内存地址] l2.append(l1) # l2=[值222的内存地址,l1列表的内存地址] # print(id(l1[1])) # print(id(l2)) # print(id(l2[1])) # print(id(l1)) # print(l2) # print(l1[1]) del l1 del l2
3、分代回收:根据值得存活时间的不同,划为不同的等级,等级越高垃圾回收机制扫描的频率越低。用来降低引用计数的扫描频率,提升垃圾回收的效率