python之基础篇(四)

本篇我们来说说python的内置对象类型及其运算。

  python有许多的内置类型,我们为什么要使用内置类型呢?python编程时是尽量去使用自定义类型还是尽可能多的使用内置类型呢?

  内置类型对python本身来讲它的理解能力更好一点,对其执行时所能够带来的性能上也会更好一点。所以,除非内置类型无法提供特殊对象处理时,一般而言最好都用内置类型。因为内置类型使得其内置对象程序更容易编写,另外,内置类型、内置对象是扩展组件,内置对象往往比自己开发的那种数据结构,在执行时更有效率。


python对象的相关术语:

python程序中保存的所有数据都是围绕对象这个概念展开的:

  程序中存储的所有数据都是对象。

  每个对象都有一个身份、一个类型和一个值。

    例如,school="cheqiao"会以"cheqiao"创建一个字符串对象,其身份是指向它在内存中所处位置的指针(其在内存中的地址),而school就是引用这个具体位置的名称。

  对象的类型也称对象的类别,用于描述对象的内部表示及它支持的方法和操作。

  创建特定类型的对象时,有时也将该对象称为该类型的实例。

  实例被创建后,其身份和类型就不可改变

    如果对象值是可修改的,则称为可变对象;

    如果对象值不可修改,则称为不可变对象

  如果某个对象包含对其它对象的引用,则将其称为容器。

  大多数对象都拥有大量特有的数据属性和方法

    属性:与对象相关的值。在对象实例化时,在对象内部可以使用的变量的变量名称就称之为对象的属性。

    方法:被调用时将在对象上执行某些操作的函数。

    使用点(.)运算符可以访问属性和方法。

 对于python而言,每一种数据类型都是由类来进行定义的。所以在python中类和类型是不加区分来使用的,它们指的都是同一个意思。

  类由属性和方法组成:

    属性(内置的数据):与对象相关的值。在对象实例化时,在对象内部可以使用的变量的变量名称就称之为对象的属性。在对象(实例)初始化时,由初始化过程来做赋值

    方法:被调用时将在对象上执行某些操作的函数。实例的调用接口,实例所属类型所支持的操作

  类必须要实例化成对象,而这些实例对象其内部的数据不同,所以它们才称为不同的实例。

  对实例内部的数据可以执行某些类型的操作,这些操作只能是附加在这些实例上的操作,这些操作是由类在内部定义的。

  一个对象在内存中存储,如果有变量名指向它,它就被引用了。

  当某一个对象不被引用或其引用技术为0时,这个对象则变成了可被垃圾回收器回收的对象。

  点号(.)运算符:可以用来访问对象的属性和方法。

    属性:数据

    方法:操作。使用点号运算符调用方法时,必须在后面加上(),如list.pop()

  可调用对象:使用callable()函数测试对象是否可调用。

  对于属性来说,通过点号运算符来访问时返回一个数据,若想显示则要使用print语句;

  对于方法来说,调用时则执行对应方法内部的代码。

  使用内置函数dir()来获取对象支持的属性和方法。

  使用内置函数help()来获取某方法的具体使用帮助。


对象的身份与类型:

  python内置函数id()可返回一个对象的身份,即该对象在内存中的位置

    is运算符用于比较两个对象的身份;

    type()用于返回一个对象的类型;

    对象类型本身也是一个对象,称为对象的类

      该对象的定义是唯一的,且对于某类型的所有实例都是相同的

      所有类型对象都有一个指定的名称,可用于执行类型检查,如list、dict

1
2
3
4
5
6
         if  is  b:
           statements
         if  = =  b:
           statements
         if  type (a)  is  type (b):
           statements


python核心数据类型:

对象类型
例子
数字
3077,3.14,300000
字符串
'baidu.com',"spam"
列表
['one','two','three']
字典
{'course':'linux','tutor':'baidu','age':42}
元组
(32,'spam','eggs')
文件
myFile=open('/tmp/tfile','r')
集合
set('abc'),{'a','b','c'}
其它类型
类类型、None、布尔型
编程单元类型
函数、模块、类
与实现相关的类型
编译的代码堆栈跟踪

  python是一个强类型的语言,很多时候我们需要显式地对类型进行转换。

  比如一个数字和一个字母相运算,这是个抛出异常的。因为此两者不是同一种类型,在python中不同类型之间是无法进行运算的。

1
2
3
4
5
6
7
8
9
10
11
12
In [ 1 ]: a  =  '123'
 
In [ 2 ]:  type (a)
Out[ 2 ]:  str
 
In [ 3 ]:  print  1  +  a
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeError                                 Traceback (most recent call last)
<ipython - input - 3 - 30abb1f25ec3 in  <module>()
- - - - 1  print  1  +  a
 
TypeError: unsupported operand  type (s)  for  + 'int'  and  'str'

  此时如果我们将类型进行显式的转换一下,就可以完成运算了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
In [ 1 ]: a  =  '123'
 
In [ 2 ]:  type (a)
Out[ 2 ]:  str
 
In [ 3 ]:  print  1  +  a
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeError                                 Traceback (most recent call last)
<ipython - input - 3 - 30abb1f25ec3 in  <module>()
- - - - 1  print  1  +  a
 
TypeError: unsupported operand  type (s)  for  + 'int'  and  'str'
 
In [ 4 ]: b  =  int (a)
 
In [ 5 ]:  type (b)
Out[ 5 ]:  int
 
In [ 6 ]:  print  1  +  b
124

  python中类型显式转换常用的内置函数有以下这些:

    str(),repr()或format():用于将非字符串转换成字符串

      str()的结果与print的结果一样;

      repr()表示某个对象的精确值;

      format()利用特定格式将其转换成字符串

    int():转换成整数

    float():转换成浮点数

    list(s):将字符串s转换成列表

    tuple(s):将字符串s转换成元组

    set(s):将字符串s转换成集合

    frozenset(s):将字符串s转换成不可变集合

    dict(d):根据指定的键值对创建字典,这里的d必须是(key,value)的元组序列,如d = (('a',1),('b',2),('c',3))或d = [('a',1),('b',2),('c',3)]

    ord(x):将字符x转换成整数值

    hex(x):将整数x转换成十六进制字符串

    bin(x):将整数x转换成二进制字符串

    oct(x):将整数x转换成八进制字符串










本文转自 忘情OK  51CTO博客,原文链接:http://blog.51cto.com/itchentao/1887192,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值