python(1):第四章

数据类型

数据类型指的就是变量的值的类型,也就是可以为变量赋哪些值;
-在python中数值分为三种:整数,浮点数(小数),复数;
 -在python中所有的整数都是int类型,整数的大小没有限制,可以是一个无限大的整数;例子:100 ** 10表示100的10次幂
       -如果数字长度过大,可以使用下划线作为分隔符;例:123—456—789;
       -十进制数字不可以0开头;
       -其他进制的整数,只要是数字打印时就一定是以十进制的形式显示(输出)的;
       -二进制以0b开头;例:c=0b10  (二进制的10,十进制等于2),print(c)显示的结果为2)
       -八进制以0o开头;
       -十六进制以0x开头;
       -也可以通过运算符来对数字进行运算,可以保证整数运算的精确;
         c=100
         c+3
         print(c)
     最后的结果是100,而不是103,因为c+3是表达式,对程序无影响;若c=c+3,则最后输出的结果为103
     ---浮点数(小数),在python中所有的小数都是float类型;
       -对浮点数进行运算时,可能会得到一个不精确的结果;
    
  ##字符串
       -字符串用来表示一段文本信息,字符串是程序中使用最多的数据类型;
       -在python中字符串必须要用引号(单引号,双引号都可)引起来,但是不要混着用。
         比如s='hello"就是错的,会报错:SyntaxError: EOL while scanning string literal
       -相同的引号间(单引号与单引号之间,双引号与双引号之间)不可以嵌套,但不同的引号间可以嵌套;
         比如s=“子曰:“学而时习之””就是错的,s=‘子曰:“学而时习之”’是对的
  -----长字符串
        -单引号和双引号不能跨行使用;
          比如:s='锄禾日当午,
                  汗滴禾下土.'        
          会报错,如果在第一行末尾加上\就不会报错,但他的格式不会保存,最后的输出为 锄禾日当午,汗滴禾下土.
        -使用三重引号(单引号,双引号都可)来表示一个长字符串:''',"""
        -三重引号可以换行,并会保留字符串中的格式;
         比如:s='''锄禾日当午,
                   汗滴禾下土.'''
         最后的输出为 锄禾日当午,
    		          汗滴禾下土。
  -----转义字符
        -可以使用\作为转义字符,通过转义字符,可以在字符串中使用一些特殊的内容
         比如:s="子曰:\"学而时习之!\""    
         输出为  子曰:"学而时习之!"
        \t:表示制表符;
        \n:表示换行符;
        \\:表示反斜杠\;
        \':表示单引号;
        \":表示双引号;
        \uxxxx(x表示编码):表示Unicode编码;
                比如:s='\u0040',打印出@ 
  
  ##格式化字符串
     -字符串之间可以进行加法运算;
     -如果将两个(多个)字符串进行相加,会自动将两个(多个)字符串拼接为一个;
       例: a='abc'+'哈哈哈'+'de'
           print(a)
           最后输出为 abc哈哈哈de
   如果想输出 m=abc哈哈哈de,则可以print("m="+a)   
           "m="为一个字符串,将它和a连起来
     -上述那种写法在python中并不常用
     -字符串只能和字符串相加,不可以和其他的类型进行加法运算
      例:a=123
         print("m="+a)
         因为"m="是字符串,a是int类型,所以会报错:TypeError:must be str,not int
  
         如果想输出m=abc哈哈哈de 
         - -解法一:拼串的方法
                        a='abc'+'哈哈哈'+'de'
                         print("m="+a)
             如果想输出m=123 :
         - -解法二:利用print函数可以传两个参数的特性
  
     	    print("m=",a)    [此时a只是个参数,并没有与字符串进行拼接]
                        最后的输出为:m= 123(注意m=与123间有个空格)
         - -解法三:print('m=%s'%a)
  
  - ----解法四:--格式化字符串:可以通过在字符串前添加f(大写小写都可)来创建一个格式化字符串;
        --在格式化字符串中可以直接嵌入变量(嵌入变量时需用到{},比如{a}就
           表示a是一个变量,注意使用a时他一定要被赋过值,不然会报错)
                        例:a=123
                           b='你好'
                           c=f'hello {a} {b}'
                           print(c)
                           print(f'a={a}')
                       最后的输出为:hello 123 你好
               	                a=123
  
    ----在创建字符串时,可以在字符串中指定占位符
        -%s 在字符串中表示任意字符;在对占位符进行填充时需用到%(当用到多个占位符时,%后面需加上(),()里面的参数用逗号隔开,按顺序填充)
          例1:b='hello%s'%'中国' (用中国去填充占位符%s)
    			print(b)
          最后的输出为:hello中国
          
          例2:b='hello%s 你好 %s'%('中国','China')
     			print(b)
     		最后的输出为:hello中国 你好 China
  
       -%3s表示填充的字符至少为三个,不够则在左边补空格
          例:m='hello%3s'%'ab'
             n='hello%3s'%abcdef
             print(m)
             print(n)
          最后输出为:hello ab
                   helloabcdef
  
      -%3.5s表示填充的字符最少3个,最多5个(不够左端补空格,多了则舍去)
          例:m='hello %3.5s'%'abcdefgh'
             print(m)
         最后输出为:hello abcde
     -%s可以用整数或小数来填充(其实后面填充的类型不受限制)
          例:m='hello %3s'%123
             n='hello %.1s'%123.456    (不可用%s保留小数)
             print(m)
             print(n)
          最后的输出为:hello 123
                     hello 1   (注意结果并不是保留小数)
  
  -----%f表示保留几(6)位小数,%.2f表示保留2位小数(会自动四舍五入)
             例:m='hello %.2f'%123.456
                print(m)
             最后的输出为:hello 123.46
  
  ------%d是整数占位符(保留整数,舍去小数)
             例:m='hello %d'%123.45
               print(m)
             最后的输出为:hello 123
  
  ##字符串的复制(将字符串和数字相乘)
       -在语言中*表示乘法
       -如果将字符串和数字相乘,则解释器会将字符串重复指定的次数并返回
         例:a='abc'
            a*2
            print(a)
         最后的输出为:abc [因为a*2是一个表达式,对程序无影响,所以a并未被复制]
  
            a='abc'
            a=a*2
            print(a)
            最后的输出为:abcabc
  
  ##布尔值和空值
     ----布尔值(bool)
          -布尔值主要用来做逻辑判断;
          -布尔值一共有两个:True(表示真),False(表示假)    [首字母大写!!!]
             例:a=True	[注意True和False不要打引号,否则表示的是字符串]
                print('a=',a)
             最后的输出为:a= True
          -布尔值实际上也属于整型,True相当于1,False相当于0
             例:print(False+1)      (只有同类型才可相加)
             最后的输出为:1
     ----空值(None)
          -None专门用来表示不存在
             例:b=None
                print(b)
             最后的输出为:None
  
  ##类型检查
      -数据类型:整型
  	  布尔值(实际属于整型)
  	  浮点型(小数)
  	  复数
  	  字符串
  	  空值
      ---通过类型检查,可以检查指定值或指定变量(最终检查的还是变量所代表的值)的类型;
        --使用type()函数来检查值的类型;该函数有返回值,会将检查的结果作为返回值返回,
            可以通过变量来接收函数的返回值;也可以直接print(type(a))
            例1:  a=123    整数
   	            b='123'  字符串
  	 			print('a=',a)
  				print('b=',b)
  		  最后的输出:a=123
  	               b=123
  	c=type(123)
  	m=print('123')
  	最后的输出:<class 'int'>
  		     <class 'str'>
  ```

对象(object)

- Python是一门面向对象的语言
- 一切皆对象!
- 程序运行当中,所有的数据都是存储到内存当中然后再运行的!
- 对象就是内存中专门用来存储指定数据的一块区域
- 对象实际上就是一个容器,专门用来存储数据
- 像我们之前学习的数值、字符串、布尔值、None都是对象
- 参考 图1

对象的结构

- 每个对象中都要保存三种数据
    - id(标识)
        > id用来标识对象的唯一性,每一个对象都有唯一的id
        > 对象的id就相当于人的身份证号一样
        > 可以通过id()函数来查看对象的id (在python的交互模式查看)
        > id是由解析器生成的,在CPython中,id就是对象的内存地址
        > 对象一旦创建,则它的id永远不能再改变

    - type(类型)
        > 类型用来标识当前对象所属的类型
        > 比如:int str float bool 。。。
        > 类型决定了对象有哪些功能
        > 通过type()函数来查看对象的类型
        > Python是一门强类型的语言,对象一旦创建,类型便不能修改


    - value(值)
        > 值就是对象中存储的具体的数据
        > 对于有些对象值是可以改变的
        > 对象分成两大类:可变对象 不可变对象
            可变对象的值可以改变
            不可变对象的值不能改变,之前学习的对象都是不可变对象
    - 参考 图2

练习:尝试自己画一下对象的内存结构。  

变量和对象

- 对象并没有直接存储到变量中,在Python中变量更像是给对象起了一个别名
- 变量中存储的不是对象的值,而是对象的id(内存地址),
  当我们使用变量时,实际上就是在通过对象id在查找对象
- 变量中保存的对象(的id),只有在为变量重新赋值时才会改变
- 变量和变量之间是相互独立的,修改一个变量不会影响另一个变量


- 参考 图3

类型转换

- 所谓的类型转换,将一个类型的对象转换为其他对象
- 类型转换不是改变对象本身的类型(对象一旦创建,它的类型是不可以被改变的),而是
   根据当前对象的值创建一个新对象
-----类型转换的四个函数:int(),float(),str(),bool()
-----int()可以用来将其他对象转换为整型;
       规则:
        1)布尔值:True->1,False->0
         例:     a=True
				 print('a=',a)
				 print('a的类型是',type(a))
            ---> a= True
	 			 a的类型是 <class 'bool'>
下面调用int()来将a的值转换成整型
		a=True
		int(a)
		print('a=',a)
		print('a的类型是',type(a))
   ---->a= True
		a的类型是 <class 'bool'>
           
         我们发现,结果根本没有变化,这是因为我们只是将对象的值True转换成了整数1,
         但是对原来的变量a是没有产生影响的,调用int()时只是将对象的值转换成了指定的
         类型并将其作为返回值返回;
         如果希望修改原来的变量,则需要对变量进行重新赋值,即a=int(a)
         a=True
         a=int(a)
         print('a=',a)
         print('a的类型是',type(a))
	---->a= 1
         a的类型是 <class 'int'>

      2)浮点数:直接取整,省略小数点后面的内容
         例: a=11.6
			 a=int(a)
			 print('a=',a)
			 print('a的类型是',type(a))
        ---->a= 11
			 a的类型是 <class 'int'>

       3)字符串:合法的整数字符串,直接转换成对应的数字;
        如果不是一个合法的整数字符串,则报错:ValueError
         例1:a='123'
             a=int(a)
             print(a)
        ---->123

         例2:a='11.6'
             a=int(a)
             print(a)
       ---->ValueError

        4)对于其他不可转化为整形的对象(比如:None),直接抛出异常:ValueError
-----float()和int()基本一致,不同的是它会将对象转化为浮点数
        规则:
        1)布尔值:True->1.0,False->0.0
        2)字符串:合法的浮点数字符串,直接转换成对应的数字;
	     如果是整数,则在后面加.0;
        3)整数:直接在后面加.0;

-----str()可以将对象转化成字符串

-----bool()可以将对象转换成布尔值,任何对象都可以转换成布尔值
        规则:对于所有表示空性的对象[例:0,None,''(空串)]都会转换成False 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值