python笔记

2024-04-24

python笔记(精选6篇)

篇1:python笔记

python中调用PyInitialize函数来完成运行环境初始化。在初始化函数中,会创建进程对象interp以及线程对象并在进程对象和线程对象建立关联,并设置当前运行线程对象为刚创建的线程对象。接下来是类型系统初始化,包括int,str,bool,list等类型初始化,这里留到后面再慢慢分析。然后,就是另外一个大头,那就是系统模块初始化。进程对象interp中有一个modules变量用于维护所有的模块对象,modules变量为字典对象,其中维护(name, module)对应关系,在python中对应着sys.modules。

篇2:python笔记

在__builtin__模块初始化中,md_dict中存储的内容就包括内置函数以及系统类型对象,如len,dir,getattr等函数以及int,str,list等类型对象。正因为如此,我们才能在代码中直接用len函数,因为根据LEGB规则,我们能够在__builtin__模块中找到len这个符号。几乎同样的过程创建sys模块以及__main__模块。创建完成后,进程对象interp->builtins会被设置为__builtin__模块的md_dict字段,即模块对象中的那个字典字段。而interp->sysdict则是被设置为sys模块的md_dict字段。

sys模块初始化后,其中包括前面提到过的modules以及path,version,stdin,stdout,maxint等属性,exit,getrefcount,_getframe等函数。注意这里是设置了基本的sys.path(即python安装目录的lib路径等),第三方模块的路径是在site模块初始化的时候添加的。

需要说明的是,__main__模块是个特殊的模块,在我们写第一个python程序时,其中的__name__ == “__main__”中的__main__指的就是这个模块名字。当我们用python xxx.py运行python程序时,该源文件就可以当作是名为__main__的模块了,而如果是通过其他模块导入,则其名字就是源文件本身的名字,至于为什么,这个在后面运行一个python程序的例子中会详细说明。其中还有一点要说明的是,在创建__main__模块的时候,会在模块的字典中插入(“__builtins__”, __builtin__ module)对应关系。在后面可以看到这个模块特别重要,因为在运行时栈帧对象PyFrameObject的f_buitins字段就会被设置为__builtin__模块,而栈帧对象的locals和globals字段初始会被设置为__main__模块的字典。

另外,site模块初始化主要用来初始化python第三方模块搜索路径,我们经常用的sys.path就是这个模块设置的了。它不仅将site-packages路径加到sys.path中,还会把site-packages目录下面的.pth文件中的所有路径加入到sys.path中。

下面是一些验证代码,可以看到sys.modules中果然有了__builtin__, sys, __main__等模块。此外,系统的类型对象都已经位于__builtin__模块字典中。

In [13]: import sysIn [14]: sys.modules[‘__builtin__‘].__dict__[‘int‘]Out[14]: intIn [15]: sys.modules[‘__builtin__‘].__dict__[‘len‘]Out[15]:In [16]: sys.modules[‘__builtin__‘].__dict__[‘__name__‘]Out[16]: ‘__builtin__‘In [17]: sys.modules[‘__builtin__‘].__dict__[‘__doc__‘]Out[17]: “Built-in functions, exceptions, and other objects.nnNoteworthy: None is the `nil‘ object; Ellipsis represents `...‘ in slices.”In [18]: sys.modules[‘sys‘]Out[18]:In [19]: sys.modules[‘__main__‘]Out[19]:

篇3:Python网络编程研究

现在已经进入移动互联网的时代,而这一切的基础是底层计算机网络和基于网络上的各自应用,应用之间进行通信依赖底层的网络模型。计算机网络模型是指由通信线路互相连接的许多自主工作的计算机构成的集合体,各个部件之间以何种规则进行通信。网络模型一般是指OSI 7层参考模型和TCP/IP 4层参考模型。模型如图1所示。

OSI(Open System Interconnect),即开放式系统互联,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的7层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),TCP/IP 4层模型是OSI 7层模型的一个简化实现。无论哪种模型,核心都是需要进行数据传输。数据传输层有两种协议:TCP和UDP,这两种协议都是面向连接的,其中TCP是可靠传输,UDP是不可靠传输。在网络上传输的数据称为数据包,它在应用层数据或报文按照一定事先规定好的规则整合的数据集合,实际操作包括组包(打包),数据包传送,然后对端解包。

