1
2
3
4
5
|
def enumerate(seq, start=0):
n = start
for el in seq:
yield n, el
n += 1
|
1
2
|
while j < 10:
++j # j的值不会变化,因此为死循环(i+=1)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
for i in range (2,10):
for j in range(2,i):
if i % j == 0:
break
else: # 循环正常结束和循环条件不成立时被执行(break中断时不执行)
print(f'{i} is a prime num.')
try:
db.execute(sql)
excep DBError:
db.rollback()
else: # 无异常时执行
db.commit()
|
有新的异常,或者执行了return或者break,临时保存的异常将丢失。
1
2
3
4
5
6
7
8
|
try:
raise IndexEror()
except NameError, e:
print('Name error')
break
finally:
print('Finally')
return
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[[填充符] 对齐方式][符号][#][0][宽度][,][.精确度][转换类型]
| | | | |______ c/s/r/d/u/o/x/e/f/g
| | | |_____数字
| | |_______ +/-/空格
| |______ </>/=/^
|___ 除'{'和'}'之外的任意字符
'Num {0:,} hex is: {0:#x}, oct is {0:#o}, Num {+1:<20}}'.format(123, -123)
'Max is {max:0.3f}, min is {min:0.3f}'.format(max=100, min=12.5)
point = (1,3)
'X:{0[0]},Y:{0[1]}'.format(point)
class A(object):
def __init__(self, name):
self.name = name
def __str__(self):
return 'Name={self.name}'.format(self=self)
|
1
2
3
|
def func1(list=[]):
list.append(1)
return list
|
上面的函数每次调用后list都会添加1,影响下面使用。
1
2
3
|
a=datetime.today()
str(a) # '2020-01-01'
repr(a) # 'datetime.date(2020, 1, 1)'
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Fruit(object):
def instance_method(self, x): # self为实例,隐式传入
pass
@staticmethod
def static_method(x):
return Fruit(x)
@classmethod
def class_method(cls, x): # cls为类,隐式传入
return cls(x)
# 需要用classmethod的例子
class Orange(Fruit):
pass # 继承的class_method中,如果换成static_method
# 则返回的不是Orange实例,而是Fruit实例
|
1
2
3
|
from collections import Counter
a = ['a', 1, 'a', 0, 'b', 1]
Counter(a) # Counter({'a': 2, 1: 2, 'b': 1, 0: 1})
|
1
2
3
4
5
6
7
8
9
10
11
|
class People(object):
def make_tea(self):
self.get_teapot() # get_teapot() 未定义,留在子类中定义
# 但也可以使用mixin,先定义一些含get_teapot的类:
class UseSimpleTeapot(object):
def get_teapot():
pass
# 现在可以mixin,因为每个类都有个__bases__,是所有基类的元组
def simple_tea_people():
people = People()
people.__bases__ += (UseSimpleTeapot, )
|
__init__(self, *args, **kwagrs) # 主要用于实例的初始化
的情况下才会被调用。
1
2
3
4
|
__str__() / __repr__() / __int__() / __long__() / __float__() / __nonzero__()
__cmp__() / __eq__() / __ne__() / __lt__() / __gt__()
|
所有运算符都可以有反运算符:方法前面加r,
1
2
3
4
|
__sub__() => __rsub__()
__len__() / __getitem__() / __setitem__() / __delitem__() / __reversed__() / __contains__()
__call__() / __hash__() / __enter__() / __exit__()
__getattr__() / __setattr__() / __delattr__()
|