python某些语句的用法

本文介绍了Python中的一些实用编程技巧,包括使用with语句进行文件操作、异常处理、图像处理、NumPy数组操作、稀疏矩阵处理及元类的应用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

with open as

#有一些任务,可能事先需要设置,事后做清理工作,譬如打开、关闭文件,不用with语句时写成:
file = open("/tmp/foo.txt")
data = file.read()
file.close()
#或者可以加入对异常的处理:
file = open("/tmp/foo.txt")
try:
    data = file.read()
finally:
    file.close()
#但是显冗长,用with语句可以很好得解决

with open("D:/coding/xxx.csv","r") as f:
    df=pd.read_csv(f)

try语句

a=10
b=0
c=a/b
print "done"
#如果不用try,到计算c步时便会报错中断,导致后一条print语句未执行;

#我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except
try:
    c=a/b
    print c
except ZeroDivisionError,e:#e是这个错误的实例名,错误类型可以是某个,也可以是几个(X,X),e
    print e.message
#else语句可加可不加,表示若没有出现该错误则操作
else:
    print "no error"
print "done"

#无论异常是否发生,在程序结束前,finally中的语句都会被执行
try:
    print a/b
finally:
    print "always excute"

open()

f=open('/tmp/hello','w')
#open(路径+文件名,读写模式)
#读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式如:rb,wb,r+b等
"""
rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
w     以写方式打开,
a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )

第二个参数默认是'r'只读的;
"""

image

合成 Image.blend(i1,i2,a)/Image.composite(i1,i2,mask)
缩略图 thumbnail(size,filter=None)
Modifies in-place,Preserves aspect ratio

myImage.thumbnail ((128,128),Image.ANTIALIAS)```
剪切 crop(bbox)

bounds = (100, 100, 400, 400)
cutoutIm = myImage.crop (bounds)“`
粘贴 paste(i2,where,mask=None)/paste(color,box=None,mask=None)
旋转 rotate(theta)
rotated around its center
翻转旋转 transpose(method)
ROTATE_90/180/270(clockwise), FLIP_TOP_BOTTOM(horizontal), FLIP_RIGHT_LEFT(vertical)

fixedIm = myImage.transpose (ROTATE_90)

numpy

x = np.eye(3).astype(int) #生成一个int型的3阶对角阵/默认是float64;

sorted

a=sorted(a, key=lambda x:x[1]) #以元素第2位排序;

List extend()

#在列表后面添上另一个list的元素;
aList = [123, 'xyz', 'zara', 'abc', 123]
bList = [2009, 'manni']
aList.extend(bList)

print ("Extended List : ",aList)

#Extended List :  [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']

csc稀疏矩阵

#造一个全0的稀疏阵;
csc_matrix((M, N), [dtype])
#造一个非零数的行列数据下标一一对应的;a[row_ind[k], col_ind[k]] = data[k]
csc_matrix((data, (row_ind, col_ind)), [shape=(M, N)])
#造一个非零数的行列数据下标,列标用的写法是每个列标的个数;比如[0,2,3,6]就是[0,0,1,2,2,2]
csc_matrix((data, indices, indptr), [shape=(M, N)])

sys()、模块

'''sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称,例如:
运行python3 hello.py获得的sys.argv就是['hello.py'];
运行python3 hello.py Michael获得的sys.argv就是['hello.py', 'Michael]。
类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量;
类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;

自己写的模块要放在当前目录下;
'''

a=sys.argv

元类meta class/abc

我写一个模块导入某个类Hello时,这个Hello的type实际是一个type,也就是说,我可以通过type()直接构造一个类,不一定需要用class xx(object)的定义;

Hello = type('Hello', (object,), dict(hello=fn)) # 创建Hello class
#type()传入类名、继承的父类集合(支持多重继承,如果是单个要用tuple的单元素写法)、class的方法名称与函数绑定;

除了type()方法,还可以用metaclass;
metaclass→class→实例

lambda x

lambda x:x[0]
#对于嵌套if的语句
expression1 if A else expression2
#含义是 if A:expression1 else: expression2

print()不换行

print(1,end="")#end参数
print(3)
'''
output:
13
'''

find()

str.find(str, beg=0, end=len(string))
'''
beg=开始查找的位置
end=结束查找的位置
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值