一、变量与常量
(一)变量
1.概述
变量即变化的量,记录某一事物的某种状态。
2.语法格式
变量名 赋值符号 变量值
name = ‘june’
3.三要素
一是变量的值;二是变量的内存地址;三是变量的数据类型。
4.命名
命名规则
(1)变量名只能由字母、数字、下划线三者任意组合。
(2)变量名不能以数字开头,下划线建议不要用在开头(因为有特殊含义)。
(3)变量名不能与关键字冲突,如print。
(4)变量名的命名一定要做到见名知意(见名知意很重要,无论变量名有多长,只为避免后期续写代码忘记其含义)。
命名风格
(1)驼峰体
所有单词首字母大写,eg:UserName。
(2)小驼峰
首个单词首字母小写,其余单词首字母大写,eg:userName
(3)下划线
单词与单词之间下划线隔开,python推荐使用下划线这种。eg:user_name
5.底层原理
如age=18,有赋值符号先看符号右边的再看左边。
首先,在内存空间申请一块内存空间来储存18;然后再将18所在内存空间的地址绑定给变量名age,最后如果要访问18,就通过变量名age来访问。
6.python底层优化
当数据很小时,如果有多个变量名需要使用,那么会指向同一块地址。
ps:
一个变量名只能指向一个内存地址。
一个内存地址可以有多个变量名指向。
7.垃圾回收机制
(1)垃圾数据概述
垃圾数据是指没有任何变量名指向的数据。
(2)python针对垃圾数据开发了一套自动化回收方案,过程如下解释;
* 引用计数
在内存中,某一变量值有几个变量名绑定引用计数就是几,只要不为0就不是垃圾
* 标记清除
当内存即将占满的时候,python会自动暂停程序的执行,从头到尾将内存中的数据进行扫描并打上标记,之后再一次性清除掉所标记的数据。
* 3.分代回收
会将数据的监管分为三个层次,随层级下降,监督频率会降低,为了减少资源的损耗。
(二)常量
1.概述
常量,即不变的量。
2.与其他编程语言常量的区别
在python中没有真正意义上的常量,将全大写的变量默认为是常量。如:HOST = ‘127.0.0.1’ ,一般情况下在配置文件中使用较多。
在其他编程语言中是存在真正意义上的常量 定义了就无法修改。
二、数据类型
(一)数字类型
1.分类
(1)整型int
age = 18 # 直接写整数就是整型
(2)浮点型float
weight = 60.2 # 直接写小数就是浮点型。
2.类型转换
(1)整型int
int只能转换纯数字,小数点也不识别,非数字不识别,会报错。
int还可以做进制转换
(2)浮点型float
(二)字符串str
1.表现形式
单引号;双引号;三个单引号;三个双引号
2.类型转换
str()可以将任意类型的数据转换成字符串类型。
(1)正反索引取值
(2)切片,顾头不顾尾。
print(res[1:4]). #取ell
步长:第三个参数代表步长。
反向切片:-1表示从右往左依次取值。
(3)长度len
获取字符串的长度,即字符的个数,凡是存在于引号内的都算作是字符,包括空格。
print(len(res)) # 12
(4)移除字符串首尾指定字符 strip()
默认移除首尾空白字符(空格、\n、\t)。
移除首尾指定字符。
(5)切分split
不指定字符,默认以空格作为切分符号。
指定切分字符。
(6)大小写
转全大写:.upper()
转全小写:.lower()
判断是否全大写:.isupper()
判断是否全小写:.islower()
判断是否以指定的字符x开头:.startswith(‘x’)
判断是否以指定的字符结尾:.endswith(‘x’)
(7)数字
判断是否纯数字:.isdigit()
(8)拼接
方式一:字符串相加;
方式二:'分隔符号‘.join(某列表)
注意在python中不同数据类型之间无法直接操作,此处的拼接必须都是字符串类型。
(9)替换
替换字符串中指定的字符:.replace(‘被替换值, ’替换值’)
替换指定个数的文本:.replace(‘被替换值, ’替换值’, 替换个数)
(10)格式化输出
方式一:与用户交互:占位符%s、%d,替换%。
cmd = input(‘请输入指令’)
print(‘您正在执行的指令%s’ % cmd)
方式二:字符串内置 format(’’, ‘’):
@大括号内写索引值可打破顺序,并反复使用位置相同的数据。
@大括号内写变量名
(11)其他
@所有单词首字母大写:.title()
@开头单词首字母大写:.capitalize()
@大小写互换:.swapcase()
@查找指定字符对应的起始索引值,从左往右找到一个就结束查找,找不到返回-1,而.index(‘x’)找不到直接报错:.find(‘x’)。
@统计某个字符出现的次数:count.(’’ )
@居中:.center(n,’’)
@左对齐:ljust(n,’’)
@右对齐:rjust(n,’’)
@字符串中既可以包含数字也可以包含字母:.isalnum()
@字符串中只包含字母:.isalpha
(三)列表list
1.表现形式
中括号扩起来,内部可存放多个任意元素,元素与元素之间用逗号分隔。
2.索引取值
从0开始连续数数。
方式一:整合
方式二:分步
3.基本使用
@添加值
方式一:.append(),尾部追加,注意括号内的数据是当成一个整体追加到列表末尾。
方式二:.insert(n,’’),插入元素,注意是将括号内的数据当成一个整体插入到索引指定位置。
方式三:.extend(),扩展元素,相当于for循环+append操作。
@删除数据
方式一:通用方法,索引删除:del name_list[1]
方式二:.remove(‘指定要移除的元素值’)
方式三:.pop(‘指定要弹出的元素值’),注意如果括号内不写参数则默认为弹出列表尾部元素。
@修改值:
@列表内一般都会储存相同数据类型的数据;类型转换:数据类型关键字(需要转换的数据);list关键字可以将支持for循环的数据类型转换成列表。
@升序:.sort()
降序:.soft(reverse=True)
.reverse()
.[::-1]
(四)字典dict
1.表现形式
大括号括起来;内部可存放多个元素,各元素是K:V键值对形式;元素与元素之间逗号隔开。K是对V的描述信息,一般都是字符串;V是真正的数据,相当于变量的值,可以是任意数据类型。具体编辑形式有两种:
2.类型转换
方式一:dict(name=‘jay’, pwd=123)
方式二:print(dict([[‘name’, ‘jay’], (‘age’, ‘18’), [‘hobby’, ‘read’], [‘country’, ‘china’ ]]))
3.基本使用
(1)取值
方式一:按k取值dic[‘name’],不存在直接报错。
方式二:.get(‘k’),当k不存在时,返回的是N one。
方式三:.values(),这个可以取所有v值。
引申1:keys():获取字典所有的k,看作是列表。
引申2:items():获取字典所有的kv,看作是元组。
(2)增改删
@增加
方式一:append:dic[‘habbies’].append(‘read’)
方式二:直接按k增加,但注意若k存在为修改;
@修改
按k修改,注意若k不存在为增加。
@删除
方式一:通用索引删除:del dic[‘k’]
方式二:.pop(‘k’),指定k弹出v。
方式三:.popitem,弹出kv元组。
(3)统计
统计字典内部键值对个数len()
(4)成员运算
字典中,成员运算只默认暴露k
4.其他使用
(1)更新
.update,等同于修改添加,k存在则修改,不存在则创建。
(2)初始化
(3)setdefault
当健存在的情况下,是获取该健对应的值,而不是修改。
当健存不存在的情况下,是新增一组健值对。
(五)布尔值bool
1.表现形式:两种,True(对的,正确的,可行的)和False
(错的,不可行的)。bool用于判断事物的对错或是否可行等。
在python中所有的数据类型都可以转换成布尔值,布尔值为False的有0、None、’’、[]、{}…,其他情况一律为True。
2.变量名:布尔值变量名一般采用is开头,如is_alive = True。
3.生活链接:生活中的数据储存与销户,其实很大概率并没有删除数据,而只是修改了数据中的某个唯一标识,然后通过代码筛选过滤掉。
(六)元组tuple
1.表现形式
表现形式为小括号括起来,内部可以存放多个元素,各元素可以是任意类型,但不支持“修改”(注意是索引指向元素的内存地址是不能改变),元素与元素之间用逗号隔开,可以看成是不可变的列表。
t = (1, 2, 3, 4, 5, 6, 7, 8)
注意若只有一个元素,需要在末尾加逗号。
2.类型转换
能够支持for循环的数据都可以转为元组。
3.基本使用
(1)索引取值
print(t[2])
(2)切片步长
(3)len元素个数
(4)for循环
(5)count计数
(七)集合set
1.表现形式
表现形式为用大括号括起来,内部可以存放都个元素,各元素不是K:V键值对、不可变且不重复、无序,元素与元素之间用逗号隔开。去重和关系运算两种情况下极有可能会用到集合。
s = {11, 22, 33, 44, 55, 66}
2.类型转换
能够支持for循环的数据都可以转为元组。
3.基本使用
(1)去重操作
(2)关系运算
@交集:&
@并集:|
@独有:-
@各自:^ ,即求抛去交集后的并集。
@子集与父集:><
三、可变类型与不可变类型
(一)可变类型
可变类型是指,值改变,内存地址不变,修改的是原值,有列表。
(二)不可变类型
不可变类型是指,值改变,内存地址必定要变,其实是产生了新值。有整型、浮点型、字符串。