5

写给.NET开发者的Python教程(二):基本类型和变量

 3 years ago
source link: https://www.cnblogs.com/mantgh/p/13341918.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

从本文开始,我们就要正式了解Python的语法特性了,这章主要介绍基本类型和变量,开始之前先介绍下Python中的标准输入输出。

标准输入输出


前文举过TwoSum问题的例子,但是没有讲到标准输入输出的处理,因为那部分leetcode平台帮我们处理了。但实际上标准输入输出是非常重要的,是我们编写任何代码都必须先了解的语法,这里以C#做对比,介绍Python的标注输入方法input和标准输出方法print。

599309-20200719215431009-1400981474.png

 input方法在Python中的作用和Console.ReadLine一致,可以从电脑获得用户的输入数据,称之为标准输入。在Python 2中标注输入分为input和raw_input两个方法,其中input只能接受明确格式的输入,要么输入字符串要么数字,混合在一起会报错。这一点在Python 3中得到了改进,统一合并为input方法。因此从功能上,input和C#的标准输入功能一致,都允许用户输入任何内容,并以字符串的形式读取。

599309-20200719222227568-129452613.png

print方法作为Python的标准输出方法,可以将任何对象输出为字符串。但这里值得注意的是,Python并不支持字符串和不同值类型的直接相加,这会导致异常抛出。而C#支持此特性,如下:

599309-20200719223332741-643039770.png
599309-20200719223008737-1122491553.png

因此在Python中需要将其他类型先转换为字符串才可以直接字符串变量相加,如下:

599309-20200719223215832-2104848550.png

基本类型是数据操作的起步,前面的内容已经出现过字符串和数值之类的操作。Python的基本类型主要分为整形(int),浮点数(float),复数(complex),字符串(string)和布尔值(bool).

  • 整形(int)

  Python的整形几乎没有长度限制,可以输入任意大小的数值。这取决于系统内存的限制,基本想要多大值就可以多大。这点和C#极为不一样,C#中即使是long,它的取值范围也都是有限的,最大也就是2^63 - 1。

599309-20200719225949918-475715557.png
599309-20200719230255544-148997636.png

  此外,对于其他进制的数值表现形式Python也是不一样的,主要区别在于不同进制数值的前缀,如下:

599309-20200719231054347-1288824639.png

 

599309-20200719231328827-2092121776.png
  • 浮点数(float)

  Python中浮点数没有float和double之分,全部都是双精度浮点数,统一使用float表示。同时也支持使用科学计数法表示,如下:

599309-20200719232003155-1347879412.png

  虽然Python对float的取值范围没有明确限制,但是大多数平台上会被实现为双精度64位浮点数,大部分情况下最大值大约为1.8 ⨉ 10^308,超过这个值就会被显示为inf.

599309-20200719233806550-1097342386.png
  • 复数(complex)

  复数是由一个实数和一个虚数组合构成,表示为:real+imagj,其中 real 是实数部分,imag是虚数部分。然而C#中没有复数的概念,只能自己封装构造。

599309-20200719235121238-791278226.png

  老实讲,复数这块目前我还没实际使用到,对于其作用并没有太多的认知。

  • 字符串(string)

  字符串在Python中被表示为str,可以用单引号或者双引号包括一段内容来表示。大部分情况下单引号和双引号是没有去别的,但是当他们混用时,包括在字符串内的单引号或者双引号只会被当成普通符号。

599309-20200719235813682-994783558.png

  转义符同样是受支持的,包括\",\n和\t之类的常用转义,甚至还包括\u表示任意Unicode字符。

  

599309-20200720000815579-1616559184.png

   关于字符串的格式化,Python中的str.format('{0}',arg)和从 3.7开始支持的'{0}'.format(arg)语法和C#中的string.Format("{0}",arg)的写法非常像。

599309-20200720001719732-2137556926.png
599309-20200720001551277-1388579714.png
  • 布尔值(bool)

   布尔值对于Python而言,和C#基本一致,只是Python中首字母大写而已,分别是True和False。对应的整形数字也都为1和0。

599309-20200720002105891-427171355.png

此外还要提一下空值,在Python中表示为None,而在C#中为null。使用起来没有太大区别

关于类型转换,在Python中整形、浮点数、复数、字符串和布尔值分别对应的方法为int(),float(),complex(),str(),和bool(),他们默认都支持了从其他类型强制转换的操作,如下:

599309-20200720004929232-1637869193.png

 但是对于C#而言,默认进行强制转换时,是不可以直接从字符串转换为对应值的,必须使用例如int.Parse()等方法显式转换才行。

599309-20200720005153498-1301037532.png

 变量可以是任意的数据类型,在代码中使用一个变量名表示。变量名必须是大小写英文、数字和下划线(_)的组合,且不能由数字开头。虽然中文汉字也支持,但是一般不用中文作为变量名。这一点对Python和C#都适用,最大的不同在Python声明变量不需要指定变量类型,直接赋值就可以了。

599309-20200720003202072-74380788.png
599309-20200720003426109-833453919.png

Python解释器在赋值的时候,会干两件事情(以a='ABC‘举例):

  1. 在内存里创建变量内容,这里是字符串'ABC’
  2. 在创建一个名为a的变量,并将它指向‘ABC'的地址

这点和C#中的引用类型分配内存是类似的,变量会指向引用内容。


关于Python的基础类型就介绍到这里,实际上使用基础类型时还会牵扯到一些内置的函数,比如abs,max,min,hex,oct,chr等。这些方便我们类型转换或者运算的内置方法推荐大家有空扫一下。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK