代码规范
- 缩进四个空格,禁止空格与Tab混用
- 不要使用from xxx import *
- 顺序:标准库–>第三方库–>自定义库
- : , ;后面跟一个空格,前面无空格
- 数学运算符,比较运算符,逻辑运算符,位运算符前后各一个空格
- 文件结尾留一个空行
- 忌:逐行添加注释,没有一个注释
- 包名、模块名、函数名、方法名全部使用小写,单词间用下划线连接
- 类名使用首字母大写
- 全局变量使用大写
- 自定义的变量名、函数名不要与标准库中的名字冲突
装饰器
def deco(func):
print("lalala") #lalala
def warp():
print("登录成功")
func() #hahaha
return warp #登录成功
@deco
def A():
print("hahaha")
A()
#A()-->deco-->func:A-->return warp-->'登录成功'
小例子
在使用装饰器的情况下,无论你输入什么验证码都返回验证码错误;如果不使用,该正确就正确。
import random
def deco2(parms):
def deco(func):
def warp(n1,n2):
if parms:
n1 = -1
return func(n1,n2)
return warp
return deco
@deco2(False)
def A(n1,n2):
if n1 == n2:
print("验证码正确")
else:
print("验证码错误")
yzm = random.randint(1000,10000)
print("验证码是:",yzm)
num = eval(input("请输入验证码"))
A(yzm,num)
函数闭包
def foo():
l = []
def bar(i):
l.append(i)
return l
return bar
if __name__ == "__main__":
f1 = foo()
f2 = foo()
print(f1(1)) #[1]
print(f1(2)) #[1,2]
print(f2(3)) #[3]
进程
- 1.进程:进程就是任务管理器中所看到的进程
2.线程:一个CPU只能运行一个线程,线程之间会抢运行顺序。有单线程和多线程
def download(name):
print(os.getpid())
print(name)
if __name__ == "__main__":
dl = multiprocessing.Process(target=download,args=('hahahaha',)
dll = multiprocessing.Process(target=download,args=('hahahaha',)
dl.start()
dll.start()
dl.join()
dll.join()