轉(zhuǎn)載請(qǐng)注明出處:http://www.reibang.com/p/cbca89aff23d
開始學(xué)習(xí) Python 前图焰,我是有一定的 Java 基礎(chǔ)的。寫這篇文章的目的一方面是作為學(xué)習(xí) Python 的筆記,另一方面對(duì) Java 和 Python 進(jìn)行對(duì)比肘交,便于記憶仔涩。
我是跟著廖雪峰的Python教程學(xué)習(xí)的,所以筆記中有的東西是直接復(fù)制過來的穆桂。
Python 的特點(diǎn)
龜叔給Python的定位是“優(yōu)雅”、“明確”融虽、“簡(jiǎn)單”享完,總的來說,Python的哲學(xué)就是簡(jiǎn)單優(yōu)雅有额,盡量寫容易看明白的代碼般又,盡量寫少的代碼。
那Python適合開發(fā)哪些類型的應(yīng)用呢巍佑?
首選是網(wǎng)絡(luò)應(yīng)用茴迁,包括網(wǎng)站、后臺(tái)服務(wù)等等萤衰;
其次是許多日常需要的小工具堕义,包括系統(tǒng)管理員需要的腳本任務(wù)等等;
另外就是把其他語言開發(fā)的程序再包裝起來脆栋,方便使用倦卖。
Python的缺點(diǎn)
第一個(gè)缺點(diǎn)就是運(yùn)行速度慢洒擦,和C程序相比非常慢,因?yàn)镻ython是解釋型語言糖耸,代碼在執(zhí)行時(shí)會(huì)一行一行地翻譯成CPU能理解的機(jī)器碼秘遏,這個(gè)翻譯過程非常耗時(shí),所以很慢嘉竟。而C程序是運(yùn)行前直接編譯成CPU能執(zhí)行的機(jī)器碼邦危,所以非常快舍扰。
第二個(gè)缺點(diǎn)就是代碼不能加密倦蚪。如果要發(fā)布你的Python程序,實(shí)際上就是發(fā)布源代碼边苹,這一點(diǎn)跟C語言不同陵且,C語言不用發(fā)布源代碼,只需要把編譯后的機(jī)器碼(也就是你在Windows上常見的xxx.exe文件)發(fā)布出去个束。要從機(jī)器碼反推出C代碼是不可能的慕购,所以,凡是編譯型的語言茬底,都沒有這個(gè)問題沪悲,而解釋型的語言,則必須把源碼發(fā)布出去阱表。
運(yùn)行Python
python
退出Python
>>> exit()
輸出函數(shù)
如果要讓Python打印出指定的文字殿如,可以用print()函數(shù),但與 Java 只能用雙引號(hào)不同的是最爬, Python 可以把希望打印的文字用單引號(hào)或者雙引號(hào)括起來涉馁,但不能混用單引號(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è)字符串來提示用戶
>>> name = input("please enter your name: ")
please enter your name: Xiao Mai
>>> name
'Xiao Mai'
Python語法
注釋:和 Java 不一樣,Python 是以
#
開頭Python 語法中蒲讯,每一行都是一個(gè)語句(和Java不同的是不用分號(hào)結(jié)尾)
當(dāng)語句以冒號(hào)
:
結(jié)尾時(shí)忘朝,縮進(jìn)的語句視為代碼塊。(這里的:
我理解的其實(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(無限大)
- 字符串:字符串是以單引號(hào)
'
或雙引號(hào)"
括起來的任意文本(又比Java牛逼了點(diǎn)!) - 布爾值:和 Java 不同的是 Python 中的布爾值為首字母大寫的
True
和Flase
- 空值:又和 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
后面的條件語句也可以省略括號(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
這種變量本身類型不固定的語言稱之為動(dòng)態(tài)語言忙芒,與之對(duì)應(yīng)的是靜態(tài)語言示弓。靜態(tài)語言在定義變量時(shí)必須指定變量類型,如果賦值的時(shí)候類型不匹配呵萨,就會(huì)報(bào)錯(cuò)奏属,例如Java是靜態(tài)語言。
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