设为首页 收藏本站
查看: 1209|回复: 0

[经验分享] 从C#到Python —— 0 前言:进入Python的世界

[复制链接]

尚未签到

发表于 2015-4-19 06:29:09 | 显示全部楼层 |阅读模式
0.0  写在前面

  
  前几天写了《从C#到Python —— 谈谈我学习Python一周来的体会》这篇文章,反响还不错,对我这样的Freshman是个很大的鼓舞。应博友的提议,从今天开始写一个系列的连载文章《从C#到Python》。一方面是整理下我自己学习Python的心得体会,留着以后忘记时备查;另一方面就是希望能对有一定C#编程基础、同时对Python感兴趣的朋友有所帮助。
  首先要说明的是,这并不是一个完备的Python语言教程,因为这样的教程在网络上、书店里已经有太多了。本文的主要目的是希望能够为C#使用者提供一个简短的Python语言入门,以节省他们的学习时间。作为一个C#程序员,你掌握的编程知识已经足够多了。要知道,Python和C#这两门语言是非常相像的,它们之间的关系类似方言与普通话的关系,而不是英语和汉语的关系。你只是需要花点时间了解Python与C#之间的一些微小差别,然后动手编几个小程序熟悉它。你会发现,Python比你想象的要更简单。
  此外,写这个连载的目的并不是比较两门语言的高下,更不是鼓动任何人完全从C#转向Python。我的想法很简单:把学习Python当作一个兴趣,并能在适当的时候使用它。
  考虑到目前两门语言各自版本的普及情况,本文将主要结合C#的2.0版本和Python的2.6版本来进行介绍。对于一些在Python 2.6中已存在的但是在C# 3.0及4.0里才新增的特性,也将会适当提及。
  最后,这个连载将以介绍Python语法为主,初步的章节安排见文后(欢迎提出意见或建议,我会适当调整以符合大家的需要)。如果以后有能力及时间,我会考虑继续写一些GUI、Web开发等相关的内容。
  OK,下面正式开始。

0.1  安装和配置Python开发环境
  在Python的官方网站可以下载到Windows下的安装包(目前是2.6.4版本),按照提示一路Next下去就可以了。记得安装完成后将Python所在的目录(如C:\Python26)加入系统PATH变量。
  Python的安装包自带了一个简单的集成开发环境——IDLE,你也可以选一个自己喜欢的IDE。我个人推荐PythonWin,它的语法提示功能很不错,适合初学者使用(参见我的另一篇文章《Python IDE的选择》)

0.2  第一个程序:Hello, world!
  现在你可以打开IDLE或PythonWin,新建一个py为扩展名的Python脚本文件,输入以下内容:
  代码1:第一个Python程序




1 print "Hello, world!"
  
  
  保存并运行它,如果输出 >>> Hello, world! ,说明你已经成功编写了第一个Python程序,congratulations!
  上面的“Hello World”几乎是学习任何一门新语言的必经之路,正如提出这个程序的Simon Cozens所说:“它是编程之神的传统咒语,可以帮助你更好的学习语言”。
  为了比较Python和C#在编码风格等方面的差异,下边给出一个稍复杂些的“Hello, world”程序以及它的C#对照版本。
  
  代码2:唐僧版的Hello, world程序




1 # -*- coding: utf-8 -*-
2  """
3 我的第2个Python程序
4 仅为和C#作对比,谢绝效仿:)
5  """
6  import sys
7  def Main():
8     sys.stdout.write("Hello, world!\n")
9  #下面的语句看起来很怪,一会我们再解释它是干什么滴
10  if __name__ =="__main__":
11     Main()
  
  注意,代码2第1行# -*- coding: utf-8 -*-,是为了让Python支持中文,这个是必须的。如果你嫌麻烦,可以在IDE里作一个只包含这一行代码的模版文件,以后每次新建Python脚本的时候自动打开这个模版,这样会比较省事。
  代码3:C#的对照版本




1 /*
2  我的第1001个C#程序
3  可能还不到,没写过这么多
4  */
5  using System;
6  class Program{
7     static void Main(){
8     if (1==1) //干什么?要搞SQL注入啊?
9             Console.WriteLine("Hello, world!");
10     }
11 }
  
  

0.3  认识二者最基本的差异

