type
status
date
slug
summary
tags
category
icon
password

🧑🏻‍🏫 python安装目录解释


pip 作用


帮助我们安装第三方模块或者别人写好的python代码

👉🏻 注释


单行注释


格式: #空格 内容

多行注释


格式:""“空格 内容 空格”""
格式:’’‘空格 内容 空格’’’

🤲🏻 变量


先定义,再引用

变量名


变量命名规则

1. 变量必须以字母和下划线开头;
2. 其他可以是字母、数字、下划线;
3. 变量区分大小写;
4. python关键字不能作为变量名;

命名规范

  1. 见名识意;
  1. 小驼峰命名:userName
  1. 大驼峰命名:UserName
  1. 下划线命名:user_name

方法

  • 统计一个变量的id:id(变量名)
  • 统计一个变量的类型:type(变量名)
  • 比较两个变量的 id 是否相等:变量1 is 变量2
  • 比较两个变量的值是否相等:变量1 == 变量2
  • 打印变量值:print(变量名)
  • 删除引用关系:del 变量名

常量


注:python没有常量一说,约定名称为大写的就是表示常量

规范

常量:USERNAME

⌨️ 基本数据类型


数字类型


整型类型

int

浮点型类型

float

布尔类型

bool
值:True、False
is_sleep = True print(type(is_sleep)) print(is_sleep)

字符串类型


str
name = '张大仙' name = "张大仙" name = """张 大 仙""" name = '''张 大 仙'''

字符串运算

  • 字符串的拼接:字符串 + 字符串 # 这种形式不建议
  • 字符串的打印数字的个数次:字符串 * 数字
name = "张大仙" name2 = "坦克" name2 = name + name2 name = name * 5

列表类型


list 索引从0开始,第一个是0,最后一个是 -1
info = [0, '张大仙', 18, '坦克'] print(info[1], info[-1])

特点

有序

内存存储

notion image
列表存储是的地址

元组类型


tuple
俗称:不可变的列表,即不能对元组的元素进行修改
t = (1, 'name', [1,2], {"name":"张大仙", "age": 18})

内存结构

notion image
notion image

作用

如果数据只有读的需求,没有改的需求尽量是用元组而不是列表,这样更节省内存。

字典类型


dict

特点

无序
person = { "name": "张大仙", "age": 18 } print(type(person)) print(person) print(person.get("name")) print(person["name"])

内存存储

和列表类似,key和value都存储的是地址,地址指向真正的值

注意

key需要时不可变类型的变量,即:整型、浮点、布尔、字符串、元组类型的值

集合


set
# 只能这样定义 a = set()

特点

1. 对元素的类型有要求,需要存储不可变类型的变量; 2. 无序; 3. 不能存储相同的元素; 4. 不可索引;

作用

去重、做关系运算

内存存储

参见列表

使用

sets = {1, 2, 3, 4, 'ss'} print(sets.add(2)) print(list(sets))

🍭 可变类型和不可变类型


定义


名词
解释
包含类型
可变类型
值改变的情况下,id不变,说明改的是原值
容器类型:列表、字典、集合
不可变类型
值改变的情况下,id变了,说明产生了一个新值
整型、浮点型、布尔类型、字符串类型、元组

直接引用和间接引用


notion image
l[2]的值不会改变,因为间接引用没有改变
notion image
notion image
看图,他们之间产生了堆内存的循环依赖问题,使用标记清除解决他

🔍 访问方式


notion image

🗑️ 垃圾回收


回收方法


del 变量
接触变量和堆内存的绑定关系,这样如果堆内存不存在引用,则会被垃圾收集器回收。

回收机制


1. 引用计数法:栈变量引用计数为0则回收; 2. 标记清除:解决堆循环依赖问题;没有栈区引用的堆内存都会回收;

分代回收


解决回收的效率问题

常量池


  • 小整数值的常量池:int 数值 -5 ~ 256 进行缓存;
  • 字符的常量池:a,b,c.....都有常量池;
  • None也是在小整数池中;

👨‍👦‍👦 与用户交互


输入


input()

python2返回值的类型使用的是用户输入的数据类型,也就是在用户输入之前需要明确类型
name = input("请输入名称:") print(name, type(name)) >> 请输入名称:"张大仙" >> 张大仙 <class 'str'>
python3将返回值都用一个字符串接收
name = input("请输入名称:") print(name, type(name)) >> 请输入名称:张大仙 >> 张大仙 <class 'str'>

注意上面的区别

python2方便的是程序员,用户得写字符串的引号,不输入的话会报错; python3方便的是用户,用户随便输入什么,程序员可以对输入的遍历进行转换; age = int(字符串变量) age就会转换成数字类型的变量

raw_input()

这个是python2的函数,和python3的input()功能是一致的,返回值都是字符串

输出


print(变量名)

将变量名的值打印到终端的显示器上 默认是\n就行换行操作,如果想修改可以使用
print("修改换行符", end='\n') print("修改换行符", end='\t')

格式化输出

1. %占位符 # 效率最差,所有版本都有的功能 占位符: s: 字符串 d: 有符号十进制整数和i一样 c: 字符 i:有符号十进制整数 u:无符号十进制整数 o: 八进制整数 x: 16进制整数(小写字母) e:索引符号(小写e) E:索引符号(大写E) f:浮点实数 g:f和e的简写 G: f和E的简写 2. {}+字符串.format() | {索引}+字符串.format(索引值) # 效率其次,2.7版本才有的功能 name = "张三" print("你好{}".format(name)) {索引值} 对应format的索引的值 3. f # 效率最高,3.5 之后才有的功能 name = input("你的名称: ") hometown = input("你来自哪里: ") info = f"我的名字是{name} ,我的家乡叫{hometown}" 4. string.template - 字符串的模版方法
name = "张三" classPro = "清华大学" age = 21 print("大家好,我叫%s,来自%s,今年%d岁" % (name, classPro, age)) name = "张三" print("你好{}".format(name)) print("中国{1},{0}".format(name, classPro))

