這篇文章主要介紹了開始學習python的第一步需要知道的知識(變量和控制語言使用方法),需要的朋友可以參考下
簡介
有興趣可以看看:解釋性語言+動態(tài)類型語言+強類型語言交互模式:(主要拿來試驗,可以試試ipython)
代碼如下:
$python
>>>print'helloworld'
腳本
代碼如下:
#!/usr/bin/envpython
print'helloworld'環(huán)境:建議python2.7+easy_install+pip+virtualenv+ipython縮進
Python函數(shù)沒有明顯的begin和end,沒有標明函數(shù)的開始和結(jié)束的花括號。唯一的分隔符是一個冒號(:),接著代碼本身是縮進的。例子:
代碼如下:
#函數(shù)
deffunc(value):
printvalue#縮進ifvalue==1:
value+=1
elifvalue==2:
pass
else:
value+=10標識符
變量是標識符的例子。標識符是用來標識某樣東西的名字。在命名標識符的時候,你要遵循這些規(guī)則:1.python中的標識符是區(qū)分大小寫的。2.標示符以字母或下劃線開頭,可包括字母,下劃線和數(shù)字,大小寫敏感3.以下劃線開頭的標識符是有特殊意義的。以單下劃線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用“fromxxximport*”而導入;
以雙下劃線開頭的(__foo)代表類的私有成員;
以雙下劃線開頭和結(jié)尾的(foo)代表python里特殊方法專用的標識,如init()代表類的構(gòu)造函數(shù)。4.標識符不能是保留字
代碼如下:
andelifglobaloryield
assertelseifpass
breakexceptimportprint
classexecinraise
continuefinallyisreturn
defforlambdatry
delfromnotwhile
變量賦值語句1、賦值語句建立對象引用值
2、變量名在首次賦值時會被建立
3、變量名在引用前必須先賦值,不能引用未聲明賦值的變量
賦值方式簡單賦值
Variable(變量)=Value(值)
代碼如下:
s=‘spam'
多變量賦值python中原始的元組和列表賦值語句形成,最后已被通用化,以接受右側(cè)可以是是任何類型的序列,只要長度相等即可。注意,長度一定相等
Variable1,variable2,...=Value1,Value2,...
代碼如下:
s,h=‘a(chǎn)','b'元組賦值,位置性【常用】
[s,h]=[‘a(chǎn)','b']列表賦值,位置性
a,b,c,d=‘spam'序列賦值,通用性
a,*b=‘spam'拓展序列解包(python3)
多目標賦值
代碼如下:
a=b=variables=h=‘spam'多目標賦值
注意:多個變量內(nèi)存中指向同一對象,對于可變類型需要,修改一個會對其他造成影響自變賦值
代碼如下:
如+=,-=,*=等。在自變賦值中,python僅計算一次,而普通寫法需計算兩次;自變賦值會修改原始對象,而不是創(chuàng)建一個新對象。
代碼如下:
s+=42增強賦值
x+=y
優(yōu)點:
代碼如下:
左側(cè)只需計算一次,優(yōu)化技術(shù)自動原處修改,更快
l+=[]原處修改
l=l+[]復制,生成新的對象
運算符
一個表達式可以分解為運算符和操作數(shù)運算符的功能是完成某件事,它們由如+這樣的符號或者其他特定的關(guān)鍵字表示運算符需要數(shù)據(jù)來進行運算,這樣的數(shù)據(jù)被稱為操作數(shù)運算符優(yōu)先順序列表(從最高到最低)
代碼如下:
運算符描述
'expr'字符串轉(zhuǎn)換
{key:expr,...}字典
[expr1,expr2...]列表
(expr1,expr2,...)元組
function(expr,...)函數(shù)調(diào)用
x[index:index]切片
x[index]下標索引取值
x.attribute屬性引用
~x按位取反
+x,-x正,負
x**y冪
x*y,x/y,x%y乘,除,取模
x+y,x-y加,減
x<<y,x>>y移位
x&y按位與
x^y按位異或
x|y按位或
x<y,x<=y,x==y,x!=y,x>=y,x>y比較
xisy,xisnoty等同測試
xiny,xnotiny成員判斷
notx邏輯否
xandy邏輯與
xory邏輯或
lambdaarg,...:exprLambda匿名函數(shù)
結(jié)合規(guī)律運算符通常由左向右結(jié)合,即具有相同優(yōu)先級的運算符按照從左向右的順序計算計算順序默認地,運算符優(yōu)先級表決定了哪個運算符在別的運算符之前計算。然而,如果你想要改變它們的計算順序,你得使用圓括號。好的做法:默認對復雜的運算加括號,而不是依賴于默認結(jié)合和計算順序真值
真值測試1、任何非零數(shù)字或非空對象都為真
2、數(shù)字零,空對象以及特殊對象None都為假
3、比較和相等測試都會遞歸地運用到數(shù)據(jù)結(jié)構(gòu)中
4、比較和相等測試會返回True或False
真值表
代碼如下:
對象/常量值
""假
"string"真
0假
2>=1真
-2<=-1真
()空元組假
[]空列表假
{}空字典假
None假
布爾表達式
三種布爾表達式運算符
代碼如下:
xandy
xory
notx
比較
數(shù)字通過相對大小進行比較
字符串時按照字典順序的,一個字符一個字符比較
列表和元組從左到右對每部分的內(nèi)容進行比較
字典通過排序后的鍵值列表進行比較
數(shù)字混合類型比較在python3是錯誤的,但是python2.6支持,固定但任意的排序規(guī)則布爾數(shù)
有兩個永遠不改變的值True,F(xiàn)alse
布爾是整型的子類,但不能被再繼承
沒有nonzero()方法的對象的默認值是True
對于值為0的任何數(shù)字或空集,值False
在數(shù)學運算中,Bollean值的True和False分別對應于1和0
基本控制流if
基本的條件測試語句,用來判斷可能遇到的不同情況,并針對不同的情況進行操作基本形式
代碼如下:
if<條件>:
<語句>
elif<條件>:
<語句>
else:
<語句>注意python根據(jù)縮進判斷,elif和else部分是可選的例子:
代碼如下:
a=1
b=2
c=3;d=4#兩個放一句用分號隔開,不過建議分行ifa<bandc<d:
print("brancha")
elifa==b:
print("branchb")
else:
print("branchc")
switchpython本身沒有switch語句,若需要,用if/elif/else實現(xiàn)完成同樣的工作,某些情況可以考慮用字典也可以用dict的形式if/else三元運算符
代碼如下:
A=((XandY)orZ)
A=YifXelseZ
例:a=‘t'ifxelse‘a(chǎn)'
[code]for基本語法循環(huán)控制語句,可以用于循環(huán)遍歷某一序列else塊可選,在循環(huán)終止的時候執(zhí)行,若是break終止循環(huán),else不執(zhí)行格式:
[code]
for<對象變量>in<對象集合>:
if<條件>:
break
if<條件>:
continue
<其他語句>
else:
<其他語句>注意:1.對象集合可以是列表,字典以及元組等
2.for..in循環(huán)對于任何序列都適用
3.for遍歷一個字典時,遍歷的是字典的鍵
代碼如下:
rang&xrange
可以通過range()函數(shù)產(chǎn)生一個整數(shù)列表,完成計數(shù)循環(huán)
代碼如下:
range([start,]stop[,step])
start可選參數(shù),起始數(shù)
stop終止數(shù),若為x,產(chǎn)生從0-(x-1)的整數(shù)列表
step可選參數(shù),步長,未寫默認為1
range(1,5)包含序列為[1,2,3,4]xrange和range區(qū)別(python3.x的可無視)在Range的方法中,它會生成一個list的對象,但是在XRange中,它生成的卻是一個xrange的對象,當返回的東西不是很大的時候,或者在一個循環(huán)里,基本上都是從頭查到底的情況下,這兩個方法的效率差不多。但是,當返回的東西很大,或者循環(huán)中常常會被Break出來的話,還是建議使用XRange,這樣既省空間,又會提高效率。
代碼如下:
>>>printrange(1,5)
[1,2,3,4]
>>>printxrange(1,5)
xrange(1,5)
在上面語句中,range返回了一個普通List,而xrange返回了一個特定的xrange類型的對象。由于xrange方法也創(chuàng)建整數(shù)list(其使用相同參數(shù)),所以它與range方法非常相似。但是,xrange方法僅在需要時才在list中創(chuàng)建整數(shù)。當需要迭代大量整數(shù)時,xrange方法更適用,因為它不會創(chuàng)建極大的list,那樣會消耗大量計算機內(nèi)存。while與if語句類似,含一個條件測試語句,循環(huán),允許重復執(zhí)行一個語句塊??蛇xelse語句塊,同for的else塊。格式:
代碼如下:
while<條件>:
if<條件>:
break
if<條件>:
continue
<其他語句>
else:
<語句>
說明:while循環(huán)條件變?yōu)镕alse的時候,else塊才被執(zhí)行
若是使用break結(jié)束循環(huán),while可選的else塊不執(zhí)行
python沒有dowhile或dountil循環(huán)語句
break&continue&pass
break,終止循環(huán)語句,停止循環(huán),若是for/while循環(huán)中終止,其else不執(zhí)行continue,結(jié)束當前,進入下一輪循環(huán)-跳到最近所在循環(huán)的開頭處(來到循環(huán)首行)pass什么事也不做,只是空占位語句,它用于那些語法上必須要有什么語句,但程序什么也不做的場合循環(huán)else塊:只有循環(huán)正常離開時才會執(zhí)行,即如果你從for或while循環(huán)中break終止,任何對應的循環(huán)else塊將不執(zhí)行。記住,break語句也可以在for循環(huán)中使用其他編寫循環(huán)的技巧:
在迭代過程中修改迭代序列不安全(只有在使用鏈表這樣的可變序列時才會有這樣的情況)。如果你想要修改你迭代的序列(例如,復制選擇項),你可以迭代它的復本。使用切割標識就可以很方便的做到這一點>>>代碼如下:forxina[:]:#makeaslicecopyoftheentirelist
...iflen(x)>6:a.insert(0,x)在字典中循環(huán)時,關(guān)鍵字和對應的值可以使用iteritems()方法同時解讀出來
代碼如下:
>>>knights={'gallahad':'thepure','robin':'thebrave'}
>>>fork,vinknights.iteritems():
...printk,v
...
gallahadthepure
robinthebrave在序列中循環(huán)時,索引位置和對應值可以使用enumerate()函數(shù)同時得到。
代碼如下:
>>>fori,vinenumerate(['tic','tac','toe']):
...printi,v
更多信息請查看IT技術(shù)專欄