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

标准输入输出


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

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

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

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

基本类型


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

  • 整形(int)

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

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

  • 浮点数(float)

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

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

  • 复数(complex)

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

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

  • 字符串(string)

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

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

  

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

  • 布尔值(bool)

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

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

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

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

变量


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

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

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

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

总结


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

写给.NET开发者的Python教程(二):基本类型和变量的更多相关文章

  1. 写给.NET开发者的Python教程(一):引言

    距离上一篇博文已过去8个月了,这段时间发生了很多事情导致没能持续更新博客.这段时间除了工作繁忙,业余时间都投入到AI技术的学习中,后面一段时间将会给大家分享我作为一个.NET开发人员在深度学习领域学习 ...

  2. 写给.NET开发者的Python教程(一):C# vs Python: 语言特性、Conda和Jupyter Notebook环境

    承接上篇,本文会从语言特性.开发环境和必备工具来带领大家进入Python的世界. 语言特性 首先一起看下C#和Python在语言特性层面的对比,他们作为截然不同的两类面向对象高级语言,在语言层面上有何 ...

  3. 写给.NET开发者的Python教程(三):运算符、条件判断和循环语句

    本节会介绍Python中运算符的用法,以及条件判断和循环语句的使用方法. 运算符 运算符包括算术运算符.赋值运算符.比较运算符.逻辑运算符等内容,大部分用法和C#基本一致,下面我们来看一下: 算数运算 ...

  4. 极简python教程02:基础变量,删繁就简

    python极简教程已经开赛,如果错过说明可以回翻: 极简python教程:赛前说明 借这个机会,我再讲讲我的教程和其他网上的教程的区别: 1 我分享的内容,是我在工作中会高频使用的语法,是精华内容 ...

  5. Python基础二字符串和变量

    了解一下Python中的字符串和变量,和Java,c还是有点区别的,别的不多说,上今天学习的代码 Python中没有自增自减这一项,在转义字符那一块,\n,\r\n都是表示回车,但是对于不同的操作系统 ...

  6. 简明python教程二-----对象

    物理行:是你在编写程序时所看见的. 逻辑行:是Python看见的单个语句. 默认的,python希望每行都只使用一个语句,这样使得代码更加易读. 如果你想要在一个物理行中使用多于一个逻辑行,用分号“: ...

  7. PySide——Python图形化界面入门教程(二)

    PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 翻译自:http://py ...

  8. python教程(二)·第一个python程序

    几乎所有的计算机语言教程,不仅仅是python,都以这样一个相似的示例程序开始讲解--Hello World! 代码如下,简简单单的一行.想必稍微了解英语的读者,都能猜到这段代码功能吧. print( ...

  9. C#微信公众号开发系列教程二(新手接入指南)

    http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...

随机推荐

  1. 这一次搞懂Spring Web零xml配置原理以及父子容器关系

    前言 在使用Spring和SpringMVC的老版本进行开发时,我们需要配置很多的xml文件,非常的繁琐,总是让用户自行选择配置也是非常不好的.基于约定大于配置的规定,Spring提供了很多注解帮助我 ...

  2. 关于html属性中onSubmit事件属性的使用

    看到一段onSubmit事件属性的例子,如下: <!DOCTYPE html> <html> <head> <script> function vali ...

  3. GCC编译和链接过程

    GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器.它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分.GCC原本作为GNU操作 ...

  4. Spark中自定义累加器

    通过继承AccumulatorV2可以实现自定义累加器. 官方案例可参考:http://spark.apache.org/docs/latest/rdd-programming-guide.html# ...

  5. "该公众号暂时无法提供服务,请稍后再试"的问题

    倒腾了好久,对微信公众号也不是很熟悉.不知道怎么看问题,php学的也不久. 1.定位问题. 网上找了很久,最后找到两种定位问题的方式. a.https://blog.csdn.net/qq_28506 ...

  6. 如何在项目开发中应用好“Deadline 是第一生产力”?

    我想也许你早就听说过"Deadline是第一生产力"这句话,哪怕以前没听说过,我相信看完本文后,再也不会忘记这句话,甚至时不时还要感慨一句:"Deadline是第一生产力 ...

  7. 一张PDF了解JDK9 GC调优秘籍-附PDF下载

    目录 简介 Oracle中的文档 JDK9中JVM参数的变化 废弃的JVM选项 不推荐(Deprecated)的JVM选项 被删除的JVM参数 JDK9的新特性Application Class Da ...

  8. JavaWeb项目在浏览器点击几次就阻塞了

    问题描述 在学习JavaWeb项目时,通过IDE启动项目后,在浏览器点击几次页面中的链接就阻塞了,浏览器一直转圈圈无法加载,后台日志也没有输出. 第一次遇见这种情况,没有日志完全无法分析到底是什么问题 ...

  9. NOIp ( on line ) 提高组 2020 总结

    T1 : 序列 题意: 一共有T组数据,每组数据有两个长度为n的序列a,b,m个操作,问a序列是否可以转换成b,是输出YES,否的话输出NO. m个操作分别为ti,xi,yi,若t为1,则x和y上的数 ...

  10. CF 938D Buy a Ticket 题解

    题目 Musicians of a popular band "Flayer" have announced that they are going to "make t ...