目錄
Python註釋的合理使用
註釋符號#
age = 25 #liming age
print age
如果代碼中存在中文,則需要在開始位置進行註釋說明。
#-*-coding:UTF-8-*-
Python空行的合理使用
通常情況下爲了區分每一段代碼的具體功能,在函數之間或者類之間空一行。
#!/user/bin/python
#-*-coding:UTF-8-*-
class A:
def funx (self):
print "funx()"
def funy (self):
print "funY()"
class B:
def funm (self):
print "funm()"
def funn (self):
print "funn()"
...
空行分爲邏輯行和物理行
物理行是在編程的過程中肉眼可以可見的,而邏輯行是區分程序語句的,用;隔開,例如:
#!/user/bin/python
#-*-coding:UTF-8-*-
a=4;d=6;#這是一個邏輯行,後面一個;也可以省略
print a+d
#這是一個物理行
print 5+a
換行符\
#!/user/bin/python
#-*-coding:UTF-8-*-
a='dfd ffdfdg dfgdf \ #這就是換行符號\
dgdfg dfgdfgdfgdfgdfghdfh'
print a
模塊
主要作用是減少重複性的工作,提高效率。
比如在ABAQUS軟件中,包含的模塊有:Part模塊、Interaction模塊、Step模塊等等。
類或者函數的集合就是模塊,他可以實現某種特殊的功能,例如:
import math
import sys
import cv2
還可以使用from ...import...語句
第一個省略號用於表示模塊,第二個省略號表示模塊中的某種方法,如:
from sys import path
from math import * #導入math模塊中的所有方法
from sys import path as p #導入模塊中的函數並取別名
***.***
.前面表示模塊,.後面表示方法,如:
import sys
print sys.path
查看某一模塊下的所有屬性名和方法名:
import sys
print dir(sys)
---------- Python ----------
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'getwindowsversion', 'hexversion', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'py3kwarning', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions', 'winver']
Python數據類型
Python內置的數據類型主要有:數字類型、字符串類型、列表類型list、元祖類型tuple、字典類型dic等。
數字類型又可以分爲:整數類型【長整型、短整形】、浮點類型、複數類型。Python語言可以自動的對數據類型進行分類轉換,不需要申明變量的類型。比如:在C語言中需要先指定數據的類型,int a=100;而Python中直接用a=100。
Python語言可以根據數值的大小自動轉換數據的類型,Python中的浮點型數據類型只有雙精度,而沒有單精度。
Python作爲一種面向對象的編程語言,任何一種數據類型都是一個對象。
type是__builtin__模塊的一個類。
--builtin--模塊中定義的都是Python的內置函數,這些不需要導入模塊,Python解釋器將會自動導入。
示例:
#!/user/bin/python
#-*-coding:UTF-8-*-
a = 5
print type(a)
b = 2.221
print type(b)
d = 4+55j
print type(d)
f = False
print type(f)
輸出結果如下:
---------- Python ----------
<type 'int'>
<type 'float'>
<type 'complex'>
<type 'bool'>
Output completed (0 sec consumed) - Normal Termination
字符串類型
字符串類型使用單引號、雙引號或者三引號,這些引號都是在英文輸入的狀態下輸入。
在Python中單雙引號的作用相同,但是三引號的作用是用來定義多行字符串。
Python中的轉義字符(\),如:
print ' this\'s apple'
轉義字符 | 含義 | 轉義字符 | 含義 |
\' | 單引號 | \v | 縱向製表符 |
\'' |
雙引號 | \r | 回車符 |
\a | 發出系統響鈴 | \f | 換頁符 |
\b | 退格 | \o | 代表八進制數的字符 |
\n | 換行符 | \x | 代表十六進制的字符 |
\t | 橫向製表符號 | \000 | 終止符,後面內容將全部被忽略 |
Python多變量快速賦值,例如:
x,y,z = 0,1,2
Python的全局變量
用關鍵字global申明
Python運算符和表達式
賦值運算符=
運算符 | 名稱 | 說明 | 實例 |
+ | 加 | 對象相加 | 8+5返回13;‘a’+'b'返回‘ab’ |
- | 減 | 兩數相減 | 6-6返回0;-8表示負數-8 |
* | 乘 | 數相乘或重複多次 | 5*3返回15;‘a’*3返回‘aaa’ |
/ | 除 | 兩數相除 | 5/3返回1;5/2.0返回2.5 |
** | 冪 | x**y返回x的y次冪 | 5**3返回125 |
% | 取餘 | 返回餘數 | 10%3返回1 |
// | 取整 | 返回商的整數部分 | 5//3.0返回2.0 |
運算符 | 名稱 | 說明 | 實例 |
> | 大於 | a>b,返回a是否大於b | 6>5返回True |
< | 小於 | a<b,返回a是否小於b | 6<5返回False |
<= | 小於等於 | 包含小於和等於,滿足一個即可 | 6<=5,返回False |
>= | 大於等於 | 包含大於和等於,滿足一個即可 | 6>=5,返回True |
== | 等於 | 比較兩個對象是否相等 | a=5;b=6;a==b返回False |
<> or != | 不等於 | 比較兩個對象是否不相等 | a=5;b=6;a!=b返回True |
運算符 | 說明 |
not | 邏輯‘非’ |
and | 邏輯‘和’ |
or | 邏輯‘或’ |
Python優先級
只需要記住()最高即可,別的需要時再查。
Python中列表的操作【此處只講解列表,元組暫時不做說明】
列表方法 | 說明 |
append(obj) | 在列表末尾加對象obj |
extend(ite) | 在列表的末尾加ite元素 |
pop([index]) |
指定index移除的元素,如果不指定index則移除最後一個 |
remove(value) | 刪除第一次出現的value |
reverse() | 對列表翻轉 |
sort() | 對列表排序 |
直接上代碼:
aa = [5,6,23,2]
aa.sort()
print aa
---------- Python ----------
[2, 5, 6, 23]
Output completed (0 sec consumed) - Normal Termination
#!/user/bin/python
#-*-coding:UTF-8-*-
list = ['apple','peach','banana']
print list #輸出列表
print list[2] #打印列表中的第三個元素
list.append('pear') #在列表末尾加pear元素
print list
list.insert(2,'milk') #在列表第三個元素前面插入一個元素milk
print list
list.remove('apple') #去掉元素apple
print list
print list.pop() #取出最後一個元素並打印出來最後一個元素,只有pop可以返回取出的元素
print list 打印取出後剩餘的元素
---------- Python ----------
['apple', 'peach', 'banana']
banana
['apple', 'peach', 'banana', 'pear']
['apple', 'peach', 'milk', 'banana', 'pear']
['peach', 'milk', 'banana', 'pear']
pear
['peach', 'milk', 'banana']
Output completed (0 sec consumed) - Normal Termination
列表的訪問和切片
看代碼一目瞭然
#!/user/bin/python
#-*-coding:UTF-8-*-
list = ['apple','peach','banana','pear']
print list #輸出列表
print list[-2]
print list[1:-1]
print list[-3:-2]
print list[:]
---------- Python ----------
['apple', 'peach', 'banana', 'pear']
banana
['peach', 'banana']
['peach']
['apple', 'peach', 'banana', 'pear']
Output completed (0 sec consumed) - Normal Termination
結構化程序設計
控制語句包括:
順序結構
循環結構
條件語句
條件語句
情形1:(if...else)
if (expression):
sentence1
else:
sentence2
以上如果expression爲True,則執行語句sentence1,否則執行sentence2.
情形2:(if...elif...else)
if (expression1):
sentence1
elif (expression2):
sentence2
else:
sentence3
以上如果expression1爲True,則執行語句sentence1,否則判斷expression2是否爲True,如果爲真則執行sentence2;
如果都爲False,則執行sentence3。
注:在if和else之間可以有多個elif
控制檯輸入函數input() 和 raw_input()
input()函數只支持數字或者表達式,不支持字符串的輸入,函數語句爲:
input ('prompt') ->value
參數prompt爲提示用戶輸入信息,返回數字類型的值。
raw_input()函數返回字符串類型的,函數語句爲:
raw_input ('prompt') ->string
參數prompt爲提示用戶輸入信息,返回字符串類型的值。
使用int()和float()可以對輸入的數據類型進行轉化。
循環語句(while,for...in)
while語句還可以和else一起搭配使用,也可以單獨使用。
while (expression):
...
else:
...
當while最後一次循環結束的時候,將執行else語句。
for...in循環
for..in 通常用於遍歷某個集合,訪問集合中的每一個元素。
for var in set:
...
else:
...
每執行一次從set中取出一個值傳給var。
break和continue
如果在程序中希望終止某一程序語句,可以使用continue或者break,其中break語句是終止整個循環,下次不再循環,而continue是指終止本次循環,進入下一個循環。
實例:
#!/user/bin/python
#-*-coding:UTF-8-*-
#break示例
a=1
while a<10:
print 'this is %s small than 10'%a
a+=1
break
print '只執行一次,徹底跳出了'
print 'break威力好大啊!'
---------- Python ----------
this is 1 small than 10
break威力好大啊!
Output completed (0 sec consumed) - Normal Termination
#continue示例
#!/user/bin/python
#-*-coding:UTF-8-*-
a=1
while a<10:
print 'this is %s small than 10'%a
a+=1
continue
print '只執行一次,徹底跳出了'
print 'break威力好大啊!'
---------- Python ----------
this is 1 small than 10
this is 2 small than 10
this is 3 small than 10
this is 4 small than 10
this is 5 small than 10
this is 6 small than 10
this is 7 small than 10
this is 8 small than 10
this is 9 small than 10
break威力好大啊!
Output completed (0 sec consumed) - Normal Termination
源代碼包的組成
一個源代碼包中包含多個模塊,一個模塊中包含多個函數或類,一個類中可能又包含子類以及若干個函數。
函數
除了內置的函數之外,還可以自定義函數。
定義函數使用的關鍵字def,形式爲:
def 函數名(參數1[=默認值1],參數2[=默認值2],...):
...
return expression
函數名通常是以字母或者下劃線開始,後面跟字母或者下劃線數字。
函數中的參數可以有一個或者多個,所有的參數放在()中,每個參數之間用,隔開。
函數的形參和實參
()裏面的參數代表形式參數,簡稱形參,與形式參數相對應的參數爲實參。
注:形式參數和實際參數的順序必須一一對應,但是當形式參數中給定默認值的時候,順序可以不一致。
示例:
#!/user/bin/python
#-*-coding:UTF-8-*-
#該函數的作用是求解兩個加數的和
def sum (a,b): #a,b爲形式參數
add = a+b
print add
sum(99,100) #調用sum函數,其中99,100爲實際參數,a=99,b=100
---------- Python ----------
199
Output completed (0 sec consumed) - Normal Termination
#指定默認參數的情況下
#!/user/bin/python
#-*-coding:UTF-8-*-
def sum (a,b=99):
add = a+b
print add
sum(100)
---------- Python ----------
199
Output completed (0 sec consumed) - Normal Termination
注意:對於形式參數的排序,需要將沒有賦默認值的參數放在給定初始值的形式參數前面,即def sum(a,b=99):是正確的,def sum(a=99,b):是不合理的。
函數的返回值
函數的返回用return語句,後面可以跟具體的變量或者表達式,如果return後面沒有返回值,則表示返回值爲None。
None作爲Python語言中的對象,不屬於數字也不屬於字符串類型。
示例:
def sum (a,b=99):
add = a+b
return add #返回值
ad = sum(1000)
print ad
---------- Python ----------
1099
#如果不設置返回值
def sum (a,b=99):
add = a+b
#return add
ad = sum(1000)
print ad
---------- Python ----------
None
#以上代碼可以等效爲:
#!/user/bin/python
#-*-coding:UTF-8-*-
def sum (a,b=99):
add = a+b
return
ad = sum(1000)
print ad
---------- Python ----------
None
遞歸函數
遞歸函數簡單的說就是自己調用自己的函數。
遞歸函數分爲兩個過程:
1、遞推:函數調用自己;
2、迴歸:函數從後向前返回的過程。遞歸結束後再按照相反的順序逐級返回。
示例:求階乘
遞歸實現過程如下圖所示:
源代碼:
#!/user/bin/python
#-*-coding:UTF-8-*-
def factorial(n):
if n==0:
return 1
else:
return n*factorial(n-1)
a = factorial(10)
print '10的階乘是:',a
---------- Python ----------
10的階乘是: 3628800
lambda函數
lambda的功能是創建匿名函數。
之前所介紹的函數,函數名就是函數的標識符,但是匿名函數的標識符和函數名之間沒有綁定,只是通過變量和表達式進行構建函數,不適用條件語句和循環語句,所以lambda函數也稱爲表達式函數。
格式如下:
lambda 變量1,變量2,...:expression
其中變量1和變量2...用計算表達式expression
lambda函數和普通函數不同點就是缺少函數名,變量的後面同樣有冒號;
示例:
#!/user/bin/python
#-*-coding:UTF-8-*-
sum = lambda x,y:x+y
print sum(52,656)
---------- Python ----------
708
Gernerator
函數
Generator函數的定義格式:
#!/user/bin/python
#-*-coding:UTF-8-*-
def 函數名(形式參數):
...
yield expression
返回的關鍵字爲yield,他和return的不同點是:
return從函數返回數據項後程序終止執行,但是yield返回之後仍然按照順序向前執行。
map
函數
map()函數可以對多個序列中的每個元素執行相同的操作,並將計算結果組成一個列表。map函數示例如下:
#!/user/bin/python
#-*-coding:UTF-8-*-
def five(x):
return x**5
print map(five,range(2,5))
---------- Python ----------
[32, 243, 1024]
面向對象編程
將函數和語句結合起來進行程序設計,通常稱爲面向過程編程;
將數據和功能結合起來進行編程,稱爲面向過程的程序設計。
面向對象編程已經成爲程序設計的主流,它主要包括:類、對象、方法、屬性以及繼承。
類和對象
類是對象的抽象,對象是類的實例化。
下圖表示類、對象和屬性之間的關係:
定義類
class class_name:
...
類可以將需要的變量和函數組合在一起,這個過程稱爲封裝。
示例:
#!/user/bin/python
#-*-coding:UTF-8-*-
#!/user/bin/python
#-*-coding:UTF-8-*-
class Student:
print '定義一個學生的類'
def age (self):
print 25
def name (self,name='chengcheng'):
print 'name:',name
stu1 = Student()
stu1.age()
stu1.name()
stu2 = Student()
stu2.age()
stu2.name(name='dongdong')
---------- Python ----------
定義一個學生的類
25
name: chengcheng
25
name: dongdong
以上程序定義了一個學生的類,該類中含有兩個屬性age和name,對該類進行實例化stu1和stu2,由於name屬性中默認name=‘chengcheng’,所以stu1.name()爲chengcheng;第二個實例stu2給name賦值爲‘dongdong’,所以stu2.name(name='dongdong')的輸出結果爲dongdong。
類的屬性
根據作用範圍分類:包括私有屬性和公有屬性。
私有屬性:該類之外的函數不能調用的屬性;
公有屬性:該類之外的函數可以調用的屬性,表示方法:函數、方法或者屬性的名字不是兩個下劃線開始。
根據實例與靜態分類:包括實例屬性和靜態屬性。
實例屬性:以self作爲前綴的屬性。
靜態屬性(靜態變量):類可以直接調用靜態變量,但是實例化對象卻不能調用靜態變量。
實例:
#!/user/bin/python
#-*-coding:UTF-8-*-
#!/user/bin/python
#-*-coding:UTF-8-*-
class Student:
height = 170 #類屬性
def __init__ (self):
self.age = 20 #實例屬性
comefrom = '中國' #局部變量
if __name__=="__main__":
print Student.height
stu1 = Student()
print stu1.age
stu2=Student()
print stu2.age
---------- Python ----------
170
20
20
訪問私有屬性的方法:(慎用,這種方法可以任意改變實例屬性的值,存在數據安全性問題,通常只用於程序開發階段的測試和調試)
instance_classname__attribute
instance表示實例化對象,classname表示類,attribute表示私有屬性。
實例:
#!/user/bin/python
#-*-coding:UTF-8-*-
#!/user/bin/python
#-*-coding:UTF-8-*-
#!/user/bin/python
#-*-coding:UTF-8-*-
#!/user/bin/python
#-*-coding:UTF-8-*-
class Student:
height = 170 #類屬性
def __init__ (self):
self.__age = 20 #實例屬性
if __name__=="__main__":
stu1 = Student()
print stu1._Student__age
類的方法
類的方法和類的屬性一樣,包括共有方法和私有方法。私有方法不能被該類之外的其他函數調用,也不能被外部類或者函數調用。
Python可以使用staticmethod()函數或者@staticmethod將普通函數轉換爲靜態方法,靜態方法相當於全局函數,沒有與類的實例綁定。
類的常用內置方法
子類
Python語言中允許使用子類。例如人由頭、身子、腿等部位組成,因此可以設計出人、頭、身子、腿等幾個類,但是又由於頭、身子、腿只是人的一部分,因此可以將這些類放在人這個大類的內部,這就是子類。調用子類的方法:
1、直接使用外部類來調用內部的子類,生成子類的實例,在調用子類的方法。
obj_name = outclass_name.inclass__name()
obj_name.method()
obj_name表示子類的實例,outclass_name表示外部類的名字,inclass_name表示子類的名字,method表示子類的方法。
2、先對類進行實例化,再實例化內部類,最後調用內部類的方法。
out_name = outclass_name() #out_name外部類的實例
in_name = outclass_name.inclass_name() #內部類的實例
in_name.method()
繼承、多態、異常處理等內容此處不做介紹,需要時在查相關資料!
差不多就這麼多吧,祝大家國慶節快樂!明天開溜!!!