网络通信的过程:

(1)建立连接。

(2)发送端把信息通过规定好的协议进行组包。

(3)数据包在网络上传输。

(4)在接收端按照规定好的协议把包进行解析,提取出对应的信息。

如图2所示。

2网络通信概念

2.1 TCP连接

TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它完成第四层传输层所指定的功能,不同主机的应用层之间经常需要可靠的、像管道一样的连接。通信的双方需要通过TCP 3次握手建立连接,如图3所示。

2.2 Socket编程

Socket编程是为了简化TCP/UDP通信而产生的面向程序员的技术。通常翻译为插座或套接字,是一个通信连接在本端的句柄(该句柄由本地操作系统分配和管理),建立Socket连接后通信双方通过本地的Socket句柄和对端通信。

一个Socket连接结构有如下5元组(协议、源IP地址、源端口、目的IP地址、目的端口),5元组中只要有一个参数不一样,连接就不一样。

建立连接前,服务器公布它的服务信息(类似于公布一个电话号码),服务器类似电话通话中的被叫,客户端类似于主叫。建立连接的过程是客户端(主叫)得知服务端的服务信息如IP和端口(被叫号码),这时客户端向服务器(服务器侦听被叫号码,实际上侦听某个服务端口)发起一个呼叫请求,服务器得到这个请求后,响应客户端以建立电话通路,同时分配本地的Socket号,建立连接后,对于通信的双方,每方都有一个本地的Socket句柄,后续数据交换(通话)双方都通过本地的Socket号和对端进行通信。而服务器继续侦听原先的服务端口以便接受新的请求。

3 Python Socket编程

3.1客户端通信

(1)创建一个本地的Socket,Socket句柄由本地os分配。

(2)调用Socket的Connect方法和远程服务器建立连接。

(3)建立连接后,客户端通过send和recv方法来和服务器进行通信。

(4)通信结束后,客户端调用close方法关闭连接。

3.2服务端通信

(1)创建用于侦听的socket对象,Socket句柄由本地os分配。创建时调用Socket构造函数,传入两个参数:familly、type,分别表示通信协议和Socket类型。对于TCP连接,用AF_INET和SOCK_STREAM(流套接字)。

(2)将刚初始化的Socket对象绑定到本地的一个地址上,地址包括本地IP和端口,如果端口被别的程序占用,将会报端口被占用错误,如果IP无效,也报错。

(3)调用listen函数开始侦听以接受客户端来的新连接请求。

(4)调用accept方法阻塞等待客户端连接到达,如果建立了新的TCP连接,则os分别新的本地连接Socket对象并通过accept返回给应用程序,后面应用程序通过该Socket对象和客户端进行通信。

(5)服务器通过调用send和recv方法,和客户端传输数据。

(6)数据传输结束后,服务器可以调用close方法主动关闭连接。如果是客户端主动关闭连接,服务端再recv数据时将得到空对象,这时也可以关闭连接(被动关闭)。

完整的客户端-服务端Socket通信过程如图4所示。

3.3客户端-服务端编程实例

服务端:

客户端:

上面的客户端-服务端例子是最简单的Socket网络编程例子,这个例子的优点是非常简单,通过例子对网络编程的过程有基本认识。缺点是服务器不支持多个客户端同时并发和服务器通信。

4结语

介绍了网络通信的基本模型和基本概念,重点介绍了基于Socket的编程过程,最后给出了对应的Python程序实现,并评价上面程序的优缺点。

摘要:介绍了网络通信的基础知识特别是TCP连接和Socket概念,介绍了在Python中进行Socket网络编程,开发了实际的客户端-服务器例子。

篇4:python笔记

【关键词】裂纹扩展,Python,扩展有限元。

【中图分类号】TJ06 【文献标识码】A 【文章编号】1672-5158(2013)03-0052-01

