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 ----------




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 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

源代码包的组成

一个源代码包中包含多个模块,一个模块中包含多个函数或类,一个类中可能又包含子类以及若干个函数。

ABAQUS二次开发之Python基础_第1张图片

函数

除了内置的函数之外,还可以自定义函数。

定义函数使用的关键字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、回归:函数从后向前返回的过程。递归结束后再按照相反的顺序逐级返回。

示例:求阶乘

递归实现过程如下图所示:

ABAQUS二次开发之Python基础_第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]

面向对象编程

将函数和语句结合起来进行程序设计,通常称为面向过程编程;

将数据和功能结合起来进行编程,称为面向过程的程序设计。

面向对象编程已经成为程序设计的主流,它主要包括:类、对象、方法、属性以及继承。

类和对象

类是对象的抽象,对象是类的实例化。

下图表示类、对象和属性之间的关系:

ABAQUS二次开发之Python基础_第3张图片

定义类

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将普通函数转换为静态方法,静态方法相当于全局函数,没有与类的实例绑定。

类的常用内置方法

ABAQUS二次开发之Python基础_第4张图片

 子类

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()

 继承、多态、异常处理等内容此处不做介绍,需要时在查相关资料!

差不多就这么多吧,祝大家国庆节快乐!明天开溜!!!

你可能感兴趣的:(ABAQUS二次开发之Python基础)