Python基礎(1)--Python編程習慣與特色

1.代碼風格

  • 在Python中,每行程序以換行符表明結束,若是一行程序太長的話,能夠用「\」符號擴展到下一行。在python中以三引號(""")括起來的字符串,列表,元組和字典都能跨行使用。而且以小括號(...)、中括號[...]和大括號{...}包圍的代碼不用加「\」符也可擴展到多行。python

  • 在Python中是以縮進來區分程序功能塊的,縮進的長度不受限制,但就一個功能塊來說,最好保持一致的縮進量。app

  • 若是一行中有多條語句,語句間要以分號(;)分隔。函數

  • 以「#」號開頭的內容爲註釋,python解釋器會忽略該行內容。測試

  • 在python中,全部標識符能夠包括英文、數字以及下劃線(_),但不能以數字開頭。python中的標識符是區分大小寫的。this

  • 如下劃線開頭的標識符是有特殊意義的。以單下劃線開頭(_foo)的表明不能直接訪問的類屬性,需經過類提供的接口進行訪問,不能用「from xxx import *」而導入;以雙下劃線開頭的(__foo)表明類的私有成員;以雙下劃線開頭和結尾的(__foo__)表明python裏特殊方法專用的標識,如__init__()表明類的構造函數。spa

  • 在交互模式下運行python時,一個下劃線字符(_)是特殊標識符,它保留了表達式的最後一個計算結果。code

>>> "hello"
'hello'
>>> _
'hello'
>>> 10+10
20
>>> _
20

在python中,函數、類、模塊定義的第一段代碼若是是字符串的話,就把它叫做文件字串,可經過__doc__屬性訪問。如:對象

def test():
"this is a document string"

return 100+1000

>>>print test.__doc__
this is a document string

2.保留字

	and		elif		global		or          yield
	assert		else		if		pass
	break		except		import		print
	class		exec		in		raise
	continue	finally		is		return
	def		for		lambda		try
	del		from		not		while

使用下面的代碼能夠打印python的關鍵字:blog

>>> from keyword import kwlist
>>> print kwlist

輸出以下:索引

['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

3.Python運算符和表達式

Python運算符列表

運算符 描述
x+y,x-y 加、減,「+」號可重載爲鏈接符
x*y,x**y,x/y,x%y 相乘、求平方、相除、求餘,「*」號可重載爲重複,「%」號可重載爲格式化
<,<=,>,>=,==,<>,!= 比較運算符
+=,-=,*=,/=,%=,**=,<<=,>>=,&=,^=,|= 自變運算符
x|y 按位或
x^y 按位異或
x&y 按位與
~x 按位取反
x<<,x>>y x向左或向右移y位
is, is not 等同測試
in, not in 是否爲成員測試
or,and,not 邏輯運算符
x[i],x[i:j],x.y,x(...) 索引,分片,限定引用,函數調用
(...),[...],{...},'...' 元組,列表,字典,轉化爲字符串

運算符優先順序列表(從最高到最低)

運算符 描述
'expr' 字符串轉換
{key:expr,...} 字典
[expr1,expr2...] 列表
(expr1,expr2,...) 元組
function(expr,...) 函數調用
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 比較
x is y,x is not y 等同測試
x in y,x not in y 成員判斷
not x 邏輯否
x and y 邏輯與
x or y 邏輯或
lambda arg,...:expr Lambda匿名函數

真值表

對象/常量
""
"string"
0
>=1
<=-1
()空元組
[]空列表
{}空字典
None

複合表達式

  • 對於and,當計算a and b時,python會計算a,若是a爲假,則取a值,若是a爲真,則python會計算b且整個表達式會取b值。如:

    >>> a,b=10,20
    >>> a and b   #a is true
    20
    >>> a,b=0,5   #a is false
    >>> a and b
    0
  • 對於or,當計算a or b時,python會計算a,若是a爲真,則整個表達式取a值,若是a爲假,表達式將取b值。如:

    >>> a,b=10,20
    >>> a or b
    10
    >>> a,b=0,5
    >>> a or b
    5
  • 對於not,not將反轉表表達式的「實際值」,若是表達式爲真,not爲返回假,如爲表達式爲假,not爲返回真。如:

    >>> not 2
    False
    >>> not 0
    True
    >>> not "test"
    False
    >>> not ""
    True

4.給變量賦值

 變量賦值:賦值並非直接將一個值賦給一個變量,在Python中,對象是經過引用傳遞的。Python的賦值語句不會返回值,相似下面的語句是非法的:

>>> x=1
>>> y=(x=x+1)
SyntaxError: invalid syntax

鏈式賦值沒有問題:

>>> x=1
>>> y=x=x+1
>>> x,y
(2, 2)

Python不支持相似x++或--x這樣的前置/後置自增/自減運算

能夠多重複值:

>>> x=y=z=1
>>> x
1
>>> y
1
>>> z
1

能夠多元賦值:

>>> x,y,z=1,2,'a string'
>>> x
1
>>> y
2
>>> z
'a string'

一般使用小括號括起來,加強代碼的可讀性:

>>> (x,y,z)=(1,2,'a string')
>>> x
1
>>> y
2
>>> z
'a string'

使用Python的多元賦值方式能夠實現無中間變量交換兩變量的值:

>>> #swapping variables in Python
>>> x,y=1,2
>>> x
1
>>> y
2
>>> x,y=y,x
>>> x
2
>>> y
1
相關文章
相關標籤/搜索