python入门《基础知识2--python的内置类型与简单类型、常量类型介绍》

本文章将介绍:

1.一些常用的、有用的自省函数。

2.python常见类型的分类。

3.对5个简单类型分别进行介绍,其余类型将在后面展开。

 

一、常用的自省函数

(1)help()

         返回python中相关的文档信息,包括内建函数等

(2)type()

         返回当前对象的类型

(3)dir()

         返回当前对象的所有属性

(4)callable()

         判断当前对象是否可调用,英文--call呼叫,callable--可以呼叫的--可被调用的

(5)id()

         返回对象的“唯一序号”。对于引用对象来说,返回的是被引用对象的id()。该序号是引用地址,与C++中的内存地址概念不同。(emmm...具体有哪些不同,为什么不同,差异在哪里还不太清楚,后面再填坑)

(6)hasattr()和getattr()

         分别判断对象是否有某个属性及获得某个属性值。

(7)isinstance()

          可以确认某个变量是否有某种类型。

二、python中常见类型的分类

相对于静态语言(如C++,java),python的数据类型功能更全面和强大。

python面向对象的原理与其他语言不同的地方在于:

(1)所有数值都封装到特定的对象中,不存在像C中那样的int这样的简单类型。(而是把它当做一个类,一个class)

(2)所有东西都是对象,包括代码本身也被封装到对象中。(还没理解)

常见类型如下:

分类类型名称描述
NoneNoneType 空对象
数值IntType 整数
FloatType 浮点数
ComplexType 复数
布尔BoolType 布尔类型
序列StringType 字符串
UnicodeType Unicode字符串
ListType 列表
TupleType 元组
RangeType range()函数返回的对象
BufferType buffer()函数返回的对象
映射DictType 字典
集合Set 集合类型
可调用类型BuiltinFunctionType内建函数
BuiltinMethodType内建方法
ClassTpye
FunctionType用户定义函数
InstanceType类实例
ModuleType模块
ClassType 类定义
类实例InstanceType 类实例
文件FileType 文件对象
内部类型CodeType 字节编译码
FrameType 执行框架
TracebackType 异常的堆栈跟踪
SliceType 由扩展切片操作产生
EllipsisType 在扩展切片中使用

    一上来就丢过来这么一大堆表格,是不是看得头昏眼花呢?哈哈哈。其实这些类型中“内部类型"主要是python解释器调用的时候使用,一般程序员很少使用,可以不用管它。其余的有部分重复,其实也不是很多啦,后面会一一介绍的。

三、简单类型

python简单类型包括5个:

(1)bool类型:用于逻辑运算和比较的类型

(2)int类型   :类似于C++的int类型

(3)float类型:用来表示小数的类型

(4)complex类型:用来表示复数的类型,有实数和虚数两个部分。(PS:这是其他语言没有的)

(5)None类型 :空类型,用来表示空或者无返回值。

1.布尔类型(bool)

 布尔值仅可能为True或False。

布尔运算:

(1)小于,比如i<100;

(2)小于等于,比如i<=100;

(3)大于等于,比如i>=100;

(4)相等,比如 i == 100;

(5)不等于,比如i!= 100.

逻辑运算符还有

或:or       与:and           非:not,与C++中||,&,!相对应。

    与C++有所区别,python中非零值对应于真,True;而0,0.0,0.00,空列表[],空字典{},空元组(),None,以及空字符串“”都对应于假,Flase。而把一个bool类型的True或Flase用int转换,却只会成为1或者0。

   与C++类似,对于一个逻辑表达式,从左往右扫描,当当前结果足以确定最终结果时,不再执行后面的表达式。如:expr1 and expr2,若expr1为假则不再执行expr2了,直接返回expr1的值(而非返回0)。

2.整数类型(int)

支持加减乘除,幂,求模等各种运算,在python3.x中合并了int和long。

与C++一样,不同精度数值运算,结果会转换为精度最高的那个类型。精度上:

与C++的区别:

(1)幂运算用两个*表示,如2的3次方为2**3

(2)python中整数相除不会强制取整,而更符合人的思考如:print(1/3) 为0.333333333333333

(3)求模,python中不限制%符号两侧必须是int型,如1%3.0结果为1.0,1%0.25结果为0.0

(4)八进制:在数值前加上一个0和一个o

(5)优先级:幂>乘除==求模>>加减

3.浮点数类型(float)

大致与C++相同,需注意的是,只要是带圆点符号的数值都会被认为是浮点数类型。

即使是如:1.     这样也会被等同于1.0

4.复数类型

这是一个在其他语言很少见的一个类型,python常被用于科学计算,复数类是科学计算中很有用的一个部分。

形如:a+bj。用type()函数查看类型,print(type(2+3j)),结果是<class'complex'>复数类。j是-1的平方根,即j**j==-1。

5.None类型

这是一个python中特有的概念“空对象”。

     什么是空对象呢?首先,pyhton的思想是万物皆对象,一切都是对象,那空对象就是说没有对象,没有一切,一切没有,什么都不存在。与空字符串“”的区别在于,空字符串虽然看上去没有字符串,但实际上还是一个字符串只不过长度为0罢了,相同点是都可以表示Flase;同样的,None与0不同,0是一个数值,只不过大小为0罢了。而None是python中的一个特殊的常量,它就是表示什么都没有,什么都不存在。函数中无返回结果即为None,相当于C++中的Null。

PS:(1)None是一个特殊的常量,类型是NoneType,可以把None赋值给别的,但不能创建一个其他NoneType类型的对象。

      (2)None不能与None之外的量进行大小比较(会报错),None与None之间也只能用==,返回True。

      (3)对None可以进行逻辑运算,None和其他量相and,返回None。(是and起的作用)

              not None为True。

四、简单类型的运算

主要介绍python的位运算(二进制):

1.求补:按位取反再加一  ~

2.左移右移  <<,>>

3.按位异或  ^

4.按位求和  &

5.按位求或  |

五、常量类型

    简单类型均为常量类型,也就是说这些类型对象一旦被创建,其值就不能修改。

    与C++不同,C++中如下操作:

int a;

a = 1;

a = 2;

    是说:声明一个整型变量啊,先给a赋值为1,再更改赋值为2,这里的a是一个变量,值可以更改。

    Python中:

a = 1

a = 2

  是说:有一个int类对象  1,先把a这个名字与该int类对象绑定,此时a就是这个int类对象的名字,相当于a指向了该int类对象1。

然后,有一个int类对象  2,再把a这个名字与该int类对象绑定,此时a又指向了这个int类对象2.但是要注意的是,原先的int类对象1作为简单类型对象,是一个常量类型对象,按道理来说是不能更改的,那么这里我们更改了吗?我们先引入一个函数--id()

他能返回当前对象的编号,这个编号就相当于C语言里的内存地址。

  我们做如下操作:

a = 1

id(a)

a = 2

id(a)

  我们会发现前一个id()返回值和后一个id()返回值不同,也就是说,与C++中不一样,C++中这样操作a的地址是不变的没变的是a的值,而python中改变了,其实就是说,是a的位置发生了变化,而非原先的1改变了,实际上原先的1一直保存在第一个id(a)返回的编号中,只是a更改了指向,指向了2。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值