Python入门-基础语法笔记
生活随笔
收集整理的這篇文章主要介紹了
Python入门-基础语法笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.vi技巧:
中英切換:shift
wq = x
2.注釋
單行:#
多行:三個單引號或三個雙引號
3.編碼
文件中有中文,不管是否為注釋,python2執行報錯。
解決:程序首行加 #coding=utf-8 或 #*-* coding:utf-8 *-*
4.輸入
name = input("請輸入名字:")5.輸出
print("name is %s"%name) print("name:%s, age:%d"%(name,age)) print("name:{0}, age:{1}".format(name,age)) #(標號可不寫,為默認順序) print("name:{name}, age:{age}".format(name = "ss",age = 23)) import math print('常量 PI 的值近似為 {0:.3f}。'.format(math.pi)) #常量 PI 的值近似為 3.142。table = {'Google': 1, 'Runoob': 2, 'Taobao': 3} print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table)) #Runoob: 2; Google: 1; Taobao: 3table = {'Google': 1, 'Runoob': 2, 'Taobao': 3} print('Runoob: {Runoob:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table)) #Runoob: 2; Google: 1; Taobao: 36.類型轉換
a = int("3")7.python2與python3
- 編碼。
- python2中input的內容當做執行的內容,python3當做字符串。如a = input(""). python2中的raw_input相當于python3中的input。
- python2 中支持 <> 是不等于的意思,python3不支持,應該 != 表示
8.運算符
"a" * 5 = "aaaaa" 2 ** 3 = 8 5 / 2 = 2.5 5 // 2 = 2 #(取商) 5 % 2 = 1 #(取余)9.邏輯運算符
and , or
10.流程
if 1 > 2:print("1") elif 2 == 3:print("2") else:print("3")while 條件: 執行for i int str: 執行注: i++,++i在python中不允許使用。11.字符串(不可變)
- 格式化
- 類型轉換:
- 長度:
- 字符串連接:
- 切片:
- 逆序:
- 常見操作
12.列表 (類似數組,可變,針對自身的變化)
["zhangsan","lisi"] #定義 names = ["zhangsan", "lisi", 3.14] #列表中的數據可以是不同的數據類型。 可以下標,和切片。 #增 names.append("abc") #-->插入到最后; names.insert(0, "bcc") #-->插入指定位置。 names = names1 + names2 #兩個列表用連接符 names1.extend(names2) #擴充#刪 names.pop() #-->刪除最后一個; names.remove("lisi") #-->根據內容刪除; del names[0] #-->下標刪除 #改 names[0] = "abc" #查 name[1:] # "lisi" in, not in #是否存在 (if "zhangsan" in names:) #可以for... in 循環遍歷len(names) #元素個數#注意:append添加的元素;extend連接的列表# 其他 ''.join(list) # 列表轉字符串 names.sort() #排序,改變原結構; names.sort(reverse=True) 反向順序運算符
| len([1, 2, 3]) | 3 | 計算元素個數 |
| [1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 連接 |
| [‘Hi!’] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | 復制 |
| 3 in [1, 2, 3] | True | 元素是否存在 |
| for x in [1, 2, 3]: print(x, end=" ") | 1 2 3 | 迭代 |
13.字典(可變)
a = {"name":"yy", "age": 12}#增 a["name"] = "yy" #直接寫key-value #刪 del a["name"] #改 a["name"] = "zz" #相同key的值覆蓋。 #查: a["name"], a.get("name")for-else
#for中沒有break,則else一定會執行 for temp in strs: print(temp) else: print("")const 修改變量為不可變。
字典常見操作
14.元組(類似列表,不可變)
列表可以增刪改,元組不能改
tup1 = (); #空元組 >>> tup1 = (50) >>> type(tup1) # 不加逗號,類型為整型 <class 'int'>>>> tup1 = (50,) >>> type(tup1) # 加上逗號,類型為元組 <class 'tuple'>訪問:
tup1 = ('Google', 'Runoob', 1997, 2000) tup2 = (1, 2, 3, 4, 5, 6, 7 )print ("tup1[0]: ", tup1[0]) # Google print ("tup2[1:5]: ", tup2[1:5]) #(2, 3, 4, 5)修改:
tup1 = (12, 34.56); tup2 = ('abc', 'xyz')# 以下修改元組元素操作是非法的。 # tup1[0] = 100# 創建一個新的元組 tup3 = tup1 + tup2; print (tup3) #(12, 34.56, 'abc', 'xyz')刪除
tup = ('Google', 'Runoob', 1997, 2000)print (tup) del tup;運算符
| len((1, 2, 3)) | 3 | 計算元素個數 |
| (1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 連接 |
| (‘Hi!’) * 4 | (‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) | 復制 |
| 3 in (1, 2, 3) | True | 元素是否存在 |
| for x in (1, 2, 3): print x, | 1 2 3 | 迭代 |
類似拆包
a = (11,12) b = a b #out (11,12) c,d = a #類似拆包 c #out 11 d #out 12#例如 info = {"name":"ysw", "age":24} for temp in info:print(temp) #("name":"ysw") #("age":24) for temp in info.items():print("key=%s,value=%s"%(temp[0],temp[1])) #or for a,b in info.items():print("key=%s,value=%s"%(a,b))遍歷技巧:
#在字典中遍歷時,關鍵字和對應的值可以使用 items() 方法同時解讀出來 knights = {'gallahad': 'the pure', 'robin': 'the brave'} for k, v in knights.items():print(k, v)#gallahad the pure #robin the brave#在序列中遍歷時,索引位置和對應值可以使用 enumerate() 函數同時得到 >>> for i, v in enumerate(['tic', 'tac', 'toe']): ... print(i, v) ... 0 tic 1 tac 2 toe#同時遍歷兩個或更多的序列,可以使用 zip() 組合 >>> questions = ['name', 'quest', 'favorite color'] >>> answers = ['lancelot', 'the holy grail', 'blue'] >>> for q, a in zip(questions, answers): ... print('What is your {0}? It is {1}.'.format(q, a)) ... What is your name? It is lancelot. What is your quest? It is the holy grail. What is your favorite color? It is blue.#要反向遍歷一個序列,首先指定這個序列,然后調用 reversed() 函數 >>> for i in reversed(range(1, 10, 2)): ... print(i) ... 9 7 5 3 1#要按順序遍歷一個序列,使用 sorted() 函數返回一個已排序的序列,并不修改原值 >>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana'] >>> for f in sorted(set(basket)): ... print(f) ... apple banana orange pear15.函數
def abc():print("")abc() #注意: 函數的定義需要在函數的調用之前,否則報錯。可更改與不可更改對象:
在python中,strings,tuples和numbers是不可更改對象,list.dict等則是可更改對象。
- 不可變類型:變量賦值 a=5后在賦值a=10,生成了新的對象,原對象丟棄。
- 可變類型:變量賦值 la=[1,2,3,4] 后再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。
python 函數的參數傳遞:
- 不可變類型:類似 c++ 的值傳遞,如 整數、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內部修改 a 的值,只是修改另一個復制的對象,不會影響 a 本身
- 可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改后fun外部的la也會受影響
16.迭代器和生成器
字符串,列表和元組對象都可用于創建迭代器。
list = [1,2,3,4] it = iter(list) print(next(it)) #1 print(next(it)) #2#遍歷 #1 for x in it:print(x, end = "") # 1 2 3 4#2 while True:try:print(next(it))except StopIteration:sys.exit()生成器(TODO: 待理解)
yield的函數,生成器是返回迭代器的函數,只能用于迭代操作。
17.模塊
為此 Python 提供了一個辦法,把這些定義存放在文件中,為一些腳本或者交互式的解釋器實例使用,這個文件被稱為模塊。
- import語句,想使用 Python 源文件,只需在另一個源文件里執行 import 語句。
- from…import語句,從模塊中導入一個指定的部分到當前命名空間中。
- From…import* 語句,把一個模塊的所有內容全都導入到當前的命名空間。
- 模塊除了方法定義,還可以包括可執行的代碼。這些代碼一般用來初始化這個模塊。這些代碼只有在第一次被導入時才會被執行。
- _name_屬性,一個模塊被另一個程序第一次引入時,其主程序將運行。如果我們想在模塊被引入時,模塊中的某一程序塊不執行,可以用__name__屬性。
- Python 會根據 sys.path 中的目錄來尋找這個包中包含的子目錄。
- 目錄只有包含一個叫做 init.py 的文件才會被認作是一個包,主要是為了避免一些濫俗的名字(比如叫做 string)不小心的影響搜索路徑中的有效模塊。
- 推薦:from Package import specific_submodule
18.文件
open()方法返回文件,第二個參數為文件打開方式。默認只讀r。w寫,a追加…
f = open("/tmp/test.txt","w")f.write("人生苦短,我用python!")f.close()- f.read(size) 讀取文件內容,size為空或負數則全部返回。
- f.readline() f.readline() 會從文件中讀取單獨的一行。換行符為 ‘\n’。f.readline() 如果返回一個空字符串, 說明已經已經讀取到最后一行。
- f.readlines() 讀取文件所有行,并以列表返回。
- f.write(string) 將 string 寫入到文件中, 然后返回寫入的字符數。如果要寫入一些不是字符串的東西, 那么將需要先進行轉換。
19.類
- 類方法
- 構造方法
- 繼承
20.正則表達式
- re.match與re.search的區別
re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。
- 檢索和替換
總結
以上是生活随笔為你收集整理的Python入门-基础语法笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java随笔——逻辑运算符和(|和||)
- 下一篇: CRM客户关系管理系统让企业在竞争中脱颖