Python基础——类型和运算

一、动态类型

Python中类型是在运行过程中自动决定的

  • 变量、对象和引用

è¿éåå¾çæè¿°

    运行a = 3后,先创建一个对象来代表值3,创建一个变量a(如果还没有创建的话),变量a变成3对象3的一个引用,在内部实际上变量是到对象内存空间的一个指针。

    与C++不同,C++变量是一块内存区域,改变变量值是改变相应内存内的值。

  • 类型属于对象,而不是变量

    在python中,变量名没有类型,而每个变量都包含了一个头部信息,标记了这个对象的类型。(还有一个头部信息是引用计数器)

  • 对象的垃圾收集

    每个对象中的计数器记录了当前指向该对象的引用的数目,一旦这个计数器被设置为零,这个对象的内存空间就会自动回收。每当一个变量名被赋予一个新值,原来数值对象的的引用值会减一。

    当对象引用自身,或引用了另一个引用自身的对象时,引用计数器不会清除为0,必须特别对待。

  • 共享引用

a=3
b=a
a='spam'

    è¿éåå¾çæè¿°

    

 

list_1 = [1,2,3,4]
list_2 = list_1
list_1[0] = 'python'

 

 

 

二、Python内置对象

不可变性:创建后就不能改变,只能重新赋值。

可变性:可以自由改变

dir(x)   help(x.function)可以查看对象的属性和方法详情

  • 数字(不可变)

     a = 1.1   a=3+4j  

    0o117 八进制 0x9ff 十六进制 0b10101 二进制 ,内置函数hex(I)、oct(I)、bin(I)可以把整数转换为这三种进制表示的字符串

    int函数可以将数字的字符串转换为一个整数,int('64')   int('117', 8)  int('ff', 16)  int('1000000', 2)。   eval函数,可以把字符串作为Python代码,也有类似的效果  eval('0o117')   eval('0xff')   eval('0b1000000'),但是比int要慢

    Python可以把多个比较连续起来执行,如A<B<C     X<Y>Z

    小数类型:(有固定精度的浮点值,解决了浮点数的缺乏精确度)(可以设置全局精度)

from decimal import Deecimal
Decimal('0.1') + Decimal('0.01')

    分数类型:(明确保留分子和分母,避免了浮点数的不精确性和局限性)

from fractions import Fraction
x = Fraction(1, 3)
  • 字符串(不可变)(序列操作)

    a = 'spam'  a="ggg's"   a=b'a\xolc'

    可以对字符串进行索引、切片等序列操作

    看上去改变了字符串的操作都是创建了一个新的字符串赋给原变量

    """aaabbb''''cdcddgga"""可以在三个引号中包含多行字符串

    单引号和双引号是一样的,可以互换

    与C++不同,python没有单个字符的类型,只有字符串。

  • 列表(可变)(序列操作)

    [123, 'spam', 1.23]   [123, [1, 2, 3], ['a', 'b', 'c']]

   可以对列表进行索引、切片等序列操作(相当于其他语言中的无固定类型的数组),并且可以嵌套

  • 字典(可变)

    {‘spam’: 2, 'egg': 3}

    {'food': {'ham': 1, 'egg': 3}}

    dict(name = 'mel', age = 45)

    dict([('name', 'mel'), ('age', 45)])

    dict.fromkeys(['a', 'b'], 0) #传入一个键列表和初始值

    无序的集合, 一种键值对映射,可以使用任何不可变对象作为键。

  • 元组(不可变)(序列操作)

    (0, 'Ni', ('a', 'b'))

    像不可变的列表,是任意对象的有序集合

  • 文件

 

  • 集合(可变)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值