对于裂纹的扩展研究,主要从微观到宏观角度的出发,固体材料从变形到破坏,跨越了原子结构到宏观的9至11个尺度量级。裂纹尖端很小的区域内的应力、应变都是影响裂纹扩展的主要因素。因此从研究范围来看,跨尺度的宏细观研究相结合,正成为断裂力学研究方向。裂纹尖端区域内的微观上结构组织发生的变化和影响是当前断裂力学的研究前沿课题。从细观和宏观尺度上,研究各种材料的断裂、损伤、蠕变和腐蚀疲劳等方面的最新理论、实验研究方法及其工程应用。

1 python与ABAQUS运算方法

1.1 python汇编语言简介

Python语言是一种动态解释型编程语言,1989年由Guido van Rossum开发,并于1991年年初发表。Python语言功能强大、简单易学,支持面向对象编程(object-oriented programming),已逐渐受到越来越多的用于的关注。

Python语言主要有如下重要特征:

(1) 面向对象性(2)简单性(3)健壮性(4)可扩展性(5)动态性(6)内置的数据结构(7)跨平台性(8)强类型

1.2 python与ABAQUS运算方法

Abaqus脚本接口可以实现Abaqus/CAE中的所有功能,并在Python语言的基础上又扩展了一些新的对象类型。这些对象间的层次和关系组成了Abaqus 的对象模型。

Abaqus脚本接口对Python 语言进行了扩展,额外提供了大约500个对象模型,这些对象模型之间的关系比较复杂,大致将这写对象分为3 类:Session、Mdb 和Odb。如图1 所示

(3)

右端第一项可用于模型中所有节点;右端第二项只对形函数被裂纹内部切开的单元节点有效;右端第三项只对形函数被裂纹尖端切开的单元节点有效。

3.算例

3.1 模型建立及运算

以CT试件裂纹扩展为例,用python编程做裂纹扩展。主要分为以下几个步骤

(1)from part import * #第一步,建立建模

(2)from material import * #第二步,材料定义

编译完CT试件模型后对其进行材料的定义,使用缩减积分单元,材料为高强钢,其屈服强度为714MPa,抗拉强度844MPa。在程序中定义极限强度准则如下:

mdb.models['Model-1'].materials['Q690']. Maxps Damage Initiation(table=((844,),))

并定义其损伤和断裂准则,它是根据指数形式来定义的。

(3)from assembly import * #第三步,装配

(4)from mesh import * #第四步,网格划分控制

为了能画出整齐的网格,在画网格之前,先把试件分隔成块,并对其进行单独网格设置,网格的边缘不能与之前画的裂纹重合。

(5)from interaction import * #第五步,定义相互接触

该步骤主要用于定义裂纹和板件接触的定义,并定义试件孔与孔圆心耦合,以便于施加载荷。

(6)from step import * #第六步,定义分析步

步骤中定义静力加载,并定义输出,主要输出内容如下:

mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(va riables=( 'S','LE','U','RF','PHILSM','STATUSXFEM'))。

(7)from load import * #第七步,载荷边界定义

运算选用位移载荷,在上孔加载,下孔约束。

(8)计算任务生成并提交计算。

3.2. 运算结果与分析

提交完由Abaqus进行运算,其某一时刻的裂纹扩展云图如图2所示,图中可以看出网格整齐,基本为正方形网格,单元在内部开裂,裂纹沿着最大主应力方向扩展,其应变能随时间变化的曲线如图3所示。

图2 裂纹扩展云图 图3 应变能随时间变化曲线

参考文献:.

[1] 刘长虹,李洪升,彭军. 基于XFEM的裂纹扩展分析[J]. 上海工程科学技术大学学报,2010,24(3) : 218-220.

[2] 曹金凤. Python语言在Abaqus中的应用[M]. 北京:机械工业出版社,2011.8: 13-173

篇5:Python笔记之文件

2,读取文件

#open()读取文件data=open(‘file_name’) #打开一个文件print( data.redline, end=‘ ‘) #用readline()读取一个数据行data.seek(0) #回到文件起始位置for line in data print(line, end=‘ ‘)data.close() #关闭文件

读取文件的方式#1)按行读取

f = open(“file.txt”)while True: line = f.readline() if line: print line else: break;f.close()

#2)多行读取

