站在 Java 的肩膀上學(xué) Python (一)

轉(zhuǎn)載請(qǐng)注明出處:http://m.itdecent.cn/p/cbca89aff23d

開始學(xué)習(xí) Python 前,我是有一定的 Java 基礎(chǔ)的。寫這篇文章的目的一方面是作為學(xué)習(xí) Python 的筆記,另一方面對(duì) Java 和 Python 進(jìn)行對(duì)比,便于記憶。
我是跟著廖雪峰的Python教程學(xué)習(xí)的,所以筆記中有的東西是直接復(fù)制過(guò)來(lái)的。

Python 的特點(diǎn)

龜叔給Python的定位是“優(yōu)雅”、“明確”、“簡(jiǎn)單”,總的來(lái)說(shuō),Python的哲學(xué)就是簡(jiǎn)單優(yōu)雅,盡量寫容易看明白的代碼,盡量寫少的代碼。

那Python適合開發(fā)哪些類型的應(yīng)用呢?

首選是網(wǎng)絡(luò)應(yīng)用,包括網(wǎng)站、后臺(tái)服務(wù)等等;

其次是許多日常需要的小工具,包括系統(tǒng)管理員需要的腳本任務(wù)等等;

另外就是把其他語(yǔ)言開發(fā)的程序再包裝起來(lái),方便使用。

Python的缺點(diǎn)

  • 第一個(gè)缺點(diǎn)就是運(yùn)行速度慢,和C程序相比非常慢,因?yàn)镻ython是解釋型語(yǔ)言,代碼在執(zhí)行時(shí)會(huì)一行一行地翻譯成CPU能理解的機(jī)器碼,這個(gè)翻譯過(guò)程非常耗時(shí),所以很慢。而C程序是運(yùn)行前直接編譯成CPU能執(zhí)行的機(jī)器碼,所以非???。

  • 第二個(gè)缺點(diǎn)就是代碼不能加密。如果要發(fā)布你的Python程序,實(shí)際上就是發(fā)布源代碼,這一點(diǎn)跟C語(yǔ)言不同,C語(yǔ)言不用發(fā)布源代碼,只需要把編譯后的機(jī)器碼(也就是你在Windows上常見的xxx.exe文件)發(fā)布出去。要從機(jī)器碼反推出C代碼是不可能的,所以,凡是編譯型的語(yǔ)言,都沒有這個(gè)問(wèn)題,而解釋型的語(yǔ)言,則必須把源碼發(fā)布出去。

運(yùn)行Python

python

退出Python

>>> exit()

輸出函數(shù)

如果要讓Python打印出指定的文字,可以用print()函數(shù),但與 Java 只能用雙引號(hào)不同的是, Python 可以把希望打印的文字用單引號(hào)或者雙引號(hào)括起來(lái),但不能混用單引號(hào)和雙引號(hào)。

>>> print("hello, world")
hello, world
>>> print('hello, world')
hello, world

print()函數(shù)也可以接受多個(gè)字符串,用逗號(hào)“,”隔開,print()會(huì)依次打印每個(gè)字符串,遇到逗號(hào)“,”會(huì)輸出一個(gè)空格,就可以連成一串輸出:

>>> print("My", "name", "is", "XiaoMai")
My name is XiaoMai

其實(shí)上面的代碼是下面的略寫:

>>> print("My", "name", "is", "XiaoMai", sep = " ")

sep 的默認(rèn)值為一個(gè)空格,可以給它賦值改變輸出結(jié)果:

>>> print("My", "name", "is", "XiaoMai", sep = "")
MynameisXiaoMai
>>> print("My", "name", "is", "XiaoMai", sep = "\n")
My
name
is
Xiao
Mai

輸入

Python提供了一個(gè)input()函數(shù),可以讓用戶輸入字符串,并存放到一個(gè)變量里。比如輸入用戶的名字:

>>> name = input()
XiaoMai
>>> name
'XiaoMai'

input()函數(shù)還可以顯示一個(gè)字符串來(lái)提示用戶

>>> name = input("please enter your name: ")
please enter your name: Xiao Mai
>>> name
'Xiao Mai'

Python語(yǔ)法

  • 注釋:和 Java 不一樣,Python 是以 # 開頭

  • Python 語(yǔ)法中,每一行都是一個(gè)語(yǔ)句(和Java不同的是不用分號(hào)結(jié)尾)

  • 當(dāng)語(yǔ)句以冒號(hào) : 結(jié)尾時(shí),縮進(jìn)的語(yǔ)句視為代碼塊。(這里的 : 我理解的其實(shí)就是Java中的 {})

  • 按照約定俗成的管理,應(yīng)該始終堅(jiān)持使用 4個(gè)空格 的縮進(jìn)。

  • Python程序是大小寫敏感的

      # 這是注釋
      a = 100
      if a >= 0:
          print(a)
      else:
          print(-1)
    

