变量、数据类型、python内存管理
pycharm快捷键
ctrl + c 复制, 默认复制整行
ctrl + v 粘贴
ctrl + x 剪切
ctrl + a 全选
ctrl + z 撤销
ctrl + f 查找
ctrl + shift + z 反撤销
ctrl + d 复制粘贴选中内容,没有选中默认整行
ctrl + y 删除整行
ctrl + backspace 删除一个单词
ctrl + w 选中一个单词
ctrl + shift + r 全局搜索
shift + F10 运行上一个文件
ctrl + shift + F10 运行当前文件
shift + enter 进入下一行
ctrl + / 整体注释
ctrl + alt + l 格式化代码
home 回到行首
end 回到行尾
变量
什么是变量
变量: 定义世间万物变化的状态
IPO
I --> input --> 输入(变量)
P --> Process --> 处理
O --> Output --> 输出
变量的组成
- 变量名:具有描述意义; 接受变量值
- 赋值符号:赋值,把变量值传给变量名
- 变量值:具体的值
变量名的规范
- 变量名必须要有意义
- 变量名由数字、字母、下划线组成,不能以数字开头
- 不能以关键字命名
['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']
定义变量名的两种方式
下划线(python推荐使用)
neo_of_name = 'neo'
驼峰体
NeoOfName = 'neo'
常量
常量是指不变化的量(变量名大写)
这个不变是约定俗成的
AGE = 19
AGE = AGE + 1 # 这样做就很沙雕了
python内存管理
变量存哪了
当我们在test.py文件里定义一个变量x = 10,单纯这样写只是几个字符而已,只有当python解释器运行时,才有变量这个意义。这个变量的概念是python解释器提供的。
变量在计算机内存里开辟一个小空间,小空间内存放变量值10,然后内存给这个小空间一个变量名x,x指向10。
python垃圾回收机制
x = 10
x = 11
变量在内存开辟一个小空间,小空间内存放变量值10,变量名x指向10。加上一段代码x = 11,内存会重新开辟一个空间存放11,然后x会指向11,之前x指向10的连接会断掉。这样10就成了垃圾,python会自动处理这个垃圾,释放10的内存。

name1 = 'rese'
name2 = name1
name1 = 'neo'

