python自主学习——python变量和数据类型

python自主学习——python变量和数据类型

python使用对象(object)模型储存数据,因此所构造的任何数据类型都以对象的形式存在。python内置的4种最基本的数据类型,包括:

  • 布尔型(用来表示真假,仅包含True和False两种取值)
  • 整性(整数)
  • 浮点型(小数)
  • 字符串型(字符序列)

对象和变量


python中的一切都是对象。对象具有三个特征:

  • 身份:每个对象唯一身份标识,可以使用内建函数id()查看,id()所得的值就是改对象的内存地址
  • 类型:决定了该对象可以保持什么值,使用内建函数type(obj_name)可以查看。注意:该函数返回的是类型对象,而不是字符串对象。对象类型决定了可以对他进行怎样的操作,还决定了其包装的值是否被允许修改。对象的类型无法改变,所以python是强类型的
  • 值:对象表示的数据项

对象值的比较

  1. 操作符:<,>等等

###对象身份的比较

foo1 = foo2 = 4.3

这条语句的实质是:一个值为4.3的·数字对象被创建,foo1和foo2这两个变量名字共同指向了此对象(变量仅仅是一个名字,是对对象的引用而不是对象本身)即foo1和foo2是同一个对象的两个引用:即foo1和foo2是同一个对象的两个引用

foo1 = 4.3
foo2 = foo1

第一句话使得值为4.3的数字对象被创建,然后其引用被赋值给foo1,第二句话使得foo2借助foo1同样指向了值为4.3的对象,这里和上一个例子实质是相同的

foo2 = 1.3 + 3

值为1.3的数字对象和值为3的数字对象被创建,相加后,得到一个新的值为4.3的对象 (此对象与上面代码中的值4.3对象不是同一个!),然后foo2指向了这个新对象。

当两个值相同的,身份不同(变量名相同)被创建,可以用 id() 返回的对象的地址来判断两个对象是否指向同一个地址

foo1 = foo2 = 4.3
id(foo1) == id(foo2)  #返回值为True

bar1 = 4.3
bar2 = 4.3
id(bar1) == id(bar2)  #返回值为False

当然也可以用is 和 is not操作符来判别身份的最佳方式:

foo1 = foo2 = 4.3
foo1 is foo2      # 返回True
foo1 is not foo2  # 返回False

*小整型量通常会在程序代码中频繁使用,为了提升效率,Python会对**-5~256*的整型对象进行缓存,即不会重复创建。

但是我们可以明显的发现当出现258 is 258 时,返回值还是true 任何一个对象都有一个内部的计数器,记录着其引用的数量, 当引用为0时,该对象就会被系统给收回,这就是Python进行自主内存管理的基本原理之一。

a = 4
b = 4
a is b
# true
257 is 257 #True

c = 1000
d = 1000
c is d
# false

我们可以利用type()返回对象类型:

type(4) #int
type(4.0) #float
type('abc') #str

# type()返回的不是字符串而是类型对象
type('abc').__name__  #返回‘str’,__name__是返回对象的属性
type(type('abc')) #返回type,python的内建函数

可以用isinstance()来检查一个对象是否是某类型使用的对象
isinstance(num, (int, float, complex)):
判断前边的num是否是(int, float, complex)中的一种;complex为复数

变量名(标志符):
命名规范:

  • 只能包含小写字符、大写字母、数字、下划线(_)
  • 大小写敏感
  • 不允许以数字开头
  • 以下划线开头的名字由特殊的含义
  • 不能使用python保留关键字

数字


数字可以直接访问,是不可更改且不可分割的原子类型。不可更改数字值的实质是新对象的创建。python本身支持整数和浮点数,其整数类型可以储存任意大小的整数(所能表达的数字范围和计算机的虚拟内存大小有关),这使得python十分适合大数的计算

布尔型

True和false

布尔运行算符:not、and、or(优先级由低到高)

复数

语法:real + imag j

用conjugate()可以获得其共轭复数

a_complex = 3.5 + 2.9j
a_complex.conjugate() # 返回(3.5-2.9j)

删除对象

del an_int

删除对象时只是删除了对象的引用,而不是删除了对象本身(相当于使对象内部计数器的值减少1),这时an_int不引用任何对象。对象本身的删除是由python内部的内存管理功能进行的

除法

  • 使用 /执行浮点除法
    如果运算对象是两个整数,使用/仍会得到浮点型结果
  • 使用//执行整除
1 / 2     # 0.5
1.0 / 2   # 0.5
1.0 // 2  # 0.0

9 / 5   # 1.8
9 // 5  # 1

基数

除了十进制外,python还支持以下三种类型的数字:

  • 0b0B表示二进制(以2为底)
  • 0o0O表示八进制(以8为底)
  • 0x0X表示十六进制(以16为底)

将整数转成相应进制的字符串

value = 65
bin(value) #'0b1000001'
oct(value) #'0o101'
hex(value) #'0x41'

类型转换

两个不同类型的数字对象进行运算时,python就要对其中一个进行强制类型转换,继而进行运算,这个道理和C语言中的自动转化是相似的**。基本规则:整型转化为浮点型,非复数转化为复数。总而言之:简单类型向复杂类型转换,不精确类型向更精确类型转换**

功能函数

  • abs():返回绝对值,如果参数是整型,返回整型,如果是浮点型,返回浮点类型,同样也可以用于复数绝对值的计算,即返回实部和虚部平方和的二次方根

    a=2+2j
    abs(a)
    #2.8,根号8
    
  • divmod():此函数将除法和求余结合起来,返回一个包含商和余数的元组:

    divmod(10, 3)    # 返回(3, 1)
    divmod(2.5, 10)  # 返回(0.0, 2.5)
    
  • pow()

    此函数功能和**一样,实现幂运算

  • round(number,[ndigits])
    返回number舍入到小数点后第几位。如果ndigits被省略或为None,则返回最接近输入值的整数

    round(4.499)     # 返回4
    round(4.499, 1)  # 返回4.5
    round(4.5)       # 返回4 等距离倾向于返回偶数
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值