f = open(‘file.txt’)lines=f.readlines() #readlines() 存下了f的全部内容for line in lines print line

#3)一次性读取read()

f = open(‘file.txt’)content = f.read()print contentf.close()

3,文件写入

#write(),writelines()写文件f = file(‘file.txt’, ‘w+’) #w+读写方式打开,先删除原来的,再写入新的内容line = [“hello ”, “world ”]f.writelines(li)f.close()#追加新内容f = file(‘hello.txt’, ‘a+’)content = “goodbye”f.write( content )f.close()

4,文件删除#需要使用 os 模块 和 os.path 模块#os模块的 open()和 file()函数和Python内建的用法不同

import osfile(‘hello.txt’, ‘w’)if os.path.exists(‘hello.txt’) os.remove(‘hello.txt’)

5,文件复制

#用read()和write()实现拷贝src = file(“hello.txt”, “r”)dst = file(“hello2.txt”,”w”)dst.write( src.read() )src.close()dst.close()#shutil模块 copyfile()函数#copyfile( src, dst) #文件复制shutil.copyfile(“hello.txt”, “hello2.txt”)#move( src, dst) #文件剪切,移动shutil.move(“hello.txt”, “../“) #移动到父目录下shutil.move(“hello2.txt”, “hello3.txt”) #移动+重命名

6,文件重命名

#修改文件名 os模块的rename()函数import osos.rename(“hello.txt”, “hi.txt”)#修改后缀名import sfiles = os.listdir(“.”)for filename in files: pos = filename.find(“.”) if filename[ pos+1 :] == “html”: newname = filename[ :pos+1] + “jsp” os.rename( filename, newname)

7,文件内容查找

#文件查找import ref1 = file(“hello.txt”, “r”)count = 0for s in f1.readlines() : li = re.findall(“hello”, s) #findall()查询变量s,查找结果存到li中 if len( li) >0 : count = count + li.count(“hello”)print count,”hello”f1.close()#文件替换f1 = file(“hello.txt”, “r”)f2 = file(“hello2.txt”, “w”)for s in f1.readlines(): f2.write( s.replace(“hello”, “hi”) )f1.close()f2.close()

8,文件比较#difflib模块用于序列,文件的比较

9,配置文件的访问#Python标准库的ConfigParser模块用语解析配置文件

10,文件和流

篇6:Python os模块学习笔记

一、os模块概述

Python os模块包含普遍的操作系统功能,例如文件的复制、创建、修改、删除文件及文件夹...

二、常用方法

1、os.listdir()  返回指定目录下的所有文件和目录名。

2、os.remove() 删除一个文件。

3、os.system() 运行shell命令。

4、os.path.split()  函数返回一个路径的目录名和文件名

5、os.path.isfile()和os.path.isdir()  函数分别检验给出的路径是一个文件还是目录,返回值分别为Ture或False

6、os.path.exists()   函数用来检验给出的路径是否存在,返回值分别为Ture或False。

7、os.path.getsize(name)  获得文件大小,如果name是目录返回0L

8、os.path.splitext()    分离文件名与扩展名

9、os.path.join(path,name)  连接目录与文件名或目录

10、os.path.basename(path)   返回文件名

11、os.path.dirname(path)    返回文件路径

12、os.walk(path)

该函数返回一个元组,该元组有3个元素,这3个元素分别表示每次遍历的路径名,目录列表和文件列表

os.walk()举例:

代码如下:

>>>import os

>>>for root, dirs, files in os.walk(“wd/chat”, topdown=False):

... for name in files:

... print(os.path.join(root, name)) #打印文件绝对路径

... for name in dirs:

... print(os.path.join(root, name)) #打印目录绝对路径 ...

实例:用python批量修改文件的扩展名:

代码如下:

import os

# 列出当前目录下所有的文件

files = os.listdir(“.”)

for filename in files:

portion = os.path.splitext(filename)

# 如果后缀是.txt

if portion[1] == “.pdb”:

# 重新组合文件名和后缀名

newname = portion[0] + “.dssp”

上一篇:幼儿园大班六一儿童节活动方案下一篇:言行心灵诗