python基本語法知識
註釋
1、單行註釋以 # 開頭。
2、多行註釋為 '''xxx'''。
字串
1、單引號與雙引號含義一樣。
2、自然字串, 通過在字串前加r或R。 如 r"this is a line with \n" 則\n會顯示,並不是換行。
print輸出
print 預設輸出是換行的,如果要實現不換行需要在變數末尾加上 end=" "(空格)。
輸入
在python2.7裡是raw_input(),3.0是input(),輸入得到的均是字串。
raw_input不管輸入什麼返回的都是字串,input輸入字串時要加‘ ’
數字
1、complex為複數型別。2+5j或者complex(2,5)。
2、 type() 函式可以用來查詢變數所指的物件型別。
3、isinstance()函式也可以用來判斷一個物件是否是已知的型別。
4、type與isinstance的區別:type()不會認為子類是一種父類型別。isinstance()會認為子類是一種父類型別。
5、數值的除法(/)總是返回一個浮點數,要獲取整數使用//操作符。
6、** 表示乘方運算。
字串
1、索引值以 0 為開始值,-1 為從末尾的開始位置。
2、str[0:-1]表示第一個到倒數第二個的所有字元。
3、python字串不能被改變,所以不可以向索引位置賦值。
4、+組合,*重複。
身份運算子
1、is 是判斷兩個識別符號是不是引用自一個物件,is not 是判斷兩個識別符號是不是引用自不同物件。(記憶體地址是否相同,id())
2、但是為了提高記憶體利用效率對於一些簡單的物件,如一些數值較小的int物件,python採取重用物件記憶體的辦法,如指向a=2,b=2時,由於2作為簡單的int型別且數值小,python不會兩次為其分配記憶體,而是隻分配一次,然後將a與b同時指向已分配的物件。
3、is 與 == 區別:
is 用於判斷兩個變數引用物件是否為同一個, == 用於判斷引用變數的值是否相等。
>>>a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a
True
>>> b = a[:] #沒弄明白這兩個的區別在哪裡
>>> b is a
False
>>> b == a
True
列表
1、建立一個列表,只要把逗號分隔的不同的資料項使用中括號括起來即可。資料項不需要是相同型別。
2、列表的方法:
(1)list.append(obj):在列表末尾新增新的物件
(2)list.count(obj):統計某個元素在列表中出現的次數
(3)list.extend(seq):在列表末尾一次性追加另一個序列中的多個值(用新列表擴充套件原來的列表)
(4)list.index(obj):從列表中找出某個值第一個匹配項的索引位置
(5)list.insert(index, obj):將物件插入列表
(6)list.pop(obj=list[-1]):移除列表中的一個元素(預設最後一個元素),並且返回該元素的值
(7)list.remove(obj):移除列表中某個值的第一個匹配項
(8)list.reverse():反向列表中元素
(9)list.sort([func]):對原列表進行排序
(10)list.clear():清空列表
(11)list.copy():複製列表
元祖
1、與列表的區別是小括號表示,元素不能改變。
2、元組中只包含一個元素時,需要在元素後面新增逗號,否則括號會被當作運算子使用。
3、元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組。
4、輸入時沒有括號但用逗號隔開的值也是元組。
字典
1、格式:d = {key1 : value1, key2 : value2 }。
2、鍵是唯一的,不可變的。
3、dict.clear()清空字典。del dict刪除字典。
4、賦值、淺拷貝、深度拷貝的區別:Python 直接賦值、淺拷貝和深度拷貝解析 | 菜鳥教程 http://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html
5、fromkeys()方法:
用於建立一個新字典,以序列seq中元素做字典的鍵,value為字典所有鍵對應的初始值。
seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
print ("新的字典為 : %s" % str(dict))
dict = dict.fromkeys(seq, 10)
print ("新的字典為 : %s" % str(dict))
以上例項輸出結果為:
新的字典為 : {'age': None, 'name': None, 'sex': None}
新的字典為 : {'age': 10, 'name': 10, 'sex': 10}
6、dict.get(key, default=None):返回指定鍵的值,如果值不在字典中返回default值
dict.items():以列表返回可遍歷的(鍵, 值) 元組陣列
dict.keys():以列表返回一個字典所有的鍵
dict.setdefault(key, default=None):和get()類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default
dict.values():以列表返回字典中的所有值
pop(key[,default]):刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。
popitem():隨機返回並刪除字典中的一對鍵和值(一般刪除末尾對)。
集合
1、可用{}建立,會自動刪除重複元素,如果要建立一個空集合,你必須用 set() 而不是 {} ;後者建立一個空的字典。
迭代器與生成器
Python yield 使用淺析 | 菜鳥教程 http://www.runoob.com/w3cnote/python-yield-used-analysis.html
好厲害的樣子,現在看不懂,以後再看吧
函式
1、在 python 中,型別屬於物件,變數是沒有型別的。
2、python 函式的引數傳遞:
不可變型別:類似 c++ 的值傳遞,如 整數、字串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。比如在 fun(a)內部修改 a 的值,只是修改另一個複製的物件,不會影響 a 本身。
可變型別:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響
python 中一切都是物件,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳可變物件。
3、不定長引數:加了星號(*)的變數名會存放所有未命名的變數引數。如果在函式呼叫時沒有指定引數,它就是一個空元組。兩個**時,是建立了一個列表,儲存不定長的鍵值對。
4、global將函式內部變數改為全域性變數,nonlocal將巢狀作用域改為區域性變數。