0.3.1  差异之一:编码风格
  比较代码2、3,可以很容易看出两种语言在编码风格上的差异,下面分别来说。
  (1)代码块与缩进
  C#使用C/C++风格的编码形式,除了要求用{}组织代码块外,语句间的缩进可以是任意的。
  Python强制所有程序都有相同的编码风格,它通过缩进来组织代码块。缩进相同的语句被认为是处于同一个代码块中,在if/else等语句及函数定义式末尾会有一个冒号,指示代码块的开始。Python这种强制缩进的做法可以省去{}或者begin/end等,使程序的结构更为清晰(有的人认为恰好相反),同时也减少了无效的代码行数。
  此外需要注意,尽量使用4个空格作为Python代码的一个缩进单位,最好不使用Tab,更不要混用Tab和空格,这也算是Python的一个非强制性约定吧。
  (2)语句结尾
  C#语句用分号结尾,Python不用任何符号(类似BASIC)。
  实际上Python也可以使用分号结尾,像这样 a = 1 ; b =2 ; c = 3 ; print a,b,c ,不过Python中这种风格多用于调试,应为你可以很容易注释掉这一行就删除了所有调试代码。
  另外,当一行很长时,Python可以用 \ 符号折行显示代码。
  (3)注释方法
  C#用//进行单行注释,用/* */进行多行注释;而Python用#符号进行单行注释,用三引号(可单可双)进行多行注释。
  (4)条件表达式
  C#的条件表达式必须要加括号,见代码3第8行;而Python的条件表达式加不加括号均可(Python程序员一般不加,C/C++/C#程序员一般会加:)

0.3.2  差异之二:入口方法
  C#语言必须要有入口方法Main(),这是程序开始执行的地方。
  Python语言中没有入口方法(函数),作为解释型的语言,Python代码会自动从头执行(所以在代码2中除了第8行,其它行均属于废话)。
  如过你对这点不习惯,可以使用Python代码的内置属性__name__。__name__属性会根据Python代码的运行条件变化:当Python代码以单个文件运行时,__name__便等于"__main__",当你以模块形式导入使用Python代码时,__name__属性便是这个模块的名字。
  当然,Python中的__name__属性并不是为了照顾C/C++/C#程序员的编程习惯而准备的,它主要目的是用于模块测试。想象一下在C#中编写一个组件或类代码时,一般还得同时编写一个调用程序来测试它。而Python中可以把二者合二为一,这就是__name__属性的真正作用。

0.3.3  差异之三:import和using
  在Python写的代码2中,我们首先import sys,这是导入了Python的sys模块,然后在代码里我们可以引用sys模块中的对象stdout及它的write方法。在Python中这是必须的,否则你无法调用sys模块中的任何东西。
  在C#写的代码3中,我们首先using System,这是引入System命名空间,using表明该程序正在使用给定命名空间下的名称(如Console)。对C#这是可选的,如果不事先using System,你可以在代码中使用全限定名,如System.Console.WriteLine。
  简单的说,Python中的import相当于C#中的程序集引用。一个程序集可能包括一个或多个命名空间,C#中的using是用来引入命名空间的。Python如果想实现和using类似的功能,就需要用到from import语句。例如对于代码2,可以将import sys改写为from sys import *,这样在程序中就可以直接使用stdout.write了。
  最后,import可以出现在代码的任何位置,只要在引用它之前出现就可以。不过为了提高程序可读性,建议还是在所有代码开头书写import。
  

0.4  小结
  作为Python语言的入门,本章没有涉及到过多的编程细节,主要比较了C#与Python两种语言在编码风格等方面最基本的差别,要点如下:
  (1)Python使用强制缩进的编码风格,并以此组织代码块;
(2)Python语句结尾不用分号;
(3)Python标明注释用#(单行)或三引号(多行);
(4)Python语言没有入口方法(Main),代码会从头到尾顺序执行;
(5)Python语言用import引入所需要的模块(关于模块和包的具体内容将在第6部分介绍,见文末目录)
  以上这几点是C#程序员初学Python时最易犯错误的地方,希望引起大家注意。好了,今天就先到这里。
  
  进一步阅读的参考:
[1]《Python语言简介-Python是什么?》,一个写得比较有趣的Python介绍。
[2]《python 创始人访谈录2: python 的起源,特点和未来 》,我们可以从中了解到Python为什么会有这种编码风格。
[3]《我的名字叫Python》,一个面向C++程序员的Python使用手册。如果你是C/C++程序员,我向你推荐这本书。
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58486-1-1.html 上篇帖子: Python深入01 特殊方法与多范式 下篇帖子: Python进阶08 异常处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表