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位浮点数 |
自定义数据类型
留坑
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring-data-jpa EntityManager封装通用Dao
由于在项目中添加新的业务,该项目使用jpa 但是表结构不是这个项目产生,所以使用jpa实体管理器(EntityManager)封装了一个通用的Dao sql封装类 package com.ronnie.data.utils; import org.springframework.util.StringUtils; /** * @Description: * @Author: rongyu * @CreateDate: 2018/8/30$ 11:49$ * @Remark: */ public class NativeSqlBuilder { private final static String BLANK = " "; private final static String COMMA = ","; private final static String DEFAULT_SELECT_FIELD = "*"; private final static String DEFAULT_ORDER = "id DESC"; private String tableName; privat...
- 下一篇
oracle数据类型和对应的java类型
SQL类型 JDBC类型(JDBC 1.0) Java型 Oracle Java型 CHAR java.sql.Types.CHAR java.lang.String oracle.sql.CHAR VARCHAR2 java.sql.Types.VARCHAR java.lang.String oracle.sql.CHAR LONG java.sql.Types.LONGVARCHAR java.lang.String oracle.sql.CHAR NUMBER java.sql.Types.NUMERIC java.math.BigDecimal oracle.sql.NUMBER NUMBER java.sql.Types.DECIMAL java.math.BigDecimal oracle.sql.NUMBER NUMBER java.sql.Types.BIT boolean oracle.sql.NUMBER NUMBER java.sql.Types.TINYINT byte oracle.sql.NUMBER NUMBER java.sql.Types.SMALL...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块