2019.8.20
1、编码规范
1、缩进四个空格
2、行长80:防止单行逻辑过为复杂
3、单行不要import多个库
4、:;,后边跟一个空格
5、二元操作符前后各一个空格
6、当’='用于指示关键字参数或默认参数时,不要在其两侧使用空格
7、适当添加空行
8、不要逐行添加注释,或者没有一个注释
9、除非在lambda 函数中,否则不要使用单字母的变量名。
示例
import sys, os
mod = 0xf
def foo(a, b = 123):
c= {'x' : 111 , 'y' : 222} #定义一个字典
d =[1, 3, 5]
return a, b, c
def bar(x):
if x%2== 0: return True
2、装饰器
最简装饰器
def deco(func):
def wrap(*args, **kwargs):
return func(*args, **kwargs)
return wrap
@deco
def foo(a, b):
return a ** b
def deco(func):
print(func)
print('hahaha')
def warp():
print('lalala')
return warp
@deco
def A():
print('hwh')
A()
流氓验证码
"""
流氓验证码
启用装饰器时,无论你输入什么验证码都会返回验证码错误
"""
import random
def deco2(parms):
def deco(func):
def warp(*args,**kwargs):
if parms:
kwargs['n1'] = -1
return func(*args,**kwargs)
return warp
return deco
@deco2(True)
def A(n1,n2):
if n1 == n2:
print('验证码正确')
else:
print('验证码错误')
num = random.randint(1000,9999)
print('验证码是:%d'%num)
num2 = int(input('>>'))
A(n1=num,n2=num2)
3、函数闭包
#函数闭包
def foo():
l = []
def bar(i):
l.append(i)
return l
return bar
if __name__ == "__main__":
f1 = foo()
f2 = foo()
print(f1(1))
print(f2(2))
print(f2(3))
4、进程和线程
多进程
import multiprocessing
import os
def A(name):
print(os.getpid)
print(name):
if __name__ == "__main__":
#创建进程
p1 = multiprocessing.Process(target=A,arge=('Joker',))
p2 = multiprocessing.Process(target=A,arge=('Joker2',))
p1.start() #启动进程
p2.start()
p1.join()
p2.join()
print('OK')