Python 基礎語法(一)

Python的特點

1.簡單

    Python是一種代表簡單思想的語言鞋诗。

2.易學

   Python有極其簡單的語法。

3.免費撕捍、開源

   Python是FLOSS(自由/開放源碼軟件)之一拿穴。

4.高層語言

  使用Python編寫程序時無需考慮如何管理程序使用的內存一類的底層細節(jié)。

5.可移植性

  Python已被移植到很多平臺忧风,這些平臺包括Linux默色、Windows、FreeBSD狮腿、Macintosh腿宰、Solaris、OS/2缘厢、Amiga吃度、AROS、AS/400贴硫、

  BeOS椿每、OS/390、z/OS、Palm OS间护、QNX删壮、VMS、Psion兑牡、Acom RISC OS央碟、VxWorks、PlayStation均函、Sharp Zaurus亿虽、

  Windows CE甚至還有PocketPC。

6.解釋性

  可以直接從源代碼運行苞也。在計算機內部洛勉,python解釋器把源代碼轉換為字節(jié)碼的中間形式,然后再把它翻譯成計算機使用的機器語言如迟。

7.面向對象

  Python既支持面向過程編程也支持面向對象編程收毫。

8.可擴展性

    部分程序可以使用其他語言編寫,如c/c++殷勘。

9.可嵌入型

    可以把Python嵌入到c/c++程序中此再,從而提供腳本功能。

10.豐富的庫

   Python標準庫確實很龐大玲销。它可以幫助你處理各種工作输拇,包括正則表達式、文檔生成贤斜、單元測試策吠、線程、數據庫瘩绒、網頁瀏覽器猴抹、CGI、FTP锁荔、

  電子郵件蟀给、XML、XML-RPC堕战、HTML坤溃、WAV文件拍霜、密碼系統(tǒng)嘱丢、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關的操作祠饺。


---------------分割線------------------------以下是Python的基本語法---------------------------------------------------------

一越驻、基本概念

  1. python中數有四種類型:整數、長整數、浮點數和復數缀旁。

整數记劈, 如 1

長整數 是比較大的整數

浮點數 如 1.23、3E-2

復數 如 1 + 2j并巍、 1.1 + 2.2j

  2. 字符串(字符的序列)

python中單引號和雙引號使用完全相同目木。

