学习python的第五天

一、知识点

1.PEP8编码规范,以及开发的一些建议
(1)代码编排
缩进四个字符
行长80:防止单行逻辑过于复杂
(2)import

  • 不要使用 form xxx import *

顺序:

  • 标准库

  • 第三方库

  • 自定义库

  • 单行不要多个库

  • 模块用不到的不要去import

(3)空格

  • : , ; 后面跟一个空格,前面无空格(行位分号后无空格)

(4)注释

  • 忌:逐行添加注释,没有一个注释
  • 行内注释:单行逻辑过于复杂时添加

2.* 和 **的用法

  • 函数定义:
def fun(*args,**kwarg):
	pass
  • 参数传递:
def fun(x,y,z,a,b)print(x)
	print(y)
	print(z)
	print(a)
	print(b)
lst = [1, 2, 3]
dic = {'a': 11, 'b': 22)
fun(*lst, **dic)

3.python的赋值和应用

  • ==, is : ==的判断是值,is判断的是内存地址(及对象的id)
  • 小正数的对象:[-5, 256]
  • copy, deepcopy的区别:
    copy:只拷贝表层元素
    deepcopy:在内存中重新创建所有子元素
    4.迭代器,生成器
    (1)迭代器、生成器的好处?
  • 节省内存
  • 惰性求值
    (2)itertools
  • 无限迭代
  • 有限迭代
  • 排列组合
    5.装饰器
  • 最简装饰器
def deco(func):
	def warp(*args, **kwargs):
		return func(*args, **kwargs)
	return warp
@deco
def foo(a, b):
	return a ** b

6.函数闭包
定义:引用了自由变量的函数即是一个闭包。这个被引用的变量和这个函数一同存在,即视为已经离开了创造它的环境也不例外。

def fun():
	l = []
	def bar(i):
		l.append(i)
		return l
	return bar
f1 = fun()
f2 = fun()

7.进程与线程
(1)进程:
进程就是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据,操作系统管理所有进程的执行,为它们合理的分配资源。
(2)线程:
一个进程还可以拥有多个并发的执行线索,简单的说就是拥有多个可以获得CPU调度的执行单元,这就是所谓的线程。

import multiprocessing

def A():
	print(‘hello’)
if __name__ == "__main__":
	#创建进程
	p=multiprocessing.Process(target=A,args=())
	p.star()  #启动进程
	p.join()
	print('Over')
	  

二、课堂练习
(1)装饰器代码:

def deco(func):
    pass
    def warp(n,m):
        sum=n+m
        return func(sum,m)
        
    return warp

@deco
def A(name,name2):
    print(name)
    
A(10,20)

(2)

import random
def deco(func):
    pass
    def warp(n):
        n=-1
        print('验证码错误')
        return func(n1,n2)
        
    return warp

@deco
def A(n):
    if n1==n2:
        print('验证码正确')
    elseprint('验证码错误')

num=random.range(1000,9999)
print('验证码为:%d'%num)
num2=int(input('>>'))
A(num,num2)

(3)流氓验证码:
在使用装饰器的情况下,无论你输入什么验证码都返回验证码错误,如果不使用,该正确就返回正确

import random
def deco2(parm):
    def deco(func):
        def warp(*args,**kwargs):
            if parm:
                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)

#结果:
验证码是:2222
>>2222
验证码错误

(4)
在这里插入图片描述

好难呀,头疼,再坚持一个礼拜!

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值