免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
從C#到Python

0.0  寫在前面

 

前幾天寫了《從C#到Python —— 談?wù)勎覍W(xué)習(xí)Python一周來的體會(huì)》這篇文章,反響還不錯(cuò),對(duì)我這樣的Freshman是個(gè)很大的鼓舞。應(yīng)博友的提議,從今天開始寫一個(gè)系列的連載文章《從C#到Python》。一方面是整理下我自己學(xué)習(xí)Python的心得體會(huì),留著以后忘記時(shí)備查;另一方面就是希望能對(duì)有一定C#編程基礎(chǔ)、同時(shí)對(duì)Python感興趣的朋友有所幫助。

首先要說明的是,這并不是一個(gè)完備的Python語言教程,因?yàn)檫@樣的教程在網(wǎng)絡(luò)上、書店里已經(jīng)有太多了。本文的主要目的是希望能夠?yàn)镃#使用者提供一個(gè)簡短的Python語言入門,以節(jié)省他們的學(xué)習(xí)時(shí)間。作為一個(gè)C#程序員,你掌握的編程知識(shí)已經(jīng)足夠多了。要知道,Python和C#這兩門語言是非常相像的,它們之間的關(guān)系類似方言與普通話的關(guān)系,而不是英語和漢語的關(guān)系。你只是需要花點(diǎn)時(shí)間了解Python與C#之間的一些微小差別,然后動(dòng)手編幾個(gè)小程序熟悉它。你會(huì)發(fā)現(xiàn),Python比你想象的要更簡單。

此外,寫這個(gè)連載的目的并不是比較兩門語言的高下,更不是鼓動(dòng)任何人完全從C#轉(zhuǎn)向Python。我的想法很簡單:把學(xué)習(xí)Python當(dāng)作一個(gè)興趣,并能在適當(dāng)?shù)臅r(shí)候使用它。

考慮到目前兩門語言各自版本的普及情況,本文將主要結(jié)合C#的2.0版本和Python的2.6版本來進(jìn)行介紹。對(duì)于一些在Python 2.6中已存在的但是在C# 3.0及4.0里才新增的特性,也將會(huì)適當(dāng)提及。

最后,這個(gè)連載將以介紹Python語法為主,初步的章節(jié)安排見文后(歡迎提出意見或建議,我會(huì)適當(dāng)調(diào)整以符合大家的需要)。如果以后有能力及時(shí)間,我會(huì)考慮繼續(xù)寫一些GUI、Web開發(fā)等相關(guān)的內(nèi)容。

OK,下面正式開始。

0.1  安裝和配置Python開發(fā)環(huán)境

在Python的官方網(wǎng)站可以下載到Windows下的安裝包(目前是2.6.4版本),按照提示一路Next下去就可以了。記得安裝完成后將Python所在的目錄(如C:\Python26)加入系統(tǒng)PATH變量。

Python的安裝包自帶了一個(gè)簡單的集成開發(fā)環(huán)境——IDLE,你也可以選一個(gè)自己喜歡的IDE。我個(gè)人推薦PythonWin,它的語法提示功能很不錯(cuò),適合初學(xué)者使用(參見我的另一篇文章《Python IDE的選擇》)

0.2  第一個(gè)程序:Hello, world!

現(xiàn)在你可以打開IDLE或PythonWin,新建一個(gè)py為擴(kuò)展名的Python腳本文件,輸入以下內(nèi)容:

代碼1:第一個(gè)Python程序

1 print "Hello, world!"

 

 

保存并運(yùn)行它,如果輸出 >>> Hello, world! ,說明你已經(jīng)成功編寫了第一個(gè)Python程序,congratulations!

上面的“Hello World”幾乎是學(xué)習(xí)任何一門新語言的必經(jīng)之路,正如提出這個(gè)程序的Simon Cozens所說:“它是編程之神的傳統(tǒng)咒語,可以幫助你更好的學(xué)習(xí)語言”。

