一. PEP8 编排规范,以及开发中的一些惯例和建议
代码编排:
(1)缩进4个空格,禁止空格与Tab 混用
import:
不要使用from xxx import*
空格:
(1): ,;后面跟一个空格,前面无空格(行尾分号后无空格)
(2)二元操作符前后各一个空格,包括以下几类:
数学运算符~ 比较运算符~ 逻辑运算符~ 位运算符
(3)当=用于提示关键字或默认参数值时,不要在其两侧使用空格。
(3)适当添加空行。
4 . 注释
(1)忌:逐行添加注释,没有一个注释
(2)引入外来算法或者配置时需在注释中添加源链接,标明出处。
5.命名:
(1)除非在lambda 函数中,否则不要用单字母的变量名。
(2)包名,模块名,函数名,方法名全部使用小写,单词之间用下划线连接。
(3)全局变量尽量使用大写,一组同类型的全局变量要加统一的前缀,单词用下划线连接。
和**的用法:
def foo(*args,**kwargs):
pass
def foo(x,y,z,a,b):
print(x)
print(y)
print(z)
lst =[1, 2, 3]
dic ={‘a’: 22, ‘b’: 77}
foo(*lst, **dic
python的赋值和引用
(1)==, is: ==判断的是值,is判断的是内存地址(即对象的id0
(2)小整数对象:[-5,256]
二. 最简装饰器
def deco(func):
def wrap(*args, **kwargs):
return func(*args, **kwargs)
return wrap
@deco def foo(a, b):
return a ** b
1.函数闭包:引用了自由变量的函数即是一个闭包。
def foo():
l = []
def bar(i):
l.append(i)
return l
return bar
f1 = foo()
f2 = foo()
三. 练习题
装饰器练习题
(1)登陆失败
def deco(func):
print(func)
print(‘ddd’)
def warp():
print(‘登陆失败’)
return func()
return warp
@deco
def A():
print(‘ww’)
@deco
def B():
print(‘www’)
A()
B()
2.输入两个数字,装时期的作用是求这两个数字的和
本函数的作用是打印这两个数字的和
def deco(func):
def warp(n,n1):
sum_=n+n1
return func(sum_,n1)
return warp
@deco
def A(name,name2):
print(name)
A(10,20)
3.在使用装饰器的情况下,无论你输入什么验证码都返回验证码错误,如果不使用,该正确就打印正确。
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.randrange(1000,9999)
print(‘验证码是:%d’ % num)
num2 =int(input(’>>’))
A(n1=num,n2=num2)
4.多进程题
import multiprocessing
import os
def A(name):
print(os.getpid())
print(name)
if name ==“main”:
p1 = multiprocessing.Process(target=A,args=(‘Joker’,))
p2 = multiprocessing.Process(target=A,args=(‘Joker1’,))
p1.start()
p2.start()
p1.join()
p2.join()
print(‘ok’)
5.检测某个时间段内(5s)ip访问的次数,如果ip的访问次数超过10次,则返回404
import time
TIME1 = 0
TIME2 = 0
def check_ip(func):
def warp(*args,**kwargs):
if round(abs(TIME2 - TIME1),3)<0.5:
print(‘404’)
else:
return func(*args,**kwargs)
return warp
@check_ip
def A(ip):
print(‘进入网页成功’)
#模拟请求
for i in range(50):
ip =‘127.0.0.1’
TIME1 =time.time()
A(ip)
TIME2 =time.time()
time.sleep(1)