ABAQUS二次開發之Python基礎

目錄

Python註釋的合理使用

Python空行的合理使用

模塊

 Python數據類型

列表的訪問和切片

結構化程序設計

函數

面向對象編程


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'
Python轉義字符和含義
轉義字符 含義 轉義字符 含義
\' 單引號 \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()

 繼承、多態、異常處理等內容此處不做介紹,需要時在查相關資料!

差不多就這麼多吧,祝大家國慶節快樂!明天開溜!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章