為了比較Python和C#在編碼風(fēng)格等方面的差異,下邊給出一個(gè)稍復(fù)雜些的“Hello, world”程序以及它的C#對(duì)照版本。

 

代碼2:唐僧版的Hello, world程序

1 # -*- coding: utf-8 -*-
2  """
3 我的第2個(gè)Python程序
4 僅為和C#作對(duì)比,謝絕效仿:)
5  """
6  import sys
7  def Main():
8 sys.stdout.write("Hello, world!\n")
9  #下面的語句看起來很怪,一會(huì)我們?cè)俳忉屗歉墒裁吹?/span>
10  if __name__ =="__main__":
11 Main()

 

注意,代碼2第1行# -*- coding: utf-8 -*-,是為了讓Python支持中文,這個(gè)是必須的。如果你嫌麻煩,可以在IDE里作一個(gè)只包含這一行代碼的模版文件,以后每次新建Python腳本的時(shí)候自動(dòng)打開這個(gè)模版,這樣會(huì)比較省事。

代碼3:C#的對(duì)照版本

1 /*
2 我的第1001個(gè)C#程序
3 可能還不到,沒寫過這么多
4  */
5  using System;
6  class Program{
7 static void Main(){
8 if (1==1) //干什么?要搞SQL注入?。?/span>
9   Console.WriteLine("Hello, world!");
10 }
11 }

 

 

0.3  認(rèn)識(shí)二者最基本的差異

0.3.1  差異之一:編碼風(fēng)格

比較代碼2、3,可以很容易看出兩種語言在編碼風(fēng)格上的差異,下面分別來說。

(1)代碼塊與縮進(jìn)

C#使用C/C++風(fēng)格的編碼形式,除了要求用{}組織代碼塊外,語句間的縮進(jìn)可以是任意的。

Python強(qiáng)制所有程序都有相同的編碼風(fēng)格,它通過縮進(jìn)來組織代碼塊。縮進(jìn)相同的語句被認(rèn)為是處于同一個(gè)代碼塊中,在if/else等語句及函數(shù)定義式末尾會(huì)有一個(gè)冒號(hào),指示代碼塊的開始。Python這種強(qiáng)制縮進(jìn)的做法可以省去{}或者begin/end等,使程序的結(jié)構(gòu)更為清晰(有的人認(rèn)為恰好相反),同時(shí)也減少了無效的代碼行數(shù)。

此外需要注意,盡量使用4個(gè)空格作為Python代碼的一個(gè)縮進(jìn)單位,最好不使用Tab,更不要混用Tab和空格,這也算是Python的一個(gè)非強(qiáng)制性約定吧。

(2)語句結(jié)尾

C#語句用分號(hào)結(jié)尾,Python不用任何符號(hào)(類似BASIC)。

實(shí)際上Python也可以使用分號(hào)結(jié)尾,像這樣 a = 1 ; b =2 ; c = 3 ; print a,b,c ,不過Python中這種風(fēng)格多用于調(diào)試,應(yīng)為你可以很容易注釋掉這一行就刪除了所有調(diào)試代碼。

另外,當(dāng)一行很長時(shí),Python可以用 \ 符號(hào)折行顯示代碼。

(3)注釋方法

C#用//進(jìn)行單行注釋,用/* */進(jìn)行多行注釋;而Python用#符號(hào)進(jìn)行單行注釋,用三引號(hào)(可單可雙)進(jìn)行多行注釋。

(4)條件表達(dá)式

C#的條件表達(dá)式必須要加括號(hào),見代碼3第8行;而Python的條件表達(dá)式加不加括號(hào)均可(Python程序員一般不加,C/C++/C#程序員一般會(huì)加:)

0.3.2  差異之二:入口方法

C#語言必須要有入口方法Main(),這是程序開始執(zhí)行的地方。

Python語言中沒有入口方法(函數(shù)),作為解釋型的語言,Python代碼會(huì)自動(dòng)從頭執(zhí)行(所以在代碼2中除了第8行,其它行均屬于廢話)。