引用计数
引用计数针对的是变量值, 变量值的引用次数
x = 1000 # 1000的引用次数为1
y = 1000 # 1000的引用次数为2
del x # del删除x,1000的引用次数为1
当一个变量值的引用计数为0时,会触发垃圾回收机制,之前的值会被回收
小整数池
>>> x = 10
>>> id(10)
140704061711472
>>> y = x
>>> id(y)
140704061711472
>>> z = 10
>>> id(z)
140704061711472 # 内存地址
>>> x = 1000
>>> id(x)
1619602196368 #
>>> x = 1000
>>> id(x)
1619602196496 # 这里内存地址与之前的不同
python实现int的时候有个小整数池,这是为了避免因创建相同的值而申请重复的内存空间带来的效率问题。
python解释器会自动定义[-5, 256]之间的 整数池,这是在内存中写死的。这个范围内的整数被全局调用时,永远不会触发垃圾回收机制。
在pycharm中,这个整数范围是扩大的,它优化了。
变量的三种打印形式
age = 20
# 打印值
print(age)
# 打印内存地址
print(id(age))
# 打印数据类型
print(type(age))
数据类型
什么是数据类型
数据类型对变量值做了分类,分成了不同类别
数字类型
整型
作用:描述年龄/id号
定义方式:
age = 21
age = int(21)
使用方法:
x = 2
y = 1
print(x + y) # 加
print(x - y) # 减
print(x * y) # 乘
print(x / y) # 除
print(x % y) # 取余
print(x // y) # 取整
print(x ** y) # 幂运算
当你需要使用如sin/cos/tan等函数时,怎么办呢?别担心,有方法
使用cmath模块
import cmath
print(cmath.sin(10))
浮点型
作用:描述薪资
定义方式:
salary = 3.2
salary = float(3) # 3.0
使用方法:与int整型类似
逻辑比较
>>> x = 1
>>> y = 2
>>> print(x > y)
False
>>> print(x >= y)
False
>>> print(x < y)
True
>>> print(x <= 1)
True
>>> print(x != y)
True
>>> print(x == y)
False
字符串
作用:描述姓名/性别
定义方式:
name = 'cwz'
name = "cwz's name"
使用方法:
str1 = 'neo'
str2 = 'zen'
print(str1 + ' ' + str2)
# 打印结果:neo zen
print(str2 * 10)
# 打印结果:zenzenzenzenzenzenzenzenzenzen
注释
单行注释
# 打印12
# print(12)
- 解释代码什么意思
- 让后面的代码失效
多行注释
用三引号
'''
写什么东西呢
'''
相当于定义了一个变量不使用
变量、数据类型、python内存管理的更多相关文章
- 【python测试开发栈】—python内存管理机制(二)—垃圾回收
在上一篇文章中(python 内存管理机制-引用计数)中,我们介绍了python内存管理机制中的引用计数,python正是通过它来有效的管理内存.今天来介绍python的垃圾回收,其主要策略是引用计数 ...
- python内存管理&垃圾回收
python内存管理&垃圾回收 引用计数器 环装双向列表refchain 在python程序中创建的任何对象都会放在refchain连表中 name = '张三' age = 18 hobby ...
- 转发:[Python]内存管理
本文为转发,原地址为:http://chenrudan.github.io/blog/2016/04/23/pythonmemorycontrol.html 本文主要为了解释清楚python的内存管理 ...
- Python内存管理机制及优化简析(转载)
from:http://kkpattern.github.io/2015/06/20/python-memory-optimization-zh.html 准备工作 为了方便解释Python的内存管理 ...
- 【python测试开发栈】python内存管理机制(一)—引用计数
什么是内存 在开始进入正题之前,我们先来回忆下,计算机基础原理的知识,为什么需要内存.我们都知道计算机的CPU相当于人类的大脑,其运算速度非常的快,而我们平时写的数据,比如:文档.代码等都是存储在磁盘 ...
- python内存管理(通俗易懂,详细可靠)
python内存管理 python3.6.9 内存管理的官方文档 https://docs.python.org/zh-cn/3.6/c-api/memory.html 一.变量存哪了? x = 10 ...
- python内存管理总结
之前在学习与工作中或多或少都遇到关于python内存管理的问题,现在将其梳理一下. python内存管理机制 第0层 操作系统提供的内存管理接口 c实现 第1层 基于第0层操作系统内存管理接口包装而成 ...
- Python 内存管理与垃圾回收
Python 内存管理与垃圾回收 参考文献:https://pythonav.com/wiki/detail/6/88/ 引用计数器为主标记清除和分代回收为辅 + 缓存机制 1.1 大管家refcha ...
- 解读Python内存管理机制
转自:http://developer.51cto.com/art/201007/213585.htm 内存管理,对于Python这样的动态语言,是至关重要的一部分,它在很大程度上甚至决定了Pytho ...
随机推荐
- [日常] gocron源码阅读-go语言的变量
变量的声明形式是这样的 var 变量名字 类型 = 表达式var ( AppVersion = "1.5" BuildDate, GitCommit string)类型可以被省略, ...
- python爬虫(3)——用户和IP代理池、抓包分析、异步请求数据、腾讯视频评论爬虫
用户代理池 用户代理池就是将不同的用户代理组建成为一个池子,随后随机调用. 作用:每次访问代表使用的浏览器不一样 import urllib.request import re import rand ...
- C++中各种输入函数的用法总结
1.scanf()函数 原型:int scanf(const char *restrict format,......); 入口参数:第一个参数是格式字符串,它指定了输入的格式,......格式化后的 ...
- 第十二周Scrum会议
本次照片 总结上周所达成的工作 做到的工作 1. 将前端页面进行了比较美观的美化 2. 实现了后台的代码的整合,同时将flask项目的整体框架搭建完成 3. 进行了数据库的建表等一些工作 遇到的难点 ...
- Mybatis拦截器(六)
拦截器的作用就是我们可以拦截某些方法的调用,在目标方法前后加上我们自己逻辑. Mybatis拦截器设计的一个初衷是为了供用户在某些时候可以实现自己的逻辑而不必去动Mybatis固有的逻辑. Mybat ...
- 2019 SDN上机第四次作业
2019 SDN上机第4次作业 1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本) 修改环境变量 2. 启动并安装插件 3. 用Python脚本搭建如下拓扑,连接O ...
- session未释放
客户反映一个关于session的bug,说有了1,2天以后,就无法登陆了. 我们这边试了好几天,都没有出现类似问题,后来没办法,只能远程开会,7点左右和他们通话,偶然发现他们居然直接关remote d ...
- WinCC中通过脚本禁用或启用Windows快捷键
有些项目要求WinCC全屏运行,并禁止通过操作系统快捷键切换到桌面,这时只需要在WinCC的计算机属性中勾选“禁用用于进行操作系统访问的快捷键”.此后当WinCC运行时,按Win键或Ctrl+Alt+ ...
- LOJ6029 [雅礼集训2017]市场
看到区间整除操作,直觉是不会除太多次就变成全 \(1\). 然而现在还有加操作. 我也不知道为什么,当一个节点的 \(\lfloor\frac{mx}{d}\rfloor=\lfloor\frac{m ...
- 与某军工背景软件企业分享Azure DevOps Server的经验
DevOps 是英文单词Development和Operations的组合词,是一种用于促进软件开发.运维实施和质量保障部门之间协同工作的过程和方法. 结合软件开发管理规范,应用自动化的构建.测试和发 ...