Python入门 Python变量和数据类型

系统 1669 0

一、 整数:

    Python可以处理任意大小的整数,当然包括负整数

二、 浮点数

     浮点数也就是小数,之所以称为浮点数

      整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

三: 字符串

    字符串是以 '' "" 括起来的任意文本,比如 'abc' "xyz" 等等。

四: 布尔值

    一个布尔值只有 True False 两种值

    布尔值可以用 and or not 运算。

五: 空值

     空值是Python里一个特殊的值,用 None 表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

 

变量:

在Python程序中,变量是用一个变量名表示,变量名必须是 大小写 英文、数字和_的 组合,且不能用数字开头

在Python中,等号 = 是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:

      a = 123    # a是整数
print a
a = 'imooc'   # a变为字符串
print a
    

这种变量本身类型不固定的语言称之为 动态语言 ,与之对应的是 静态语言。

静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,

 

当我们写: a = 'ABC' 时,Python解释器干了两件事情:

1. 在内存中创建了一个 'ABC' 的字符串;

2. 在内存中创建了一个名为 a 的变量,并把它指向 'ABC'

 

也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:

      a = 'ABC'
b = a
a = 'XYZ'
print b
    

最后一行打印出变量b的内容到底是'ABC'呢还是'XYZ'?如果从数学意义上理解,就会错误地得出b和a相同,也应该是'XYZ',但实际上b的值是'ABC',让我们一行一行地执行代码,就可以看到到底发生了什么事:

执行 a = 'ABC' ,解释器创建了字符串  'ABC'和变量 a,并把a指向 'ABC':

执行 b = a ,解释器创建了变量 b,并把b指向 a 指向的字符串'ABC':

执行 a = 'XYZ' ,解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:

所以,最后打印变量 b 的结果自然是 'ABC' 了。

 

,Python字符串用 \ 进行转义。

      \n 表示换行
\t 表示一个制表符
\\ 表示 \ 字符本身
    

 

如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀  r  ,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如:

        r'\(~_~)/ \(~_~)/'
      

但是 r'...' 表示法不能表示多行字符串,也不能表示包含 ' 和  " 的字符串(为什么?)

如果要表示多行字符串,可以用 '''...''' 表示:

        '''Line 1
Line 2
Line 3'''
      

上面这个字符串的表示方法和下面的是完全一样的:

'Line 1\nLine 2\nLine 3'

还可以在多行字符串前面添加  r  ,把这个多行字符串也变成一个 raw字符串

        r'''Python is created by "Guido".
It is free and easy to learn.
Let's start learn Python in imooc!'''
      
 

 

因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串 'ABC' 在Python内部都是 ASCII编码 的。

Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:

      print u'中文'
中文
    

注意:   不加 u ,中文就不能正常显示。

 

转义:

      u'中文\n日文\n韩文'
    

多行:

      u'''第一行
第二行'''
    

raw+多行:

      ur'''Python的Unicode字符串支持"中文",
"日文",
"韩文"等多种语言'''
    

如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

      
        # -*- coding: utf-8 -*-
      
    

目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为... 并选择UTF-8格式保存。

 

Python的 整数运算结果仍然是整数,浮点数运算结果仍然是浮点数

      1 + 2    # ==> 整数 3
1.0 + 2.0    # ==> 浮点数 3.0
    

但是 整数和浮点数混合运算的结果就变成浮点数了:

      1 + 2.0    # ==> 浮点数 3.0
    

 

为什么要区分整数运算和浮点数运算呢 ?这是因 为整数运算的结果永远是精确的, 而浮 点数运算的结果不一定精确 ,因为计算机内存再大,也无法精确表示出无限循环小数,比如  0.1 换成二进制表示就是无限循环小数。

 

Python的除法运算和java一样。/ 是整除。%是取余。

 

在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:

      a = True
print a and 'a=T' or 'a=F'
    

计算结果不是布尔类型,而是字符串 'a=T',这是为什么呢?

因为Python把 0 空字符串'' None 看成  False 其他数值 非空字符串 都看成  True ,所以:

      True and 'a=T' 计算结果是 'a=T'
继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'
    

要解释上述结果,又涉及到 and 和 or 运算的一条重要法则: 短路计算

 

1. 在计算  a and b  时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

2. 在计算  a or b  时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

 

  

Python入门 Python变量和数据类型


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论