零基础学Python:一文看懂数字和字符串

开发 后端
Python有几种内置的数据类型——数字、字符串、元组、列表和字典。本文将重点介绍数字和字符串。

 

01 数字

Python3的数字类型分为整型、浮点型、布尔型、分数类型、复数类型。使用Python编写程序时,不需要声明变量的类型。由Python内置的基本数据类型来管理变量,在程序的后台实现数值与类型的关联,以及类型转换等操作。

Python与其他高级语言定义变量的方式及内部原理有很大的不同。在C或Java中,定义一个整型的变量,可以采用如下方式表示:

  1. int i = 1

在Python中,定义整型变量的表达方式更简练。

  1. i = 1 

Python根据变量的值自动判断变量的类型,程序员不需要关心变量究竟是什么类型,只要知道创建的变量中存放了一个数,以后的工作只是对这个数值进行操作,Python会对这个数的生命周期负责。

更重要的一点是,C或Java只是创建了一个int型的普通变量;而Python创建的是一个整型对象,并且Python自动完成了整型对象的创建工作,不再需要通过构造函数创建。Python内部没有普通类型,任何类型都是对象。如果C或Java需要修改变量i的值,只要重新赋值即可;而Python并不能修改对象i的值。例如: 

  1. 1#下面的两个i并不是同一个对象  
  2. 2i = 1  
  3. 3print(id(i)) 
  4. 4i = 2  
  5. 5print (id(i)) 

如果需要查看变量的类型,可以使用Python定义的type类。type是__builtin__模块的一个类,该类能返回变量的类型或创建一个新的类型。__builtin__模块是Python的内联模块,内联模块不需要import语句,由Python解释器自动导入。后面还会接触到更多内联模块的类和函数。

下面这段代码返回了各种变量的类型。 

  1.  1#整型  
  2.  2i = 1  
  3.  3print( type(i))  
  4.  4#长整型  
  5.  5l = 999999999999999999990       # Python何时将int转为float跟操作系统位数相关  
  6.  6print type(l)  
  7.  7#浮点型  
  8.  8f = 1.2  
  9.  9 print( type(f))  
  10. 10#布尔型  
  11. 11b = True  
  12. 12print (type(b)) 

【代码说明】

  •  第3行代码输出结果:<class'int'>
  •  第6行代码输出结果:<class'int'>
  •  第9行代码输出结果:<class'float'>
  •  第12行代码输出结果:<class'bool'>

用Python来进行科学计算也很方便,因为Python内置了复数类型。Java、C#等高级语言则没有提供复数类型。 

  1. 1#复数类型  
  2. 2c = 7 + 8j  
  3. 3print (type(c)) 

第3行代码输出结果:<class'complex'>

注意:复数类型的写法与数学中的写法相同,如果写为c=7+8i,Python不能识别其中的“i”,将提示语法错误。

02 字符串

在Python中有3种表示字符串的方式——单引号、双引号、三引号。单引号和双引号的作用是一样的,对于不同的程序员可以根据自己的习惯使用单引号或双引号。PHP程序员可能更习惯使用单引号表示字符串,C、Java程序员则习惯使用双引号表示字符串。下面这段代码中单引号和双引号的使用是等价的。 

  1. 1# 单引号和双引号的使用是等价的  
  2. 2str = "hello world!"                    # 定义字符串变量str并赋值  
  3. 3print (str)  
  4. 4str = 'hello world!'  
  5. 5print (str) 

【代码说明】

第3行代码输出结果:

  1. hello world! 

第5行代码输出结果: 

  1. hello world! 

三引号的用法是Python特别的语法,三引号中可以输入单引号、双引号或换行等字符。 

  1. 1# 三引号的用法  
  2. 2str = '''he say "hello world!"'''  
  3. 3print( str) 

【代码说明】

第3行代码的三引号中带有双引号,双引号也会被输出。输出结果: 

  1. he say "hello world!" 

