python居中对齐代码end_python小技巧--优雅代码篇

枚举 -- enumerate枚举列表

# 一般做法

i = 0

for item in iterable:

print i, item

i += 1

# 较好做法

for i, item in enumerate(iterable): # 默认i从0开始

print i, item

# 或者

for i, item in enumerate(iterable, 1): # 指定从1开始

print i, item

三元运算

三元运算是if-else语句的快捷操作,即条件运算。可以让代码更紧凑

x, y = 25, 55

small = x if x < y else y

python中判断对象是否相等的方法区别

python中对象包含3个要素:id、type、value

id 用来标识唯一对象;type标识对象类型;value设置对象值

is 通过id来判断,是否为同一对象

== 通过值来判断,即a对象的值是否和b对象值一样。默认调用 eq方法

隐藏特性 --函数unpack

便于多参调用时,无需关心参数顺序

def foo(x, y):

print x, y

alist = [1, 2]

adict = {'x': 1, 'y': 2}

foo(*alist) # 1, 2

foo(**adict) # 1, 2

隐藏特性 --链式比较操作符

x = 3

1 < x < 5 # True

4 > x >= 3 # True

隐藏特性 --字典的get方法

提高容错性

adict = {}

adict.get('a', 'default') # 建值'a'不存在时返回默认值'default'

隐藏特性 --带关键字的格式化

增强可读性

# 常用格式化方式

print("Hello %(name)s." % {'name': 'Taitan"})

# 更新的格式化方式

print("Hello {name}.".format(name="Taitan"))

隐藏特性 --切片操作的步长参数

可用-1 来反转链表,生成一个新的列表

# 正常切片

a = [1, 2, 3, 4, 5]

a[::2] # [1, 3, 5]

a[::-1] # [5, 4, 3, 2, 1],反转

# a[start_index: end_index, step]

隐藏特性 --显示申明一个集合

# 例子:

set_1 = {1, 2, 3}

# 或者

set_2 = set([1, 2, 3])

隐藏特性 -- instance可接受一个元组

isinstance(1, (float, int)) #判断是否为float或int类型

装饰器

一个为已有函数或类添加功能的方法,而不改变原函数或类的行为

上下文管理器(ContextLib)

上下文管理器涉及到两个方法。

enter方法: 当执行流进入with代码块时,enter方法将执行。并且它将返回一个可供上下文使用的对象。

exit方法:当执行流离开with代码块时,exit方法被调用,它将清理被使用的资源。

# 例子1:

import time

class demo:

def __init__(self, label):

self.label = label

def __enter__(self):

self.start = time.time()

def __exit__(self, exc_ty, exc_val,

exc_tb):

end = time.time()

print('{}: {}'.format(self.label, end - self.start))

with demo('counting'):

n = 10000000

while n > 0:

n -= 1

# 例子2,利用contextlib.contextmanager装饰器:

from contextlib import contextmanager

import time

@contextmanager

def demo(label):

start = time.time()

try:

yield

finally:

end = time.time()

print('{}: {}'.format(label, end - start))

with demo('counting'):

n = 10000000

while n > 0:

n -= 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值