⚾ 基本运算符


赋值运算


= 1. 普通赋值; 2. 解压赋值; -- 集合类型的数据进行的多参数赋值

算数运算符


1. 加法 + 2. 减法 - 3. 乘法 * 4. 指数 ** 5. 取余 % 6. 除法 / 7. 取整 //

比较运算符


1. == 2. != 3. < 4. > 5. >= 6. <=

逻辑运算符


逻辑运算符
说明
优先级
not
最高
and
其次
or
最低

成员运算符


in
  • 字符串
  • 列表 - 列表元素需要完全匹配
  • 字典 - 判断关键字是否在key中, key完全存在
not in
  • 字符串
  • 列表 - 列表元素需要完全匹配
  • 字典 - 判断关键字是否在key中
name = '张三' listNames = ['张三先', '李四'] print(name in listNames) dicts = { "name": "张三", "age": 18 } feature = "name" print(feature in dicts) str_name = '你好啊,张三' print(name in str_name) ''' False True True '''

🥈 条件判断


显示布尔值


直接返回True, False的类型

隐示布尔值


0,None, 空(空字符串、空列表、空字典) -> False
其他值对应的是 -> True
if 10: print('True')

if条件


语法

# if 条件是采用缩进来实现的 if condition1: condition1 program elif condtion2: condition2 program else: other condition program

👮🏻‍♂️ 拷贝


浅拷贝


如果元素都是不可变类型,浅拷贝和深拷贝没有区别。如果存在可变类型,那么浅拷贝是不会在内存在拷贝一份可变类型的变量的。那么就存在可变类型被修改的情况。

方法

# copy 方法 l1 = ['张大仙', '徐凤年', ['李淳罡', '邓太阿']] l2 = l1 l3 = l1.copy() print(id(l1), id(l2), id(l3)) print(id(l1[0]), id(l2[0]), id(l3[0])) print(id(l1[1]), id(l2[1]), id(l3[1])) print(id(l1[2]), id(l2[2]), id(l3[2])) l1[0] = '张坦克' print(id(l1[0]), id(l2[0]), id(l3[0])) print(l1[0], l2[0], l3[0]) # 不可变变量的值就不会变,所有值都改变 l1[2][0] = '李大嘴' print(id(l1[2]), id(l2[2]), id(l3[2])) print(l1[2][0], l2[2][0], l3[2][0]) ''' 4353582336 4353582336 4353581888 4352802416 4352802416 4352802416 4352802608 4352802608 4352802608 4353480832 4353480832 4353480832 4353687696 4353687696 4352802416 张坦克 张坦克 张大仙 4353480832 4353480832 4353480832 李大嘴 李大嘴 李大嘴 '''

内存结构

notion image
notion image

深拷贝


不可变量的id值不一样

方法

# copy.deepcopy() import copy l1 = ['张大仙', '徐凤年', ['李淳罡', '邓太阿']] l4 = copy.deepcopy(l1) print(id(l4[2]), id(l1[2])) ''' 4555592064 4555396608 '''

内存结构

notion image

🔁 循环语句


while循环


# 语法 while codition: condition program break # 退出当前层循环体 continue # 退出本次循环
while + else 只有while循环正常执行完成才会执行else, 否则不会
while condition: condition program else else program

示例

while 1: print('loop') if 1: print('if') break;

for 循环


对象

列表、字典、字符串、元组、集合

语法

for 变量名 in 可迭代对象: 子代码块

示例

names = ['张大仙', '张宏发', '张坦克'] for a in names: print(a) person = {'name': '张大仙', 'age': 18, 'score': 100} for per in person: print(per, '是', person[per])

range函数

含义
生成多少个列表元素
语法
range(10)
从0到10生成元素,不包含10
range(1, 9)
从从1到9生成元素,不包含9
range(1, 9, 1)
从1到9按步长1生成元素,不包含9
实现区别
python2是执行完就开辟对应的内存生成对应的空间
python3是只生成迭代器,当需要时才去生成对应的元素,这样就避免了空间的浪费。
用法
for i in range(10): print(i)
9*9乘法表
for i in range(1, 10): for j in range(1, i + 1): print(f'{i} * {j} = {i * j}', end='\t\t') print('\n')

🧗🏻 进制转换


notion image

十进制转其他进制


十进制转二进制

bin(十进制数字) 12 -> ob1100

十进制转八进制

oct(十进制数字) 12 -> 0o14

十进制转十六进制

hex(十进制数字) 12 -> 0xc

其他进制转十进制

int('进制数', 进制枚举值) float('进制数', 进制枚举值) ''' 进制枚举值: 2 : 二进制 8 : 八进制 16: 十六进制 '''

🔗 引用文章


  • 小飞有点东西
 
 
💡
有关于博客的任何问题,请在下方留言,感谢~ 🤞🏻
推荐书籍《原则》R.I.P 左耳朵耗子

  • Giscus
  • Cusdis
Sheamus
Sheamus
I'm a geeker!
公告
type
status
date
slug
summary
tags
category
icon
password

📢📢📢 重磅更新 📢📢📢

首页添加了 ChatGPT 的入口,只要添加上你自己的 OpenAI API key 你就能轻松玩转 ChatGPT 了~~~
使用过程有任何问题请到留言区留言,感谢 👏🏻👏🏻👏🏻