Python學(xué)習(xí)之語法學(xué)習(xí)

每個語言都有自己獨特的語法

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

python支持以下幾種基本數(shù)據(jù)類型:整數(shù)靡菇、浮點數(shù)昌讲、字符串国夜、布爾、空值短绸;另外還有類似對象的類型list(數(shù)組)车吹、tuple(元組)、dict(Map)醋闭、set(集合)

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

整數(shù)和浮點數(shù)

>>> a=1
>>> b=1.1

上面窄驹,a是整數(shù),b是浮點數(shù)证逻,整數(shù)與浮點數(shù)計算結(jié)果為浮點數(shù)乐埠。

字符串

嚴(yán)格來說,字符串算是一種對象類型囚企,但和java一樣字符串是一種不可變對象類型丈咐。

和js一樣,字符串是使用單引號或雙引號括起來的任意文本洞拨,字符串之前用“+”號鏈接可以拼接字符串扯罐,如下:

>>> a='我是一個字符串'
>>> b="我也是一個字符串"
>>> c="\n我用了一個換行符號"
>>> a+b+c
'我是一個字符串我也是一個字符串\n我用了一個換行符號'
>>> print(a+b+c)
我是一個字符串我也是一個字符串
我用了一個換行符號

print()用于打印字符串

“…”符號用于代替換行负拟,提高可讀性烦衣。。。

>>> a='''line1
... line2
... line3'''
>>> a
'line1\nline2\nline3'

ord()和chr()函數(shù)

ord函數(shù)用來顯示一個字符的ascii碼花吟,chr函數(shù)用來將ascii碼轉(zhuǎn)為字符秸歧。

>>> ord('e')
101
>>> chr(101)
'e'
>>> ord('ee') #參數(shù)只能是一個字符,否則會拋出如下異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 2 found

使用占位符格式化

python的格式化方法c語言幾乎一樣衅澈,我總是記不住键菱,網(wǎng)上抄一個吧

格式 描述
%% 百分號標(biāo)記
%c 字符及其ASCII碼
%s 字符串
%d 有符號整數(shù)(十進(jìn)制)
%u 無符號整數(shù)(十進(jìn)制)
%o 無符號整數(shù)(八進(jìn)制)
%x 無符號整數(shù)(十六進(jìn)制)
%X 無符號整數(shù)(十六進(jìn)制大寫字符)
%e 浮點數(shù)字(科學(xué)計數(shù)法)
%E 浮點數(shù)字(科學(xué)計數(shù)法,用E代替e)
%f 浮點數(shù)字(用小數(shù)點符號)
%g 浮點數(shù)字(根據(jù)值的大小采用%e或%f)
%G 浮點數(shù)字(類似于%g)
%p 指針(用十六進(jìn)制打印值的內(nèi)存地址)
%n 存儲輸出字符的數(shù)量放進(jìn)參數(shù)列表的下一個變量中
>>> a="我的名字叫%s今布,我今年%d歲了"
>>> print(a % ('john', 31))
我的名字叫john经备,我今年31歲了

bytes

bytes算是一種獨立的數(shù)據(jù)類型,但它與字符串類型一般分不開

encode()函數(shù)可以將字符串轉(zhuǎn)換為對應(yīng)字符集的bytes

>>> a='我是一個字符串'
>>> b=b'我是一個字符串'
  File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.
>>> b=b'hello world'
>>> print(b)
b'hello world'
>>> a.encode('utf-8')
b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'

布爾

True和False部默,注意大小寫

空值

None相當(dāng)于java的null侵蒙,注意大小寫

數(shù)組(list)

python初始一個數(shù)組的方式和js很像

>>> array_1=['aa','bb','cc']
>>> array_2=[11,22,33]
>>> array_3=['aa',11,'cc']
>>> empty_array=[]
>>> len(empty_array)
0

len()函數(shù)可以獲得數(shù)組的長度,和java一樣傅蹂,數(shù)組的下標(biāo)也是從0開始的纷闺,超過下標(biāo)范圍也會報數(shù)組越界

但數(shù)組的下標(biāo)可以是負(fù)數(shù),表示從后往前的順序

