Python学习笔记 (2)变量、常量和数据类型
变量
顾名思义,变量就是一个会变的量,用一个变量名表示,指向内存中一片区域,而指向的区域存的是什么,这个变量就是什么数据类型,和C/C++挺不一样的。变量数据类型可以通过赋值变来变去(这就叫动态语言,区别于静态语言)。
创建和赋值
python中创建变量时只需给变量赋一个值,像这样 a = 1 ,然后变量名就指向存着那个值(1)的一片区域(表述不太对,应该是引用而不是指向)。用 id() 可以查看该变量的地址。
还可以像这样赋值 a, b = 1, 2 (a=1,b=2),或是这样 a=b=1 。
“可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。”
举个例子,我们给a赋值为1, a=1,就相当于创建了变量a,于是解释器在内存地址XXX中创建一个Number对象1,然后把a和XXX中的对象1关联起来。调用 id(a) ,能得到内存地址XXX。
然后我们给a加上1 a=a+1 或是给a赋值为2 a=2 ,就会再次创建一个在内存地址YYY中的Number对象2,然后a就被关联到了对象2上,至于对象1,也不知道是留着还是回收了,这里先留坑。
再调用 id(a) ,就会得到内存地址YYY,然后 b=2 , id(b) ,得到的还是内存地址YYY(官方解释器倒是这样的,不过其他解释器就不一定了),这时a和b引用同一片内存区域了,于是 a is b会返回True(is用来判断两个变量是否引用同一片内存区域)。还有一种情况,a和b的值都为1,但引用的是不同的对象(所在内存区域不同),这时 a is b 会返回False,而 a == b 会返回True(==用来判断两个变量所引用对象的值是否相等)
还有一件重要的事,变量名,规则和C/C++差不多——数字,字母,下划线, 任意组合,数字不能开头,对大小写敏感,python的关键字不能用,变量名尽量有意义(Python中变量的命名规范)。
查看自己版本python中的关键字可以使用命令help("keywords")
删除
del可以删除变量,但不同于C/C++中的free和delete()(别刮开我会说我不会用C/C++在堆区创建变量吗),python中的del不会删除内存中的数据,而是把变量删了(更高端一点的说法是把变量对对象的引用删了)。
使用方法 del a 或 del a,b,c
举个例子,建立变量a a=1,内存地址XXX就创建了对象1,于是a指向了XXX,建立变量b b=1 ,于是b也指向了XXX,然后 del(a) ,调用 id(b) 可以看到,这时b仍然指向XXX,但调用 id(a) 会报错,说变量a未定义。
此外,Python还有垃圾回收机制,留坑。
全局变量和局部变量
留坑到学函数时
常量
习惯用全部大写的变量名表示常量,其实电脑觉得它还是个变量,Python里没有C语言里类似const的东西,换句话说,把变量当成常量用就好。此外,Python还有6个内置常量。
Python的内置常量
True、False、None、NotImplemented、Ellipsis、__debug__(注意有些首字母大写)
数据类型
标准数据类型
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
一些补充说明
以上6种数据类型分类
| 按照存储数据个数区分 | 标量/原子类型(值能存放一个值) | 数字,字符串 |
| 容器类型(存放多个值) | 列表,元组,字典 | |
|
按照可变不可变区分 //可变类型指的是在同一块内存地址之上可以将值替换掉(使用id()函数查看变量的内存地址) |
可变 | 列表,字典,集合 |
| 不可变 | 数字,字符串,元组 | |
| 按照访问顺序区分 | 直接访问(不可拆分) | 数字 |
| 顺序访问(有下标的) | 字符串,元组,列表 | |
| key值访问(映射类型) | 字典 |
内置的type()函数可以用来查询变量所指的对象类型。此外还可以用 isinstance()来判断。使用方法
Python数据类型转换
这里借用C/C++的概念,可能不兴这么说,但好理解。
隐式类型转换
整数和浮点数做运算时,解释器将整数转换为浮点数;
布尔型和整型做运算时,将布尔型转换为整型;布尔型和浮点型做运算时,将布尔型转换为浮点型;
整型和布尔型与复数做运算时,被转换为浮点型;
两个整型做“/”运算时,无论是否除得尽,结果都为浮点型。
显式类型转换
(来自这里)
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
| 函数 | 描述 |
|---|---|
|
将x转换为一个整数 |
|
|
将x转换到一个浮点数 |
|
|
创建一个复数 |
|
|
将对象 x 转换为字符串 |
|
|
将对象 x 转换为表达式字符串 |
|
|
用来计算在字符串中的有效Python表达式,并返回一个对象 Ps:eval()的一个应用——python 如何定义n个变量 (变量声明自动化) |
|
|
将序列 s 转换为一个元组 |
|
|
将序列 s 转换为一个列表 |
|
|
转换为可变集合 |
|
|
创建一个字典。d 必须是一个序列 (key,value)元组。 |
|
|
转换为不可变集合 |
|
|
将一个整数转换为一个字符 |
|
|
将一个字符转换为它的整数值 |
|
|
将一个整数转换为一个十六进制字符串 |
|
|
将一个整数转换为一个八进制字符串 |
|
|
将一个浮点数x四舍五入为一个整数,若有第二个参数,则四舍五入为y位浮点数 |
自定义数据类型
留坑
Python学习笔记 (2)变量、常量和数据类型的更多相关文章
- python学习笔记(4)-基本数据类型-数字类型及操作
大学mooc 北京理工大学 python语言程序设计课程学习笔记 一.整数类型 可正可负,没有取值范围的限制(这个与c不同,c要考虑数据类型的存储空间).如pow(x,y),计算x的y次方,pow(2 ...
- python的学习笔记01_2变量 常量 注释 用户交互 格式化输出
变量是什么? 变量的作用 Variables are used to store information to be referenced and manipulated in a computer ...
- 小甲鱼:Python学习笔记001_变量_分支_数据类型_运算符等基础
1.下载并安装Python 3.5.0 Python是一个跨平台语言,Python从3.0的版本的语法很多不兼容2版本,官网找到最新的版本并下载:http://www.python.org 2.IDL ...
- golang语法学习(一):变量,常量以及数据类型
学习一门新的语言肯定是要从他的主要的语法開始,语法构成了整个程序设计的基础,从语法中我们也能够看到这门语言的一些特性.可是话说回来.语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度 ...
- python学习笔记2(pycharm、数据类型)
Pycharm 的使用 IDE(Integrated Development Environ ment) :集成开发环境 Vim :经典的linux下的文本编辑器(菜鸟和大神喜欢使用) Emac ...
- Python 学习笔记2 变量
Python变量的一些命名规则和指南 每种编程语言都需要变量, 这些变量的命名,我们一般会遵守一些公认的规则. 已达到方便自己,他人阅读的好处. 变量只能包含字母.数字和下划线.变量可以以字母和下划线 ...
- Python学习笔记(二):数据类型
一.python中的数据类型 python中的数据类型包括:整型.浮点型.布尔型.字符串类型 整型(int)和浮点型(float) Python中的整型只有int,没有short.long:浮点型fl ...
- Python 学习笔记6 变量-字典
字典是python中一个十分重要的变量,他是一个可变的容器对象.通过一组key(键)和value(值)对组成一个元素. 组成形式为{'key':'value', 'key':'value'}.整个字典 ...
- Python 学习笔记6 变量-元组
我们在上一篇中了解了变量list(列表), 今天我们来介绍下元组.元组是由括号和逗号,组织起来的一个元素的集合.和list不同的是,它其中的元素是不能被修改的,和其他语言中的常量相类似. 需要注意的是 ...
- Python 学习笔记5 变量-列表
列表是python常用的一种变量. 是由一些列按照特定顺序排列的元素组成的.你可以创建包含字母表中的所有字母,数字.可以将任何东西都加入到列表中. 通常情况下,列表中都包含多个元素,所以建议变量的名称 ...
随机推荐
- NOIP前的刷题记录
因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数 组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008 ...
- 01-vue指令
什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于We ...
- 题解报告:hdu 2588 GCD(欧拉函数)
Description The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written ...
- S - Cyclic Components (并查集的理解)
Description You are given an undirected graph consisting of nn vertices and mm edges. Your task is t ...
- ACM_递推题目系列之三放苹果(递推dp)
递推题目系列之三放苹果 Time Limit: 2000/1000ms (Java/Others) Problem Description: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放 ...
- 381 Insert Delete GetRandom O(1) - Duplicates allowed O(1) 时间插入、删除和获取随机元素 - 允许重复
设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构.注意: 允许出现重复元素. insert(val):向集合中插入元素 val. remove(val):当 val ...
- 手机页面操作栏的创建及WebFont的使用
一.手机界面底部操作栏的创建. <style> .opers{ position:absolute; bottom:0px; left:0px; right:0px; height:3re ...
- MVC之参数验证(二)
MVC内部针对这此验证是如何实现的咧???现在我们就来分析一下这此验证的背后故事.... 1.ModelValidator与ModelValidatorProvider 虽然Model绑定方式的因绑定 ...
- 世界上最受欢迎的10个Linux发行版
帮助新的Linux用户在越来越多的Linux发行版中选择最合适的操作系统,是创建这个网页的原因.它列出了迄今为止最流行的10个Linux发行版(另外增加的是FreeBSD,到目前为止最为流行的BSD系 ...
- DropDownList 递归绑定分子公司信息
/// <summary> /// 绑定下拉框 /// </summary> /// <param name="ddl">绑定控件名称</ ...