Python 學習筆記之語法(一)

2021-07-03 23:11:28 字數 4049 閱讀 6031

python對語法格式要求很嚴格,因此,在編寫時一定要注意這些問題,比如下面就是這樣的問題:

traceback (most recent call last):

file "", line 1, in

file "d:\anzhuang\anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 682, in runfile

execfile(filename, namespace)

file "d:\anzhuang\anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 71, in execfile

exec(compile(scripttext, filename, 'exec'), glob, loc)

file "c:/users/wt/.spyder2/template.py", line 12

print isinstance(a, int)

^indentationerror: unexpected indent

indentationerror: unexpected indent, 通過這錯誤提示,就可以明白在編寫**時,存在不嚴格的書寫規範,而產生這樣的錯誤。

原因是:可能tab和空格沒有對齊,需要檢查下tab和空格

大部分python物件是可變的,比如列表、字典、陣列以及大部分使用者定義的型別,而其他的如字串和元組則是不可變的

print float((1, 2)),會先如下錯誤

traceback (most recent call last):

file "", line

1, in

file "d:\anzhuang\anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line

682, in runfile

execfile(filename, namespace)

file "d:\anzhuang\anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line

71, in execfile

exec(compile(scripttext, filename, 'exec'), glob, loc)

file "c:/users/wt/.spyder2/template.py", line

7, in

print float((1, 2))

typeerror: float() argument must be a

stringora

number

可能需要處理valueerror,因為typeerror可能意味著你的程式中存在合法性bug。要達到這個目的,在except後面加上異常型別即可

def

attempt_float

(x):

try:

return float(x)

except (typeerror, valueerror):

return x

print attempt_float((1, 2))

只需編寫乙個異常處理的元組即可捕獲異常

如果不想處理異常,而只希望有一段**不管try塊**成功與否都能被執行。但最後finaly即可達到目的

def 是定義函式的,如下:菲波那切數列函式

>>> def fib(n):    # write fibonacci series up to n

...""

"print a fibonacci series up to n."

""... a, b = 0, 1

...while a < n:

... print(a, end=' ')

... a, b = b, a+b

... print()

...>>> # now call the function we just defined:

... fib(2000)01

1235

8132134

5589

144233

377610

9871597

元組(tuple)是一種一維的、定長的、不可變的python物件序列,最簡單的建立方式是一組以逗號隔開的值。

5.1.1

tuple = 4, 5, 6

print tuple

輸出結果:(4, 5, 6)

5.1.2

tup = tuple('sjkfhvhv')

print tup

輸出結果:(』s』, 『j』, 『k』, 『f』, 『h』, 『v』, 『h』, 『v』)

但在第一次測試時,出現了如下錯誤

python typeerror: 'str'

object

is not callable

不知是什麼原因,在網上找了很多,網上說的有,變數名有python api有重名的,但都不能解決。後來,重啟下就好了,很無語。

由於元組的大小和記憶體是不可修改的,其使用方法很少,用的最多是count方法,用於計算其指定值出現的次數

a = (1, 2 ,2, 3, 5, 6, 2, 2)

print a.count(2)

輸出結果是:4

跟元組相比,列表是可變長的,而且其內容是可以修改的,通過方括號或list函式來定義:

6.1.1

tup = ('foo', 'bar', 'baz')

b_list = list(tup)

b_list[1] = 'jldaj;l'

print b_list

6.1.2
tup = ('foo', 'bar', 'baz')

b_list = list(tup)

b_list[1] = 'jldaj;l'

b_list.insert(1, 'hlakhl')

b_list.remove('foo')

print b_list

通過切片標記法,你可以選取序列的型別(陣列,元組,numpy陣列等)的子集,其基本形式由索引運算子以及傳入其中的start:stop構成。

start或stop都是可以省略的,此時分別預設序列的起始和結尾處。

seq = [1, 2, 2, 3, 4, 6]

print seq[:5]

負數索引從索引的末尾開始切片:

seq = [1, 2, 2, 3, 4, 6]

print seq[-4:]

執行結果:[2, 3, 4, 6]

多個冒號的情況

seq = [1, 2, 2, 3, 4, 6]

print seq[::2]

第二冒號後面是步長。

將多個序列(列表)中的元素配對,從而產生乙個新的元素列表

seq = [1, 2, 2]

seq2 = ['one', 'two', 'there']

print zip(seq,seq2)

執行結果:[(1, 『one』), (2, 『two』), (2, 『there』)]

zip可以接受任意數量的序列,最總得到的元組數量由最短的序列決定。

seq = [1, 2, 2, 3]

seq2 = ['one', 'two', 'there']

print zip(seq,seq2)

執行結果:[(1, 『one』), (2, 『two』), (2, 『there』)]

Python學習筆記一之基礎語法

python是一種解釋性 意味著開發過程沒有編譯環節,相對於編譯性語言而言 物件導向 動態資料型別的高階程式語言。識別符號 第乙個字元必須是字母表中的字母或下劃線 識別符號的其它部分由字母 數字和下劃線組成。識別符號區分大小寫。python3允許使用中文作為變數名,非ascii碼識別符號也是允許的。...

Python學習筆記 (一)python語法

python識別符號 語法 由字母,數字,下劃線組成 不能以數字開頭 python中的識別符號區分大小寫。行和縮排 python中以縮排作為 塊的標誌,不再採用c語言的 多行語句 python中以新行作為語句的結束符號,如果語句過長需要多行顯示的時候可以使用反斜槓 連線 注意 若語句中包含,或者 就...

Python學習筆記之基本語法

編碼 python 3 原始碼檔案以utf 8編碼,所有字串都是 unicode 字串 識別符號 保留字 關鍵字 false,true,and,as,return,try,while,with,break,class,continue,else,finally,for,if,import,in,no...