如過你對(duì)這點(diǎn)不習(xí)慣,可以使用Python代碼的內(nèi)置屬性__name__。__name__屬性會(huì)根據(jù)Python代碼的運(yùn)行條件變化:當(dāng)Python代碼以單個(gè)文件運(yùn)行時(shí),__name__便等于"__main__",當(dāng)你以模塊形式導(dǎo)入使用Python代碼時(shí),__name__屬性便是這個(gè)模塊的名字。

當(dāng)然,Python中的__name__屬性并不是為了照顧C(jī)/C++/C#程序員的編程習(xí)慣而準(zhǔn)備的,它主要目的是用于模塊測試。想象一下在C#中編寫一個(gè)組件或類代碼時(shí),一般還得同時(shí)編寫一個(gè)調(diào)用程序來測試它。而Python中可以把二者合二為一,這就是__name__屬性的真正作用。

0.3.3  差異之三:import和using

在Python寫的代碼2中,我們首先import sys,這是導(dǎo)入了Python的sys模塊,然后在代碼里我們可以引用sys模塊中的對(duì)象stdout及它的write方法。在Python中這是必須的,否則你無法調(diào)用sys模塊中的任何東西。

在C#寫的代碼3中,我們首先using System,這是引入System命名空間,using表明該程序正在使用給定命名空間下的名稱(如Console)。對(duì)C#這是可選的,如果不事先using System,你可以在代碼中使用全限定名,如System.Console.WriteLine。

簡單的說,Python中的import相當(dāng)于C#中的程序集引用。一個(gè)程序集可能包括一個(gè)或多個(gè)命名空間,C#中的using是用來引入命名空間的。Python如果想實(shí)現(xiàn)和using類似的功能,就需要用到from import語句。例如對(duì)于代碼2,可以將import sys改寫為from sys import *,這樣在程序中就可以直接使用stdout.write了。

最后,import可以出現(xiàn)在代碼的任何位置,只要在引用它之前出現(xiàn)就可以。不過為了提高程序可讀性,建議還是在所有代碼開頭書寫import。

 

0.4  小結(jié)

作為Python語言的入門,本章沒有涉及到過多的編程細(xì)節(jié),主要比較了C#與Python兩種語言在編碼風(fēng)格等方面最基本的差別,要點(diǎn)如下:

(1)Python使用強(qiáng)制縮進(jìn)的編碼風(fēng)格,并以此組織代碼塊;
(2)Python語句結(jié)尾不用分號(hào);
(3)Python標(biāo)明注釋用#(單行)或三引號(hào)(多行);
(4)Python語言沒有入口方法(Main),代碼會(huì)從頭到尾順序執(zhí)行;
(5)Python語言用import引入所需要的模塊(關(guān)于模塊和包的具體內(nèi)容將在第6部分介紹,見文末目錄)

以上這幾點(diǎn)是C#程序員初學(xué)Python時(shí)最易犯錯(cuò)誤的地方,希望引起大家注意。好了,今天就先到這里。

 

進(jìn)一步閱讀的參考:
[1]《Python語言簡介-Python是什么?》,一個(gè)寫得比較有趣的Python介紹。
[2]《python 創(chuàng)始人訪談錄2: python 的起源,特點(diǎn)和未來 》,我們可以從中了解到Python為什么會(huì)有這種編碼風(fēng)格。
[3]《我的名字叫Python》,一個(gè)面向C++程序員的Python使用手冊(cè)。如果你是C/C++程序員,我向你推薦這本書。

 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python的代碼規(guī)范,超長特別全 看看沒有注意的地方,少挨一頓罵
Python編程規(guī)范修煉-PEP8規(guī)范解讀
真香,理解記憶法學(xué)習(xí)Python基礎(chǔ)語法
pygame的安裝與使用
Python設(shè)置默認(rèn)語言編碼
Java 編程規(guī)范
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服