Python基础课件及实例详解
- 格式:ppt
- 大小:1.30 MB
- 文档页数:9


知识图谱基础之三元组:PythonRDFLib实例⼊门本⽂转⾃,该页可在线运⾏
本节将简要地带您⼊门Python中的RDF操作库rdflib,三元组是⼀个在知识图谱中重要的基础性概念,通过在线安装该库,并在线运⾏两个⽰
例,来理解该库的使⽤。理解本节的前提,您需要有Python基础,RDF基础。
什么是RDF?
RDF是W3C的资源描述框架(RDF)。RDF提供了⼀种表达数据图并与其他⼈(可能更重要的是与机器)共享的标准⽅法。由于它是W3C“推
荐”(通过任何其他措施得出的⾏业标准),因此围绕RDF出现了⼤量⼯具和服务。
RDF的历史可以追溯到1990年,当时 蒂姆·伯纳斯·李(Tim Berners-Lee)撰写了⼀项提案,⽂档之间存在不同类型的链接,这使超⽂本更易于
计算机⾃动理解。输⼊的链接未包含在第⼀个HTML规范中,但在元内容框架(Meta Content Framework(MCF)),⽤于描述元数据和组织
Web的系统,由 Ramanathan Guha于1990年代后期在Apple和Netscape任职时,由Tim Bray开发了XML表⽰形式。W3C⼀直在寻找通⽤的
元数据表⽰形式,并且MCF中的许多想法都在1999年的第⼀个RDF W3C建议书中找到了⾃⼰的⽅法。此后,对标准进⾏了修订,如今的软
件和⼯具反映了这些改进。
安装RDFLib
RDFLib是开源的,并在存储库中维护 。PyPi列出了当前版本和先前版本
The best way to install RDFLib is to use pip3
!pip3 install rdflib -i https:///simple/
它是如何⼯作
该软件包使⽤了各种Python习惯⽤法,这些惯⽤法提供了将RDF引⼊以前从未使⽤过RDF的Python程序员的合适⽅法。
RDFLib公开的⽤于RDF的主要接⼝是 。
Python简单基础⼩程序的实例代码
1 九九乘法表
1
2
3
4
5
6
7for i in range(9):#从0循环到8
i += 1#等价于 i = i+1
for j in range(i):#从0循环到i
j += 1
print(j,'*',i,'=',i*j,end = ' ',sep='') # end默认在结尾输出换⾏,将它改成空格 sep 默认 j,'*',i,'=',i*j 各元素输出中间会有空格 print()#这⾥作⽤是输出换⾏符
1
2
3
4
5
6
7
8i = 1
while i <= 9:
j = 1
while j <= i:
print("%d*%d=%d" % (j,i,i*j),end=' ') # 格式化输出
j += 1
i += 1 print()
2 登录程序
登录程序,有三次输⼊账号、密码的机会,错误三次账号锁定
1
2
3
4
5
6
7
8
9
10
11
12
13
14user = 'hello world'
paswd = 123456
username = input("请输⼊⽤户名:")
password = input("请输⼊密码:")
for i in range(3):
if username == user and int(password) == paswd: #判断⽤户名和密码是否都匹配 print("欢迎您的到来") break elif i < 2:
username = input("请输⼊⽤户名:")
password = input("请输⼊密码")
elif i == 2: print("账户已锁定") break
3,购物车程序
功能:
1,输⼊余额
2,显⽰商品列表
3,输⼊要购买的东西
4,判断是否有能⼒购买
5,是否继续
6,输出已购买的商品和余额
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19shop_car = []#⽤来存放购买的商品
goods = { 1:['⼿机',2500], 2:['电脑',3500], 3:['⾃⾏车',4500], 4:['宝马',20000]}#商品列表while True:
版本:A/0页码:1/6########################################Fundamentschwingungsstudie####nurgeeignetfuerABAQUS6.4-1####erstelltvonD.Chenin2009#########################################开头的为注释行.第一步,建立建模环境,这一步中py将从abaqus中导入建模所需的所有程序模块.frompartimport*接下来定义草图环境mdb.models['Model-1'].Sketch(name='__profile__',sheetSize=200.0)mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(constructionGeometry=ON,decimalPlaces=2,dimensionTextHeight=5.0,grid=ON,gridFrequency=2,gridSpacing=5.0,sheetSize=200.0,viewStyle=AXISYM)上面的设定为大小200*200,格栅间距为5,文字标注高度为5.mdb.models['Model-1'].sketches['__profile__'].ObliqueConstructionLine(point1=(0.0,-100.0),point2=(0.0,100.0))本句语句设定轴对称模型的对称轴线位置mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(0.0,0.0),point2=(40.0,-40.0))该语句绘制矩形,从点0,0至点40,-40mdb.models['Model-1'].Part(dimensionality=AXISYMMETRIC,name='Boden',type=DEFORMABLE_BODY)定义模型为轴对称,名字为boden,为可变形体mdb.models['Model-1'].parts['Boden'].BaseShell(sketch=mdb.models['Model-1'].sketches['__profile__'])delmdb.models['Model-1'].sketches['__profile__']绘图完成不要忘记收回建模环境所占的内存第二节,材料定义frommaterialimport*fromsectionimport*从ABAQUS提供的接口中导入材料库和组件库mdb.models['Model-1'].Material(name='Boden')定义材料名版本:A/0页码:2/6mdb.models['Model-1'].materials['Boden'].Density(table=((2000.0,),))定义材料密度mdb.models['Model-1'].materials['Boden'].Elastic(table=((210546.3,0.3333),))定义材料线弹性模量和泊松比,其它的材料,如弹塑性,粘弹性材料均对应不同的对象函数.mdb.models['Model-1'].HomogeneousSolidSection(material='Boden',name='boden',thickness=1.0)mdb.models['Model-1'].parts['Boden'].assignSection(region=Region(faces=mdb.models['Model-1'].parts['Boden'].faces[0:1]),sectionName='boden')设定组件为坐标无关性材料,厚度为单位厚度,并将属性附给所用的组件第三节,装配fromassemblyimport*首先,导入装配所用到的对象mdb.models['Model-1'].rootAssembly.DatumCsysByThreePoints(coordSysType=CYLINDRICAL,origin=(0.0,0.0,0.0),point1=(1.0,0.0,0.0),point2=(0.0,0.0,-1.0))定义坐标类型为柱坐标,原点0,0,0,另外两个为单位向量,确定该坐标轴的方向.mdb.models['Model-1'].rootAssembly.Instance(name='Boden-1',part=mdb.models['Model-1'].parts['Boden'])生成草图对像boden的实体,名字叫Boden-1.无偏移插入frompartimport*frommaterialimport*fromsectionimport*fromassemblyimport*第四节,定义分析步fromstepimport*象其它步一样,先导入分析步要用到的模块mdb.models['Model-1'].ImplicitDynamicsStep(initialInc=0.005,maxNumInc=1024,name='Step-1',noStop=OFF,nohaf=OFF,previous='Initial',timeIncrementationMethod=FIXED,timePeriod=5.12)定义对动力隐式分析,时长为0.005*1024=5.12个时间单位,前一步为Initialmdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(variables=('U版本:A/0页码:3/6',))定义输出到ODB文件的数据,这里只定义了位移输出mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(frequency=1)定义位移输出的频率为每步都输出mdb.models['Model-1'].steps['Step-1'].Restart(frequency=1,overlay=ON)定义重启动析,每一步记录,只记录最后一次的正确状态第五节,定义接触frominteractionimport*依然是先导入所用的模块mdb.models['Model-1'].rootAssembly.PartitionEdgeByParam(edges=(mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[3],),parameter=0.975)在上部即第3面的97.5%的地方设定一个点,用于定义接触mdb.models['Model-1'].ContactProperty('IntProp-1')定义接触属性名mdb.models['Model-1'].interactionProperties['IntProp-1'].TangentialBehavior(formulation=FRICTIONLESS)mdb.models['Model-1'].interactionProperties['IntProp-1'].NormalBehavior(allowSeparation=OFF,augmentedLagrange=OFF,pressureOverclosure=HARD)定义接触特性,为无摩擦硬接触不允许分开mdb.models['Model-1'].SurfaceToSurfaceContactStd(adjustMethod=NONE,createStepName='Initial',interactionProperty='IntProp-1',master=Region(side1Edges=mdb.models['Model-1'].rootAssembly.instances['fun-1'].edges[0:1]),name='Int-1',slave=Region(side1Edges=mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[4:5]),sliding=FINITE)这一句是建立接触对,分别为两个面上的一条边,这里边的定义由ABAQUS内定,具体可以查阅参考手册.第六节,荷载边界定义fromloadimport*mdb.models['Model-1'].PeriodicAmplitude(a_0=1.0,data=((3.0,1.1),(3.2,1.7)),frequency=2.5,name='Fourier',start=0.0,timeSpan=STEP)版本:A/0页码:4/6定义fourier级数表示的荷载mdb.models['Model-1'].Pressure(amplitude='Fourier',createStepName='Step-1',distribution=UNIFORM,magnitude=50.0,name='Load-1',region=Region(side1Edges=mdb.models['Model-1'].rootAssembly.instances['fun-1'].edges[2:3]))定义压强,设定加载的分析步,区域及放大系数mdb.models['Model-1'].DisplacementBC(amplitude=UNSET,createStepName='Initial',distribution=UNIFORM,localCsys=None,name='BC-1',region=Region(edges=mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[0:1]+mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[2:3]+mdb.models['Model-1'].rootAssembly.instances['fun-1'].edges[3:4]),u1=SET,u2=UNSET,ur3=UNSET)mdb.models['Model-1'].DisplacementBC(amplitude=UNSET,createStepName='Initial',distribution=UNIFORM,localCsys=None,name='BC-2',region=Region(edges=mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[1:2]),u1=UNSET,u2=SET,ur3=UNSET)设定边界位移为0的边界条件,注意语法中对象相加的方法.第七节,网格划分控制frommeshimport*importmesh导入网格划分模块elemType1=mesh.ElemType(elemCode=CAX8,elemLibrary=STANDARD,secondOrderAccuracy=OFF,hourglassControl=STIFFNESS,distortionControl=OFF)elemType2=mesh.ElemType(elemCode=CAX6M,elemLibrary=STANDARD)a1=mdb.models['Model-1'].rootAssemblyf1=a1.instances['Boden-1'].facesfaces1=f1[0:1]regions=(faces1,)a1.setElementType(regions=regions,elemTypes=(elemType1,elemType2))定义其中一个物体的网格为二次8结点单元,如果其中有无法划分成四边形单元的情况,则用三角形二次6结点单元.elemType1=mesh.ElemType(elemCode=CAX4,elemLibrary=STANDARD)
Python定时任务APScheduler的实例实例详解
APScheduler ⽀持三种调度任务:固定时间间隔,固定时间点(⽇期),Linux 下的 Crontab 命令。同时,它还⽀持异步执⾏、后台执⾏调
度任务。
⼀、基本架构
1. 触发器 triggers:设定触发任务的条件
2. 描述⼀个任务何时被触发,按⽇期或按时间间隔或按 cronjob 表达式三种⽅式触发
3. 任务存储器 job stores:存放任务,可以放内存(默认)或数据库
4. 注:调度器之间不能共享任务存储器
5. 执⾏器 executors:⽤于执⾏任务,可设定执⾏模式
6. 将指定的作业提交到线程池或者进程池中运⾏,任务完成通知调度器触发相应的事件。
7. 调度器 schedulers:将上⽅三个组件作为参数,创建调度器实例执⾏。
协调三个组件的运⾏。
⼆、调度器组件(schedulers)
BlockingScheduler 阻塞式调度器
调度程序是进程中唯⼀运⾏的进程,调⽤start函数会阻塞当前线程,不能⽴即返回。
1
2
3
4
5
6
7from apscheduler.schedulers.blocking import BlockingScheduler
import time
scheduler = BlockingScheduler()
def job1():
print "%s: 执⾏任务" % time.asctime()scheduler.add_job(job1, 'interval', seconds=3)scheduler.start()
BackgroundScheduler 后台调度器
当前线程不会阻塞,调度器后台执⾏
1
2
3
4
5
6
7
8from apscheduler.schedulers.background import BackgroundScheduler
import time
scheduler = BackgroundScheduler()