數(shù)據(jù)類型

在Python中,能夠直接處理的數(shù)據(jù)類型有以下幾種:

  • 整數(shù)(不是整型):Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù)(跟Java不同的是沒有范圍限制)
  • 浮點(diǎn)數(shù):也比Java要高級(jí)點(diǎn),沒有大小限制,但是超出一定范圍就直接表示為inf(無(wú)限大)
  • 字符串:字符串是以單引號(hào)'或雙引號(hào)"括起來(lái)的任意文本(又比Java牛逼了點(diǎn)!)
  • 布爾值:和 Java 不同的是 Python 中的布爾值為首字母大寫的 TrueFlase
  • 空值:又和 Java 不同,Python中用 None 表示空值

Python 對(duì)字符串的特殊處理

Python允許用 r'' 表示 '' 內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義

>>> print('\\\t\\')
\   \           
>>> print(r'\\\t\\')
\\\t\\

如果字符串內(nèi)部有很多換行,用 \n 寫在一行里不好閱讀,為了簡(jiǎn)化,Python允許用 '''...''' 的格式表示多行內(nèi)容

>>> print ('''line1
... line2
... line3''')
line1
line2
line3

上面是在交互式命令行內(nèi)輸入,注意在輸入多行內(nèi)容時(shí),提示符由 >>> 變?yōu)?... ,提示你可以接著上一行輸入。如果寫成程序,就是:

print('''line1
line2
line3''')

Python中的運(yùn)算符

Python中的運(yùn)算符比Java要更形象

  • Java中的 && 在Python中用 and 表示
  • Java中的 || 在Python中用 or 表示
  • Java中的 在Python中用 not 表示

此外,和Java不同的是,在Python中,if 后面的條件語(yǔ)句也可以省略括號(hào)

if (age >= 18):

可以略寫為:

if age >= 18:

Python中的變量

和Java不同的是,Python中的變量不需要聲明數(shù)據(jù)類型,可以把任意數(shù)據(jù)類型賦值給變量,同一個(gè)變量可以反復(fù)賦值,而且可以是不同類型的變量。

a = 1 # 我是整數(shù)
print(a)
a = 'a' # 我又變成了字符串
print(a)
a = True # 我又變成了布爾值
print(a)

運(yùn)行結(jié)果:

1
a
True

這種變量本身類型不固定的語(yǔ)言稱之為動(dòng)態(tài)語(yǔ)言,與之對(duì)應(yīng)的是靜態(tài)語(yǔ)言。靜態(tài)語(yǔ)言在定義變量時(shí)必須指定變量類型,如果賦值的時(shí)候類型不匹配,就會(huì)報(bào)錯(cuò),例如Java是靜態(tài)語(yǔ)言。

Python中的常量

Python中常量的命名規(guī)則和Java是一樣的,通常用全部大寫的變量名表示。
但是和Java不同的是,雖然稱它為常量,但Python中的常量其實(shí)仍然是一個(gè)變量,它的值是可以修改的,而Java就不可以修改了。

Python中的除法

在Python中有兩種除法:///

  • 第一種:/ 的計(jì)算結(jié)果是浮點(diǎn)數(shù),即使是兩個(gè)整數(shù)恰好整除,結(jié)果也是浮點(diǎn)數(shù):

      >>> 10 / 3
      3.3333333333333335
      >>> 9 / 3
      3.0
    
  • 第二種://稱為地板除,兩個(gè)整數(shù)的除法仍然是整數(shù):

      >>> 10 // 3
      3
      >>> 10.0 // 3 # 這個(gè)我也解釋不了
      3.0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,828評(píng)論 1 118
  • 又到年終,今年春節(jié)提前,工作時(shí)間被迫壓縮,但是項(xiàng)目比往月要多得多,元旦3天假,我加班2天。 加班這個(gè)話題在我家一直...
    mimi播報(bào)閱讀 349評(píng)論 6 6
  • 昨天(2017年3月21日),這位莫大姐,49歲左右,因?yàn)樽罱_診為肝血管瘤住院,3月20日,她訴自己有左側(cè)嚴(yán)重頸...
    ZHICHENGWUXI閱讀 819評(píng)論 0 1
  • 不,你不能停下來(lái),你必須承受這些來(lái)的及來(lái)不及的情緒。 ——致生活 ...
    糖多米閱讀 406評(píng)論 0 2

友情鏈接更多精彩內(nèi)容