>>> array_1[0]
'aa'
>>> array_2[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> array_2[-1]
33
>>> array_2[-2]
22

append()份蝴、insert()犁功、pop()

append(element)函數(shù)是在數(shù)組?末尾追加元素

insert(index, element)是在指定的位置插入元素

pop(index)是刪除指定位置的元素,如果不指定index婚夫,則刪除末尾的元素

>>> array_1
['aa', 'bb', 'cc']
>>> array_1.append('dd')
>>> array_1
['aa', 'bb', 'cc', 'dd']
>>> array_1.insert(2,'ff')
>>> array_1
['aa', 'bb', 'ff', 'cc', 'dd']
>>> array_1.pop()
'dd'
>>> array_1
['aa', 'bb', 'ff', 'cc']
>>> array_1.pop(1)
'bb'
>>> array_1
['aa', 'ff', 'cc']

元組(tuple)

元組一種初始化后就不能修改的數(shù)組浸卦,初始化時用"("和")"表示

>>> t=(1111,'bbbb',array_1) # 元組的三個元素在初始化時就確定了,但你可以通過修改array_1變量的值來變相地修改元組t的值
>>> print(t)
(1111, 'bbbb', ['aa', 'ff', 'cc'])

字典(dict)

字典類型有些類似與java中的map案糙,是一種key-value的數(shù)據(jù)結(jié)構(gòu)

>>> dict={"aa":33432, "bb": "I'm a string", "cc":"dddd"} # 初始化一個dict變量
>>> dict["aa"] # 如何訪問dict中的值
33432
>>> dict["bb"]
"I'm a string"
>>> dict["dd"] # 如果key不存在镐躲,會拋出異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'dd'
>>> "dd" in dict # 判斷一個key是否存在
False
>>> "aa" in dict
True
>>> print (dict.get("dd")) # 使用get方法,不取不存在的key,返回None
None
>>> print (dict.get("dd", "I got nothing")) # get函數(shù)的第二個參數(shù)表示侍筛,如果返回None則用第二個參數(shù)代替
I got nothing
>>> dict["dd"] = "ddddddd" # 往dict里添加一個值萤皂,如果有相同的key,則覆蓋原來的值
>>> dict.get("dd")
'ddddddd'
>>> dict
{'dd': 'ddddddd', 'cc': 'dddd', 'aa': 33432, 'bb': "I'm a string"}
>>> dict.pop("dd") # pop方法從dict中刪除一個key
'ddddddd'
>>> dict
{'cc': 'dddd', 'aa': 33432, 'bb': "I'm a string"}
>>>

set

set可以認(rèn)為是一個值不能重復(fù)的數(shù)組

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
>>> s2 = set([1,"33",dict]) # set的值里不能放不可HASH的數(shù)據(jù)類型
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> s2 = set([1,"33",3.44])
>>> s2
{1, 3.44, '33'}

變量

命名方式匣椰,只能使用大小寫英裆熙、數(shù)字和"_"組合,不能以數(shù)字開頭

另外禽笑,python是大小寫敏感的語言入录,因此要注意大小寫。

與java不同佳镜,python是?動態(tài)語言僚稿,在聲明一個變量時,不需要指定變量的數(shù)據(jù)類型蟀伸,這一點和js一樣蚀同。

控制流語句

條件判斷

python做條件判斷的關(guān)鍵字是"if"缅刽、"elif"、"else"

if <條件判斷1>:
    <執(zhí)行1>
elif <條件判斷2>:
    <執(zhí)行2>
elif <條件判斷3>:
    <執(zhí)行3>
else:
    <執(zhí)行4>

判斷條件可以直接是一個變量蠢络,只要這個變量是非零數(shù)值衰猛、非空字符串、非空list等刹孔,就判斷為True啡省,否則為False

循環(huán)

循環(huán)有兩種寫法一種是for...in,一種是while

for主要用于遍歷一個數(shù)組之類的結(jié)構(gòu)髓霞,else部分為可選卦睹,在循環(huán)執(zhí)行完成后執(zhí)行

>>> for ele in array_1:
...     print(ele)
... else
...     print("over!")
aa
ff
cc
over!

while則是只要滿足條件,就不斷循環(huán)方库,條件不滿足時退出

>>> n = 0
>>> sum = 0
>>> while n <= 100:
...     sum=sum+n
...     n=n+1
...
>>> print(sum)
5050

break語句用來終止循環(huán)

contine用來路過本次循環(huán)中的剩余部分

代碼縮進(jìn)

代碼縮進(jìn)是難以接受的python一個特性分预,代碼塊不是用{}括起來,而是通過縮進(jìn)薪捍。笼痹。±掖看上面while的例子凳干,第4、5行必須在前面加上一個Tab被济,否則不在循環(huán)體中執(zhí)行救赐。如此簡潔的設(shè)計是為啥?只磷?

運算符

四則運算

最簡單和常用的经磅,需要記牢

運算符 名稱 說明 舉例
+ 兩個對象相加 3 + 5得到8。'a' + 'b'得到'ab'
- 兩個數(shù)相減 -5.2得到一個負(fù)數(shù)钮追。50 - 24得到26
* 兩個數(shù)相乘或是返回一個被重復(fù)若干次的字符串 2 * 3得到6预厌。'la' * 3得到'lalala'
** 返回x的y次冪 3 ** 4得到81(即3 * 3 * 3 * 3)
/ x除以y 4/3得到1(整數(shù)的除法得到整數(shù)結(jié)果)。4.0/3或4/3.0得到1.3333333333333333
// 取整除 返回商的整數(shù)部分 4 // 3.0得到1.0
% 取模 返回除法的余數(shù) 8%3得到2元媚。-25.5%2.25得到1.5

條件運算符

這也都是程序中常用的

運算符 名稱 說明
<轧叽、<= 小于、小于等于 返回x是否小于y刊棕。所有比較運算符返回1表示真炭晒,返回0表示假。這分別與特殊的變量True和False等價甥角。注意网严,這些變量名的大寫。
>嗤无、>= 大于震束、大于 等于 返回x是否大于y
== 等于 比較對象是否相等
!= 不等于 比較兩個對象是否不相等
not怜庸、and、or 布爾“非”驴一、 “與”休雌、 “或” 如果x為True灶壶,not x返回False、如果y為False,x and y返回False茂蚓,x or y 返回 True

位運算

這種不會就算了交汤,會就要精通,否則等于不會

運算符 名稱 說明 舉例
<< 左移 把一個數(shù)的比特向左移一定數(shù)目(每個數(shù)在內(nèi)存中都表示為比特或二進(jìn)制數(shù)字恰响,即0和1) 2 << 2得到8——2按比特表示為10
>> 右移 把一個數(shù)的比特向右移一定數(shù)目 11 >> 1得到5趣钱。——11按比特表示為1011胚宦,向右移動1比特后得到101首有,即十進(jìn)制的5
& 按位與 數(shù)的按位與 5 & 3得到1
豎線 按位或 數(shù)的按位或 5 豎線 3得到7
^ 按位異或 數(shù)的按位異或 5 ^ 3得到6
~ 按位翻轉(zhuǎn) x的按位翻轉(zhuǎn)是-(x+1) ~5得到6

函數(shù)

定義函數(shù)

python 定義一個函數(shù)的語法如下

>>> def 函數(shù)名稱 (參數(shù)列表...) :
>>>     代碼塊

參數(shù)

函數(shù)的參數(shù)列表可以有多個,在定義時可以給參數(shù)添加默認(rèn)值

>>> def func( a, b=100, c='str' ) :
...     print ( "a=[%s], b=[%d], c=%s" % (a, b, c) )
...     return None # return None相當(dāng)于沒有return枢劝,也可以return其它類型

調(diào)用函數(shù)時井联,可以不傳參數(shù),也可以指定參數(shù)

>>> func( "hello" ) # 只傳參數(shù)a您旁,b烙常、c用者是默認(rèn)值
a=[hello], b=[100], c=str
>>> func() # 什么參數(shù)都沒傳,a不能為空
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: func() missing 1 required positional argument: 'a'
>>> func( "hello", c="world" ) # 指定了參數(shù)c鹤盒,這時就無所謂參數(shù)列表的順序了
a=[hello], b=[100], c=world
>>> func( "hello", c="world", b=25 ) # 這個例子也用來說明蚕脏,指定參數(shù)列表調(diào)用方式
a=[hello], b=[25], c=world
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市侦锯,隨后出現(xiàn)的幾起案子驼鞭,更是在濱河造成了極大的恐慌,老刑警劉巖尺碰,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件终议,死亡現(xiàn)場離奇詭異,居然都是意外死亡葱蝗,警方通過查閱死者的電腦和手機(jī)穴张,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來两曼,“玉大人皂甘,你說我怎么就攤上這事〉看眨” “怎么了偿枕?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵璧瞬,是天一觀的道長。 經(jīng)常有香客問我渐夸,道長嗤锉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任墓塌,我火速辦了婚禮瘟忱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘苫幢。我一直安慰自己访诱,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布韩肝。 她就那樣靜靜地躺著触菜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哀峻。 梳的紋絲不亂的頭發(fā)上涡相,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音剩蟀,去河邊找鬼催蝗。 笑死,一個胖子當(dāng)著我的面吹牛喻旷,可吹牛的內(nèi)容都是我干的生逸。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼且预,長吁一口氣:“原來是場噩夢啊……” “哼槽袄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起锋谐,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤遍尺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后涮拗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乾戏,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年三热,在試婚紗的時候發(fā)現(xiàn)自己被綠了鼓择。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡就漾,死狀恐怖呐能,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤摆出,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布朗徊,位于F島的核電站,受9級特大地震影響偎漫,放射性物質(zhì)發(fā)生泄漏爷恳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一象踊、第九天 我趴在偏房一處隱蔽的房頂上張望温亲。 院中可真熱鬧,春花似錦通危、人聲如沸铸豁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至在刺,卻和暖如春逆害,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚣驼。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工魄幕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颖杏。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓纯陨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親留储。 傳聞我的和親對象是個殘疾皇子翼抠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,583評論 1 118
  • 一、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù)获讳,當(dāng)然包括負(fù)整數(shù)阴颖,在Python程序...
    績重KF閱讀 1,717評論 0 1
  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進(jìn)階課程,做筆記總結(jié)一下重點丐膝。 基本變量及其類型 變量 在Python中量愧,...
    victorsungo閱讀 1,701評論 0 5
  • 進(jìn)入公司即將4個月,零零總總小項目跟了幾個帅矗,跟進(jìn)了一個產(chǎn)品從出生到現(xiàn)在上小學(xué)的歷程偎肃,經(jīng)驗不多,但很想把自己當(dāng)下的感...
    Miss丶企鵝閱讀 165評論 0 1
  • 正式上學(xué)前一天老師要每人準(zhǔn)備一分鐘的自我介紹浑此。等到要介紹時我卻發(fā)現(xiàn)大家都是很短且比較隨意 累颂,而我的準(zhǔn)備的相比...
    事就是A閱讀 259評論 0 0