一:python编码规范:
1、逢冒必缩:缩进4个空格或一个tab键
2、行长80:防止单行逻辑过于复杂
3、不使用from xxx import *
4、单行不要import 多个包,用不到的包不用import
5、空格使用:二元操作符前后各一个空格,冒号、逗号、分号后面都加一个空格
6、添加空行:函数间、函数内、文件结尾。
7、注释:
(1)忌逐行添加注释或者没有一个注释。
(2)行内注释
(3)块注释
(4)引入外来算法或者配置时需在注释中添加源链接,标明出处
8、命名:
(1)不用单字母的变量名
(2)包名、模块名、函数名、方法名全部使用小写,单词用下划线连接
(3)类名、异常名使用驼峰式命名
(4)全局变量劲量使用大写
二:
1、*与**的区别:*传递的是元组,**传递的是字典
def foo(*args, **kwargs):
pass
2、python的赋值与引用:== \ is
==:判断的是值,is:判断的是内存地址(对象的id)
3、copy与deepcopy的区别:copy:只拷贝表层元素,而deepcopy在内存中重新创建所有子元素
4、迭代器与生成器:
iter :是返回迭代器本身
next :是返回容器中的下一个值
generator:生成器是一种特殊的迭代器,不需要自定义__iter__与__next__
注:
(1)生成器函数(yield)
(2)迭代器与生成器的好处:节省内存,惰性求值
5、装饰器:
(最简装饰器)
def deco(func):
def wrap(*args, **kwargs):
return func(*args, **kwargs)
return wrap
@deco
def foo(a, b):
return a ** b
6、函数闭包:引用了自由变量的函数
def deco(func):
def wrap():
print('登录失败!')
return func()
return wrap
@deco
def foo():
print('wangjialu')
foo()
利用装饰器传参
装饰器的作用是求和
本函数的作用是打印这俩个数字的和
def deco(func):
def wrap(num1,num2):
sum_ = num1+num2
#print('登录失败!')
return func(sum_,num2)
return wrap
@deco
def foo(name,name2):
print(name)
foo(30,50)
执行结果:
在使用装饰器的情况下,无论你输入什么验证码到返回验证码错误
import random
def deco(func):
def warp(n1,n2):
n1=-1
return func(n1,n2)
return warp
@deco
def AA(n1,n2):
if n1==n2:
print('验证码正确')
else:
print('验证码错误')
num = random.randrange(1000,9999)
print('验证码是:%d' %num)
num2=int(input('>>'))
AA(num,num2)
执行结果:
验证码是:9753
>>9753
验证码错误
在使用装饰器的情况下,无论你输入什么验证码到返回验证码错误,如果不使用装饰器,该正确就打印正确
import random
def deco(func):
def warp(n1,n2):
#n1=-1
return func(n1,n2)
return warp
@deco
def AA(n1,n2):
if n1==n2:
print('验证码正确')
else:
print('验证码错误')
num = random.randrange(1000,9999)
print('验证码是:%d' %num)
num2=int(input('>>'))
AA(num,num2)
执行结果:
验证码是:1720
>>1720
验证码正确
使用join()阻塞主进程,先执行子进程
import multiprocessing
def A():
print('hello world')
if __name__ == "__main__":
p = multiprocessing.Process(target=A,args=())
p.start()
p.join()
print('game over')
执行结果:
hello world
game over
os.getpid()获取当前进程id
os.getppid()获取父进程id
import multiprocessing
import os
def A(name):
print(os.getpid)
print(name)
if __name__ == "__main__":
p1 = multiprocessing.Process(target=A,args=('wangjialu',))
p2 = multiprocessing.Process(target=A,args=('wangjialu2',))
p1.start()
p2.start()
p1.join()
p2.join()
print('lalalala')
执行结果:
<built-in function getpid>
wangjialu
<built-in function getpid>
wangjialu2
lalalala