Python初學基礎
ClearWindow]
enable=1
enable_editor=0
enable_shell=1
[ClearWindow_cfgBindings]
clear-window=<Control-Key-l>
2.2 基礎數學運算
基本的加減乘除、取余取整運算等,註意與matlab中冪^的不同,python中的冪為**
2.3 變量variable
while和for循環
3.1 while循環
基本使用(註意冒號):
while condition:
expressions
python中除了常規比較操作會返回True和False值,其他也會返回True和False
for item in sequence:
expressions
sequence為可叠代的對象,item為序列中的每個對象。
range使用 在Python內置了工廠函數,range 函數將會返回一個序列,總共有三種使用方法if condition:
expressions
註意python中賦值語句同matlab,使用==表示。
4.2 if else判斷 基本使用:if condition:
true_expressions
else:
false_expressions
註意python中無類似condition ? value1 : value2 的三目操作符,但可以通過if-else來完成類似功能。var = var1 if condition else var2
4.3 if elif else判斷if condition1:
true1_expressions
elif condition2:
true2_expressions
elif condtion3:
true3_expressions
elif ...
...
else:
else_expressions
定義功能
5.1 def函數 基本使用:def function_name(parameters):
expressions
Python 使用 def 開始函數定義,緊接著是函數名,括號內部為函數的參數,內部為函數的具體功能實現代碼,如果想要函數有返回值, 在 expressions 中的邏輯代碼中用 return 返回。
5.2 函數參數 基本使用:def function_name(parameters):
expressions
註意:在調用函數時候,參數個數和位置一定要按照函數定義。如果我們忘記了函數的參數的位置,只知道各個參數的名字,可以在 函數調用的過程中給指明特定的參數 func(a=1, b=2), 這樣的話,參數的位置將不受影響,所以 func(b=2,a=1)是同樣的效果。
5.3 函數默認參數 定義函數時有時候有些參數在大部分情況下是相同的,只不過為了提高函數的適用性,提供了一些備選的參數, 為了方便函數調用,可將這些參數設置為默認參數,那麽該參數在函數調用過程中可以不需要明確給出。def function_name(para_1,...,para_n=defau_n,..., para_m=defau_m):
expressions
函數聲明只需要在需要默認參數的地方用 = 號給定即可, 但是要註意所有的默認參數都不能出現在非默認參數的前面。
此節課程下的進階篇 3.1 自調用 如果想要在執行腳本的時候執行一些代碼,比如單元測試,可以在腳本最後加上單元測試代碼,但是該腳本作為一個模塊對外提供功能的時候單元測試代碼也會執行,這些往往我們不想要的,我們可以把這些代碼放入腳本最後:if __name__ == ‘__main__‘:
#code_here
如果執行該腳本的時候,該if判斷語句將會是True,那麽內部的代碼將會執行。 如果外部調用該腳本,if判斷語句則為False,內部代碼將不會執行。
3.2 可變參數 顧名思義,函數的可變參數是傳入的參數可以變化的,1個,2個到任意個。當然可以將這些參數封裝成一個 list 或者 tuple 傳入,但不夠 pythonic。使用邊長參數可以很好解決該問題,註意可變參數在函數定義不能出現在特定參數和默認參數前面,因為可變參數會吞噬掉這些參數。def report(name, *grades):
total_grade = 0
for grade in grades:
total_grade += grade
print(name, ‘total grade is ‘, total_grade)
定義了一個函數,傳入一個參數為 name, 後面的參數 *grades 使用了 * 修飾,表明該參數是一個可變參數,這是一個可叠代的對象。該函數輸入姓名和各科的成績,輸出姓名和總共成績。所以可以這樣調用函數 report(‘Mike‘, 8, 9),輸出的結果為 Mike total grade is 17, 也可以這樣調用 report(‘Mike‘, 8, 9, 10),輸出的結果為 Mike total grade is 27
3.3 關鍵字參數 關鍵字參數可以傳入0個或者任意個含參數名的參數,這些參數名在函數定義中並沒有出現,這些參數在函數內部自動封裝成一個字典(dict).def portrait(name, **kw):
print(‘name is‘, name)
for k,v in kw.items():
print(k, v)
定義了一個函數,傳入一個參數 name, 和關鍵字參數 kw,使用了 ** 修飾。表明該參數是關鍵字參數,通常來講關鍵字參數是放在函數參數列表的最後。如果調用參數 portrait(‘Mike‘, age=24, country=‘China‘, education=‘bachelor‘) 輸出:
name is Mike
age 24
country China
education bachelor
通過可變參數和關鍵字參數,任何函數都可以用 universal_func(*args, **kw) 表達。
變量形式 6.1 全局&局部 變量 模塊安裝 7.1 模塊安裝 基於windows的numpy安裝,首先到網站上下載符合你的python版本的電腦系統的numpy文件,後綴名為whl。網址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 如果不確定自己的python版本,可在cmd中輸入python查看。如下圖所示,cp為python版本,32和64分別為符合windows32位和64位的版本。下載完成後放到Scripts所在的文件夾。我的安裝路徑是:D:\Program Files (x86)\Python\Scripts 為了能安裝wheel文件,需要安裝wheel這個包,在cmd中進入Scripts所在的位置,方法如下圖所示,輸入pip install wheel。如果直接在cmd中輸入pip install numpy也顯示安裝成功,但是有可能不帶mkl,會出現一些問題,所以建議安裝下載。在cmd中輸入pip install numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl,如圖顯示安裝成功。 此外,你可以通過pip uninstall numpy來卸載numpy,pip install -U numpy來更新numpy的版本。 文件讀取 8.1 讀寫文件1 "\n"換行命令 open讀文件方式
text=‘This is my first test.\nThis is next line.\nThis is last line.‘
my_file=open(‘my file.txt‘,‘w‘)
my_file.write(text)
my_file.close()
“\t”tab對齊
8.2 讀寫文件2
給文件增加內容,以’a‘方式打開文件,a表示append以增加內容的形式打開。例子如下:
append_text=‘\nThis is appended file.‘ # 為這行文字提前空行 "\n"
my_file=open(‘my file.txt‘,‘a‘) # ‘a‘=append 以增加內容的形式打開
my_file.write(append_text)
my_file.close()
8.3 讀寫文件3
(1)讀取文件內容file.read()可以讀取所有的內容
file= open(‘my file.txt‘,‘r‘)
content=file.read()
print(content)
(2)按行讀取file.readline()
讀取的內容與適用的次數有關
(3)讀取所有行file.readlines()
將把每一行的結果存儲在list中,執行的結果如下圖所示
class類
9.1 class 類
class 定義一個類, 後面的類別首字母推薦以大寫的形式定義,可以先定義自己的屬性,可跟def函數,如def add(self,x,y):,self是默認值。
class Calculator: #首字母要大寫,冒號不能缺
name=‘Good Calculator‘ #該行為class的屬性
price=18
def add(self,x,y):
print(self.name)
result = x + y
print(result)
def minus(self,x,y):
result=x-y
print(result)
def times(self,x,y):
print(x*y)
def divide(self,x,y):
print(x/y)
""""
>>> cal=Calculator() #註意這裏運行class的時候要加"()",否則調用下面函數的時候會出現錯誤,導致無法調用.
>>> cal.name
‘Good Calculator‘
>>> cal.price
18
>>> cal.add(10,20)
Good Calculator
30
>>> cal.minus(10,20)
-10
>>> cal.times(10,20)
200
>>> cal.divide(10,20)
0.5
>>>
""""
9.2 class 類 init 功能
完成初始化功能,運行c=Calculator(‘bad calculator‘,18,17,16,15),然後調出每個初始值的值。看如下代碼。
class Calculator:
name=‘good calculator‘
price=18
def __init__(self,name,price,height,width,weight): # 註意,這裏的下劃線是雙下劃線
self.name=name
self.price=price
self.h=height
self.wi=width
self.we=weight
""""
>>> c=Calculator(‘bad calculator‘,18,17,16,15)
>>> c.name
‘bad calculator‘
>>> c.price
18
>>> c.h
17
>>> c.wi
16
>>> c.we
15
>>>
""""
如何設置屬性的默認值, 直接在def裏輸入即可,如下:
def __init__(self,name,price,height=10,width=14,weight=16):
input輸入
10.1 input 輸入
variable=input() 表示運行後,可以在屏幕中輸入一個數字,該數字會賦值給自變量。input返回的類型是string類型,所以可根據需要進行類型轉換,如variable=int(input())
元組、列表、字典
11.1 元組 列表
元組 tuple:以小括號或者無括號表示,是一連串有順序的數字,list以中括號命名。
a_tuple = (12, 3, 5, 15 , 6)
another_tuple = 12, 3, 5, 15 , 6
a_list = [12, 3, 67, 7, 82]
11.2 list 列表
列表是一系列有序的數列,有一系列自帶的功能, 例如:a = [1,2,3,4,1,1,-1]
a.append(0) # 在a的最後面追加一個0
a.insert(1,0) # 在位置1處添加0
a.remove(2) # 刪除列表中第一個出現的值為2的項
print(a[0]) # 顯示列表a的第0位的值
print(a[-1]) # 顯示列表a的最末位的值
print(a[-3:]) # 顯示列表a的倒數第3位及以後的所有項的值
print(a[0:3]) # 顯示列表a的從第0位 到 第2位(第3位之前) 的所有項的值
print(a.index(2)) # 顯示列表a中第一次出現的值為2的項的索引
print(a.count(-1))# 統計列表中某值出現的次數
a.sort() # 默認從小到大排序
a.sort(reverse=True) # 從大到小排序
11.3 多維列表
一個一維的List是線性的List,多維List是一個平面的List:a = [1,2,3,4,5] # 一行五列
multi_dim_a = [[1,2,3],
[2,3,4],
[3,4,5]] # 三行三列
在上面定義的List中進行搜索:
print(a[1])
# 2
print(multi_dim_a[0][1])
# 2
用行數和列數來定位list中的值。這裏用的是二維的列表,但可以有更多的維度。
11.4 dictionary 字典
List是有順序地輸出輸入,字典的存檔形式則是無需順序的。
在字典中,有key和 value兩種元素,每一個key對應一個value, key是名字, value是內容。數字和字符串都可以當做key或者value, 在同一個字典中, 並不需要所有的key或value有相同的形式。 這樣說, List 可以說是一種key為有序數列的字典。
字典的value可以多樣,可以是字典、函數等等。
模塊
12.1 import 模塊
(1)import time
print(time.localtime()) #這樣就可以print 當地時間了
(2)import time as_ 下劃線縮寫部分可以自己定義
print(t.localtime()) # 需要加t.前綴來引出功能
(3)from time import time,localtime,只import自己想要的功能
print(localtime())
(4)from time import * 輸入模塊所有功能
print(localtime())
12.2 自己的模塊
其他
13.1 continue & break
break用法,在循環語句中,使用 break, 當符合跳出條件時,會直接結束循環。而continue直接進入下一次循環。
13.2 try 錯誤處理
try:,except...as...:
try:
file=open(‘eeee.txt‘,‘r‘) #會報錯的代碼
except Exception as e: # 將報錯存儲在 e 中
print(e)
"""
[Errno 2] No such file or directory: ‘eeee.txt‘
"""
13.3 zip lambda map
zip函數接受任意多個(包括0個和1個)序列作為參數,合並後返回一個tuple列表,豎向合並。
a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
print(list(ab)) #需要加list來可視化這個功能
"""
[(1, 4), (2, 5), (3, 6)]
"""
lambda定義一個簡單的函數,實現簡化代碼的功能
map是把函數和參數綁定在一起。 13.4 copy & deepcopy 淺復制 & 深復制 什麽是id?一個對象的id值在CPython解釋器裏就代表它在內存中的`地址 當使用淺拷貝時,python只是拷貝了最外圍的對象本身,內部的元素都只是拷貝了一個引用而已。也就是第一次列表被指定到另外的空間,而第二層列表即內部元素還是相同的內存空間。 deepcopy對外圍和內部元素都進行了拷貝對象本身,而不是對象的引用。外圍對象和內部元素都指定到了另外的空間。 ctrl+c 強行停止運行 crtl+[ 改變Tab結構 Alt+P上一條命令 Alt+N下一條命令
Python初學基礎