三引号的另一种用法是制作文档字符串。Python的每个对象都有一个属性__doc__,这个属性用于描述该对象的作用。 

  1. 1# 三引号制作doc文档  
  2. 2class Hello:  
  3. 3'''hello class'''  
  4. 4def printHello():  
  5. 5'''print hello world'''  
  6. 6print ("hello world!")  
  7. 7print( Hello.__doc__)  
  8. 8print (Hello.printHello.__doc__) 

【代码说明】

  •  第2行代码定义了一个名为Hello的类。
  •  第3行是对Hello类的描述,该字符串将被存放在类的__doc__属性中。
  •  第4行代码定义了一个方法printHello()。
  •  第5行代码描述了printHello(),并把字符串存放在该函数的__doc__属性中。
  •  第6行代码输出结果: 
  1. hello world! 
  •  第7行代码输出Hello的__doc__属性的内容。输出结果: 
  1. hello class 
  •  第8行代码输出printHello()的__doc__属性的内容。输出结果: 
  1. print hello world 

如果要输出含有特殊字符(单引号、双引号等)的字符串,需要使用转义字符。Python中转义字符为“\”,和C、Java中的转义字符相同。转义操作只要在特殊字符的前面加上“\”即可。下面这段代码说明了特殊字符的转义用法。 

  1. 1# 转义字符  
  2. 2str = 'he say:\'hello world!\''  
  3. 3print (str) 

【代码说明】

第2行代码中的单引号是特殊字符,需要在“'”前加上转义字符。第3行代码的输出结果: 

  1. he say:'hello world!' 

使用双引号或三引号可以直接输出含有特殊字符的字符串,不需要使用转义字符。 

  1. 1# 直接输出特殊字符  
  2. 2str = "he say:'hello world!'"  
  3. 3print (str)  
  4. 4str = '''he say:'hello world!' '''  
  5. 5print (str) 

【代码说明】

  •  第2行代码中使用了双引号表示字符串变量str,因此Python能够识别出双引号内部的单引号只是作为输出的字符。
  •  第3行代码的输出结果: 
  1. he say:'hello world!' 
  •  第4行代码使用三引号表示字符串变量str,注意最后一个单引号后面留有一个空格,这个空格是为了让Python识别出三引号留下的。如果不留下这个空格,4个单引号连在一起,Python解释器不能正确识别三引号。提示如下错误: 
  1. SyntaxError: EOL while scanning single-quoted string 
  •  第5行代码的输出结果: 
  1. he say:'hello world!' 

注意:输出的字符串中含有单引号,使用双引号表示字符串即可。相反,输出的字符串中含有双引号时,可使用单引号表示字符串。

关于作者:黄传禄,高级讲师、管理软件开发工程师、数据库库系统工程师、信息系统管理工程师。有10多年的一线教学经验和高端培训经验,出版多部技术专著,获得多个软件著作权。

本文摘编自《零基础学Python》(第2版),经出版方授权发布。 

 

责任编辑:庞桂玉 来源: 大数据DT
相关推荐

2020-11-23 09:46:18

Java方法权限

2018-08-31 14:51:30

人工智能深度学习机器学习

2022-03-29 08:02:01

数字孪生能源程序

2023-07-07 11:36:29

人工智能基础模型

2024-04-23 14:02:48

Python数据类型字符串

2020-03-31 14:40:24

HashMap源码Java

2019-05-22 09:50:42

Python沙箱逃逸网络攻击

2020-11-20 09:36:43

Java对象

2021-01-13 14:55:54

JavaPython开发

2017-07-28 09:11:14

HIVEHBASE区别

2016-08-18 00:21:12

网络爬虫抓取网络

2016-11-25 13:05:18

2021-08-02 06:56:19

TypeScript编程语言编译器

2021-07-05 00:00:55

TomcatNginxApache

2018-02-02 11:17:42

IaaSPaaSSaaS

2022-03-28 15:34:57

数字孪生物联网大数据

2019-07-01 09:22:15

Linux操作系统硬件

2020-11-09 14:09:25

字符串编码开发

2022-01-17 10:22:49

数字经济数字货币货币

2019-07-09 10:14:04

云计算行业科技
点赞
收藏

51CTO技术栈公众号