轉載請注明出處:http://www.lxweimin.com/p/cbca89aff23d
開始學習 Python 前,我是有一定的 Java 基礎的。寫這篇文章的目的一方面是作為學習 Python 的筆記,另一方面對 Java 和 Python 進行對比,便于記憶。
我是跟著廖雪峰的Python教程學習的,所以筆記中有的東西是直接復制過來的。
Python 的特點
龜叔給Python的定位是“優雅”、“明確”、“簡單”,總的來說,Python的哲學就是簡單優雅,盡量寫容易看明白的代碼,盡量寫少的代碼。
那Python適合開發哪些類型的應用呢?
首選是網絡應用,包括網站、后臺服務等等;
其次是許多日常需要的小工具,包括系統管理員需要的腳本任務等等;
另外就是把其他語言開發的程序再包裝起來,方便使用。
Python的缺點
第一個缺點就是運行速度慢,和C程序相比非常慢,因為Python是解釋型語言,代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程序是運行前直接編譯成CPU能執行的機器碼,所以非常快。
第二個缺點就是代碼不能加密。如果要發布你的Python程序,實際上就是發布源代碼,這一點跟C語言不同,C語言不用發布源代碼,只需要把編譯后的機器碼(也就是你在Windows上常見的xxx.exe文件)發布出去。要從機器碼反推出C代碼是不可能的,所以,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把源碼發布出去。
運行Python
python
退出Python
>>> exit()
輸出函數
如果要讓Python打印出指定的文字,可以用print()函數,但與 Java 只能用雙引號不同的是, Python 可以把希望打印的文字用單引號或者雙引號括起來,但不能混用單引號和雙引號。
>>> print("hello, world")
hello, world
>>> print('hello, world')
hello, world
print()函數也可以接受多個字符串,用逗號“,”隔開,print()會依次打印每個字符串,遇到逗號“,”會輸出一個空格,就可以連成一串輸出:
>>> print("My", "name", "is", "XiaoMai")
My name is XiaoMai
其實上面的代碼是下面的略寫:
>>> print("My", "name", "is", "XiaoMai", sep = " ")
sep 的默認值為一個空格,可以給它賦值改變輸出結果:
>>> print("My", "name", "is", "XiaoMai", sep = "")
MynameisXiaoMai
>>> print("My", "name", "is", "XiaoMai", sep = "\n")
My
name
is
Xiao
Mai
輸入
Python提供了一個input()函數,可以讓用戶輸入字符串,并存放到一個變量里。比如輸入用戶的名字:
>>> name = input()
XiaoMai
>>> name
'XiaoMai'
input()函數還可以顯示一個字符串來提示用戶
>>> name = input("please enter your name: ")
please enter your name: Xiao Mai
>>> name
'Xiao Mai'
Python語法
注釋:和 Java 不一樣,Python 是以
#
開頭Python 語法中,每一行都是一個語句(和Java不同的是不用分號結尾)
當語句以冒號
:
結尾時,縮進的語句視為代碼塊。(這里的:
我理解的其實就是Java中的{
和}
)按照約定俗成的管理,應該始終堅持使用 4個空格 的縮進。
-
Python程序是大小寫敏感的
# 這是注釋 a = 100 if a >= 0: print(a) else: print(-1)
數據類型
在Python中,能夠直接處理的數據類型有以下幾種:
- 整數(不是整型):Python可以處理任意大小的整數,當然包括負整數(跟Java不同的是沒有范圍限制)
- 浮點數:也比Java要高級點,沒有大小限制,但是超出一定范圍就直接表示為inf(無限大)
- 字符串:字符串是以單引號
'
或雙引號"
括起來的任意文本(又比Java牛逼了點!) - 布爾值:和 Java 不同的是 Python 中的布爾值為首字母大寫的
True
和Flase
- 空值:又和 Java 不同,Python中用
None
表示空值
Python 對字符串的特殊處理
Python允許用 r''
表示 ''
內部的字符串默認不轉義
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
如果字符串內部有很多換行,用 \n
寫在一行里不好閱讀,為了簡化,Python允許用 '''...'''
的格式表示多行內容
>>> print ('''line1
... line2
... line3''')
line1
line2
line3
上面是在交互式命令行內輸入,注意在輸入多行內容時,提示符由 >>>
變為 ...
,提示你可以接著上一行輸入。如果寫成程序,就是:
print('''line1
line2
line3''')
Python中的運算符
Python中的運算符比Java要更形象
- Java中的
&&
在Python中用and
表示 - Java中的
||
在Python中用or
表示 - Java中的
!
在Python中用not
表示
此外,和Java不同的是,在Python中,if
后面的條件語句也可以省略括號
if (age >= 18):
可以略寫為:
if age >= 18:
Python中的變量
和Java不同的是,Python中的變量不需要聲明數據類型,可以把任意數據類型賦值給變量,同一個變量可以反復賦值,而且可以是不同類型的變量。
a = 1 # 我是整數
print(a)
a = 'a' # 我又變成了字符串
print(a)
a = True # 我又變成了布爾值
print(a)
運行結果:
1
a
True
這種變量本身類型不固定的語言稱之為動態語言,與之對應的是靜態語言。靜態語言在定義變量時必須指定變量類型,如果賦值的時候類型不匹配,就會報錯,例如Java是靜態語言。
Python中的常量
Python中常量的命名規則和Java是一樣的,通常用全部大寫的變量名表示。
但是和Java不同的是,雖然稱它為常量,但Python中的常量其實仍然是一個變量,它的值是可以修改的,而Java就不可以修改了。
Python中的除法
在Python中有兩種除法:/
和 //
-
第一種:
/
的計算結果是浮點數,即使是兩個整數恰好整除,結果也是浮點數:>>> 10 / 3 3.3333333333333335 >>> 9 / 3 3.0
-
第二種:
//
稱為地板除,兩個整數的除法仍然是整數:>>> 10 // 3 3 >>> 10.0 // 3 # 這個我也解釋不了 3.0