使用三引號('''或""")可以指定一個多行字符串。

轉義符 '\'

自然字符串懊渡, 通過在字符串前加r或R刽射。 如 r"this is a line with \n" 則\n會顯示,并不是換行剃执。

python允許處理unicode字符串誓禁,加前綴u或U, 如 u"this is an unicode string"肾档。

字符串是不可變的摹恰。

按字面意義級聯字符串,如"this " "is " "string"會被自動轉換為this is string怒见。

3. 標識符的命名

第一個字符必須是字母表中字母或下劃線'_'俗慈。

標識符的其他的部分有字母、數字和下劃線組成遣耍。

標識符對大小寫敏感姜盈。

4. 對象

   python程序中用到的任何“東西”都成為“對象”。

5. 邏輯行和物理行

   物理行是我們在編寫程序時看到的配阵,邏輯行則是python看到的馏颂。

    python中分號;標識一個邏輯行的結束,但是實際中一般每個物理行只寫一個邏輯行棋傍,可以避免使用分號救拉。

    多個物理行中可以寫一個邏輯行,如下:

s="peter?is?\

writing?this?article"

    上面\的使用被稱為‘明確的行連接’瘫拣, 又如:

print\

"peter"

  6. 縮進

    空白在python是非常重要的亿絮,行首的空白是最重要的,又稱為縮進麸拄。行首的空白(空格和制表符)用來決定邏輯行的縮進層次派昧,從而決定語句分組。這意味著同一層次的語句必須有相同的縮進拢切,每一組這樣的語句稱為一個塊蒂萎。

  注意:不要混合使用空格和制表符來縮進,因為在跨越不同的平臺時無法正常工作淮椰。

二五慈、運算符與表達式

  1. 運算符與其用法

運算符名稱說明例子

+加兩個對象相加3 + 5得到8纳寂。'a' + 'b'得到'ab'。

-減得到負數或是一個數減去另一個數-5.2得到一個負數泻拦。50 - 24得到26毙芜。

*乘兩個數相乘或是返回一個被重復若干次的字符串2 * 3得到6。'la' * 3得到'lalala'争拐。

**冪返回x的y次冪3 ** 4得到81(即3 * 3 * 3 * 3)

/除x除以y4/3得到1(整數的除法得到整數結果)腋粥。4.0/3或4/3.0得到1.3333333333333333

//取整除返回商的整數部分4 // 3.0得到1.0

%取模返回除法的余數8%3得到2。-25.5%2.25得到1.5

<<左移把一個數的比特向左移一定數目(每個數在內存中都表示為比特或二進制數字架曹,即0和1)2 << 2得到8灯抛。——2按比特表示為10

>>右移把一個數的比特向右移一定數目11 >> 1得到5音瓷《越溃——11按比特表示為1011,向右移動1比特后得到101绳慎,即十進制的5纵竖。

&按位與數的按位與5 & 3得到1。

|按位或數的按位或5 | 3得到7杏愤。

^按位異或數的按位異或5 ^ 3得到6

~按位翻轉x的按位翻轉是-(x+1)~5得到6靡砌。

<小于返回x是否小于y。所有比較運算符返回1表示真珊楼,返回0表示假通殃。這分別與特殊的變量True和False等價。注意厕宗,這些變量名的大寫画舌。5 < 3返回0(即False)而3 < 5返回1(即True)。比較可以被任意連接:3 < 5 < 7返回True已慢。

>大于返回x是否大于y5 > 3返回True曲聂。如果兩個操作數都是數字,它們首先被轉換為一個共同的類型佑惠。否則朋腋,它總是返回False。

<=小于等于返回x是否小于等于yx = 3; y = 6; x <= y返回True膜楷。

>=大于等于返回x是否大于等于yx = 4; y = 3; x >= y返回True旭咽。

==等于比較對象是否相等x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False赌厅。x = 'str'; y = 'str'; x == y返回True穷绵。

!=不等于比較兩個對象是否不相等x = 2; y = 3; x != y返回True。

not布爾“非”如果x為True察蹲,返回False催训。如果x為False洽议,它返回True宗收。x = True; not y返回False。

and布爾“與”如果x為False亚兄,x and y返回False混稽,否則它返回y的計算值。x = False; y = True; x and y审胚,由于x是False匈勋,返回False。在這里膳叨,Python不會計算y洽洁,因為它知道這個表達式的值肯定是False(因為x是False)。這個現象稱為短路計算菲嘴。

or布爾“或”如果x是True饿自,它返回True,否則它返回y的計算值龄坪。x = True; y = False; x or y返回True昭雌。短路計算在這里也適用。

2. 運算符優(yōu)先級(從低到高)

運算符描述

lambdaLambda表達式

or布爾“或”

and布爾“與”

not x布爾“非”

in健田,not in成員測試

is烛卧,is not同一性測試

<,<=妓局,>总放,>=,!=好爬,==比較

|按位或

^按位異或

&按位與

<<间聊,>>移位

+,-加法與減法

*抵拘,/哎榴,%乘法、除法與取余

+x僵蛛,-x正負號

~x按位翻轉

**指數

x.attribute屬性參考

x[index]下標

x[index:index]尋址段

f(arguments...)函數調用

(experession,...)綁定或元組顯示

[expression,...]列表顯示

{key:datum,...}字典顯示

'expression,...'字符串轉換

3. python 控制臺輸出使用print

print"abc"#打印abc并換行print"abc%s"%"d"#打印abcdprint"abc%sef%s"%?("d","g")#打印abcdefg

三尚蝌、控制流

1. if 語句

i?=?10

n?=?int(raw_input("enter?a?number:"))

ifn?==?i:

print"equal"

elifn?<?i:

print"lower"

else:

print"higher"

2. while語句

whileTrue:

pass

else:

pass

#else語句可選,當while為False時充尉,else語句被執(zhí)行飘言。?pass是空語句。

3. for 循環(huán) for..in

foriinrange(0,5):

printi

else:

pass

#?打印0到4

  注:當for循環(huán)結束后執(zhí)行else語句驼侠;

    range(a, b)返回一個序列姿鸿,從a開始到b為止谆吴,但不包括b,range默認步長為1苛预,可以指定步長句狼,range(0,10,2);

4. break語句

終止循環(huán)語句热某,如果從for或while中終止腻菇,任何對應循環(huán)的else將執(zhí)行。

5. continue語句

    continue語句用來調過當前循環(huán)的剩余語句昔馋,然后繼續(xù)下一輪循環(huán)筹吐。

四、函數

函數通過def定義秘遏。def關鍵字后跟函數的標識符名稱丘薛,然后跟一對圓括號,括號之內可以包含一些變量名邦危,該行以冒號結尾洋侨;接下來是一塊語句,即函數體铡俐。

defsumOf(a,?b):

returna?+?b

1. 函數形參

    函數中的參數名稱為‘形參’凰兑,調用函數時傳遞的值為‘實參’

2. 局部變量

    在函數內定義的變量與函數外具有相同名稱的其他變量沒有任何關系,即變量名稱對于函數來說是局部的审丘。這稱為變量的作用域吏够。

    global語句, 為定義在函數外的變量賦值時使用global語句滩报。

deffunc():

globalx

print"x?is?",?x

x?=1

x?=3

func()

printx

#3

#1?

3. 默認參數

    通過使用默認參數可以使函數的一些參數是‘可選的’锅知。

defsay(msg,times=1):

printmsg?*times

say("peter")

say("peter",3)

注意:只有在形參表末尾的那些參數可以有默認參數值,即不能在聲明函數形參的時候脓钾,先聲明有默認值的形參而后聲明沒有默認值的形參售睹,只是因為賦給形參的值是根據位置而賦值的。

4. 關鍵參數

    如果某個函數有很多參數可训,而現在只想指定其中的部分昌妹,那么可以通過命名為這些參數賦值(稱為‘關鍵參數’)。

    優(yōu)點:不必擔心參數的順序握截,使函數變的更加簡單飞崖;假設其他參數都有默認值,可以只給我們想要的那些參數賦值谨胞。

deffunc(a,?b=2,?c=3):

print?"ais%s,?bis%s,?cis%s"?%?(a,?b,?c)

func(1)?#ais1,?bis2,?cis3func(1,5)?#ais1,?bis5,?cis3func(1,?c?=10)?#ais1,?bis2,?cis10func(c?=20,?a?=30)?#ais30,?bis2,?cis20

5. return 語句

    return語句用來從一個函數返回固歪,即跳出函數背零⌒矗可從函數返回一個值。

    沒有返回值的return語句等價于return None入宦。None表示沒有任何東西的特殊類型震捣。

6. DocStrings(文檔字符串)

deffunc():

'''This?is?self-defined?function

Do?nothing'''

pass

printfunc.__doc__

#This?is?self-defined?function

#

#Do?nothing

五瘪弓、模塊

  模塊就是一個包含了所有你定義的函數和變量的文件宰掉,模塊必須以.py為擴展名恐仑。模塊可以從其他程序中‘輸入’(import)以便利用它的功能。

  在python程序中導入其他模塊使用'import', 所導入的模塊必須在sys.path所列的目錄中伶椿,因為sys.path第一個字符串是空串''即當前目錄辜伟,所以程序中可導入當前目錄的模塊氓侧。

1. 字節(jié)編譯的.pyc文件

    導入模塊比較費時脊另,python做了優(yōu)化,以便導入模塊更快些约巷。一種方法是創(chuàng)建字節(jié)編譯的文件偎痛,這些文件以.pyc為擴展名。

    pyc是一種二進制文件独郎,是py文件經編譯后產生的一種byte code踩麦,而且是跨平臺的(平臺無關)字節(jié)碼,是有python虛擬機執(zhí)行的氓癌,類似于

  java或.net虛擬機的概念谓谦。pyc的內容,是跟python的版本相關的贪婉,不同版本編譯后的pyc文件是不同的反粥。

2. from .. import

    如果想直接使用其他模塊的變量或其他,而不加'模塊名+.'前綴疲迂,可以使用from .. import才顿。

    例如想直接使用sys的argv,from sys import argv 或 from sys import *

3. 模塊的__name__

    每個模塊都有一個名稱尤蒿,py文件對應模塊名默認為py文件名郑气,也可在py文件中為__name__賦值;如果是__name__腰池,說明這個模塊被用戶

  單獨運行尾组。

4. dir()函數

    dir(sys)返回sys模塊的名稱列表;如果不提供參數示弓,即dir()讳侨,則返回當前模塊中定義名稱列表。

    del -> 刪除一個變量/名稱避乏,del之后爷耀,該變量就不能再使用。

六拍皮、數據結構

  python有三種內建的數據結構:列表歹叮、元組和字典跑杭。

1. 列表

    list是處理一組有序項目的數據結構,列表是可變的數據結構咆耿。列表的項目包含在方括號[]中德谅,eg: [1, 2, 3], 空列表[]萨螺。

判斷列表中是否包含某項可以使用in窄做, 比如 l = [1, 2, 3]; print 1 in l; #True;支持索引和切片操作慰技;索引時若超出范圍椭盏,則IndexError;使用函數len()查看長度吻商;使用del可以刪除列表中的項掏颊,eg: del l[0] # 如果超出范圍,則IndexError

    list函數如下:

append(value)---向列表尾添加項value

l?=?[1,?2,?2]

l.append(3)#[1,?2,?2,?3]

count(value)---返回列表中值為value的項的個數

l?=?[1,?2,?2]

print?l.count(2)#?2

extend(list2)---向列表尾添加列表list2

l?=?[1,?2,?2]

l1?=?[10,?20]

l.extend(l1)

print?l#[1,?2,?2,?10,?20]

index(value, [start, [stop]])---返回列表中第一個出現的值為value的索引艾帐,如果沒有乌叶,則異常 ValueError

l?=?[1,?2,?2]

a?=?4

try:

print?l.index(a)

except?ValueError,?ve:

print"there?is?no?%d?in?list"%?a

insert(i, value)---向列表i位置插入項vlaue,如果沒有i柒爸,則添加到列表尾部

l?=?[1,?2,?2]

l.insert(1,?100)

printl#[1,?100,?2,?2]

l.insert(100,?1000)

printl#[1,?100,?2,?2,?1000]

pop([i])---返回i位置項准浴,并從列表中刪除;如果不提供參數捎稚,則刪除最后一個項乐横;如果提供,但是i超出索引范圍阳藻,則異常IndexError

l?=?[0,1,2,3,4,5]

printl.pop()#?5print?l?#[0,?1,?2,?3,?4]

printl.pop(1)#1print?l?#[0,?2,?3,?4]

try:

l.pop(100)

exceptIndexError,?ie:

print"index?out?of?range"

remove(value)  ---刪除列表中第一次出現的value晰奖,如果列表中沒有vlaue,則異常ValueError

l?=?[1,2,3,1,2,3]

l.remove(2)

printl#[1,?3,?1,?2,?3]

try:

l.remove(10)

exceptValueError,?ve:

print"there?is?no?10?in?list"

reverse()---列表反轉

l?=?[1,?2,?3]

l.reverse()

print?l#[3,?2,?1]

sort(cmp=None, key=None, reverse=False)---列表排序

【Python Library Reference】

cmp:cmp?specifies?acustomcomparisonfunctionoftwo?arguments?(iterable?elements)?which?shouldreturna?negative,?zeroorpositive?number?dependingonwhether?the?first?argumentisconsidered?smaller?than,?equalto,orlarger?than?the?second?argument:

"cmp=lambda?x,y:?cmp(x.lower(),?y.lower())"

key

作者:Peter

出處:http://www.cnblogs.com/Peter-Zhang/

如果你對編程感興趣或者想往編程方向發(fā)展腥泥,可以關注微信公眾號【筑夢編程】匾南,大家一起交流討論!小編也會每天定時更新既有趣又有用的編程知識蛔外!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末蛆楞,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子夹厌,更是在濱河造成了極大的恐慌豹爹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矛纹,死亡現場離奇詭異臂聋,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門孩等,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艾君,“玉大人,你說我怎么就攤上這事肄方”ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵权她,是天一觀的道長虹茶。 經常有香客問我,道長隅要,這世上最難降的妖魔是什么蝴罪? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拾徙,結果婚禮上洲炊,老公的妹妹穿的比我還像新娘感局。我一直安慰自己尼啡,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布询微。 她就那樣靜靜地躺著崖瞭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撑毛。 梳的紋絲不亂的頭發(fā)上书聚,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音藻雌,去河邊找鬼雌续。 笑死,一個胖子當著我的面吹牛胯杭,可吹牛的內容都是我干的驯杜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼做个,長吁一口氣:“原來是場噩夢啊……” “哼鸽心!你這毒婦竟也來了?” 一聲冷哼從身側響起居暖,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤顽频,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后太闺,有當地人在樹林里發(fā)現了一具尸體糯景,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了蟀淮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丑孩。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖灭贷,靈堂內的尸體忽然破棺而出温学,到底是詐尸還是另有隱情,我是刑警寧澤甚疟,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布仗岖,位于F島的核電站,受9級特大地震影響览妖,放射性物質發(fā)生泄漏轧拄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一讽膏、第九天 我趴在偏房一處隱蔽的房頂上張望檩电。 院中可真熱鬧,春花似錦府树、人聲如沸俐末。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卓箫。三九已至,卻和暖如春垄潮,著一層夾襖步出監(jiān)牢的瞬間烹卒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工弯洗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旅急,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓牡整,卻偏偏與公主長得像藐吮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子果正,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355