Python Day05

Python进阶

  1. PEP8编码规范:
    (1)代码编排:
    缩进4个空格,禁止空格与Tab混用
    行长80:防止单行逻辑过于复杂
    (2)import:
    不要使用 from xxx import *
    顺序:1.标准库 2.第三方库 3.自定义库
    单行不要import多个库
    模块内用不到的不用去import
    (3)空格:
    : , ; 后面跟一个空格,前面无空格(行尾分号后无空格)
    二元操作符前后各一个空格
    适当添加空行
    (4)注释:
    忌:逐行添加注释,没有一个注释
    (5)命名:
    除非lambda函数中。否则不要用单字母变量名
    包名、模块名、函数名、方法名全部使用小写,单词间用下划线连接
    类名、异常名 使用首字母大写方式
    全局变量尽量使用大写
    (6)字符串拼接尽量使用join方式:速度快,内存消耗小
    (7)语意明确、直白
    not xx in yy VS xx not in yy
    not a is b VS a is not b

装饰器

  1. 闭包函数:
		#闭包函数:
		def foo():
		    l = []
		    def bar(i):
		        l.append(i)
		        return l
		    return bar
		
		if __name__ == "__main__":
		    f1 = foo()
		    print(f1)
  1. 最简装饰器:
		def deco(func):
		    def warp():        #闭包函数
		        print("登录成功!")
		        return func()
		    return warp
		
		@deco
		def A():
		    print("yangning")
		    return 'ynn1'
		
		print(A())
	运行结果:
	登录成功!
	yangning
	ynn1
		def deco(func):
		    def warp():        #闭包函数
		        print("登录成功!")
		        return func()
		    return warp
		
		@deco
		def A():
		    print("yangning")
		    return 'ynn1'
		
		@deco
		def B():
		    print("ynn")
		
		print(A())
		B()
	运行结果:
	登录成功!
	yangning
	ynn1
	登录成功!
	ynn
  1. 装饰器传参:
		def deco(func):
		    def warp(n1,n2):        
		        print("登陆失败!")
		        n1 = 'Ok'                #已经给name传参,A()先走装饰器
		        return func(n1,n2)
		    return warp
		
		@deco
		def A(name,name2):
		    print(name)
		
		A('ynn','nyy')
		
	运行结果:
		登陆失败!
		Ok
		#求两个数字的和
		def deco(func):
		    def warp(n1,n2):        #闭包函数
		        x = n1 + n2
		        return func(x,n2)
		    return warp
		
		@deco
		def A(n1,n2):
		    print(n1)
		
		A(1,2)
	运行结果:3
		#流氓验证码  无论输入什么验证码都返回验证码错误
		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(True)         #如果将这里改为False,该正确就打印正确
		def A(n1,n2):
		    if n1 == n2:
		        print("验证码正确")
		    else:
		        print("验证码不正确")
		
		num1 = random.randrange(1000,9999)
		print("验证码是:%d"%num1)
		num2 = int(input('>>'))
		A(num1,num2)
		
	运行结果:
			验证码是:4879
			>>4879
			验证码不正确
		#流氓验证码  装饰器传递可变参数
		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)       #如果将这里改为False,该正确就打印正确
		def A(n1,n2):
		    if n1 == n2:
		        print("验证码正确")
		    else:
		        print("验证码不正确")
		
		num1 = random.randrange(1000,9999)
		print("验证码是:%d"%num1)
		num2 = int(input('>>'))
		A(n1 = num1,n2 = num2)
	运行结果:
			验证码是:7492
			>>7492
			验证码不正确

利用装饰器请求ip地址,如果在五秒内请求超过十次,则返回“404”
在这里插入图片描述

进程和线程:

  1. 进程:进程就是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据,操作系统管理所有进程的执行,为它们合理的分配资源。
		import multiprocessing
		
		def A():
		    print('hello')
		
		if __name__ == "__main__":
		    #创建进程
		    p = multiprocessing.Process(target=A,args=())
		    #启动进程
		    p.start()
		    p.join()   #等待的意思  若没有join则会独立运行
		    print("Over")
	运行结果:
			hello
			Over
  1. 线程:一个进程还可以拥有多个并发的执行线索,简单的说就是拥有多个可以获得CPU调度的执行单元,这就是所谓的线程。
  2. 并发和并行:前者是逻辑上的同时发生(simultaneous),而后者是物理上的同时发生.
    并发性(concurrency),又称共行性,是指能处理多个同时性活动的能力,并发事件之间不一定要同一时刻发生。
    并行(parallelism)是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行。
    来个比喻:并发和并行的区别就是一个人同时吃三个馒头和三个人同时吃三个馒头。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值