python怎么设置颜色深浅变化_python重点串讲

1、解释型和编译型

开发环境:windows开发(主流),但是有些如sanic,fastapi框架的话,windows不支持,所以需要安装unbuntu,在上面开发

远程连接linux开发,院成立案件linux内的docker开发

c:c代码写完,编译(不同平台),跨平台运行,linux上源码安装软件,自行编译,运行

java:一处编码,处处运行,java是编译型还是解释型?编译型,编译过程---把java源代码编译成字节码文件

.class---不能直接运行在操作系统之上---->jvm(java虚拟机),jvm运行至少要300m内存(jdk、jre、jvm、javase、javame、javaee)

go:编译型,跨平台编译(windows平台可以编译出mac平台的可执行文件),所有go代码打成一个可执行文件

python: 强类型动态语言

js:只能在浏览器中运行,nodejs

php:web开发

2、数据类型

python当中一切皆对象

type和object的关系

1、type是object的类

2、type继承了object

3、type是type自己的类

4、object也是由type实例化得到

注意:所有类,除了object都能继承自object,包括type

3、深浅拷贝

python一切皆对象的好处是不同类型之间的变量直接可以相关赋值。

其本质变量都是指向了一个内存地址。

浅拷贝只拷贝了一个值,这个值对应的地址没有拷贝。

深拷贝是吧所有的内容全部复制一份,也就意味着相对于浅拷贝,深拷贝占了很大的资源。

4、可变类型和不可变类型

字典,列表,集合----->可变类型

数字,字符串,元组----->不可变类型

字典的key必须用不可变类型,可以hash

python中参数传递都是copy一份传递过去,由于一切皆对象,传过去,都是地址,python中区分可变和不可变类型,可变类型在函数中修改会影响原来的,不可变类型,不会影响原来的

5、字符编码

计算机的计量单位

bit比特位:0或者1的一个小格

8个bit位是一个byte,一个字节

1024个字节--->1kb

1024kb--->1mb

1024mb--->1gb

1个字节--->2^8种变化,就可以表示出所有的字符(数字,字母,标点符号)

Unicode编码统一了,字符和数字的对应关系

utf-8:目前主流的编码方式

6、闭包函数

注意:定义在函数内部;对外部作用域有引用

def warrper(func):

def inner(*args,**kwargs):

#代码

res= func(*args,**kwargs)

#代码

return res

return inner

def a():

print("xxx")

# 没有语法糖

a=wrapper(a)

a()

# 有语法糖

@wrapper

def a():

print("xxx")

7、python中的魔法方法

# __init__:类实例化会触发

# __str__:打印对象会触发

# __call__:对象()触发,类也是对象 类(),类的实例化过程调用元类的__call__

# __new__:在类实例化会触发,它比__init__早(造出裸体的人,__init__穿衣服)

# __del__:del 对象,对象回收的时候触发

# __setattr__,__getattr__:(.拦截方法),当对象.属性--》赋值会调用setattr,如果是取值会调用getattr

# __getitem__,__setitem__:([]拦截)

# __enter__和__exit__ 上下文管理器

setattr,getattr,setitem,getitem演示

class Person:

def __init__(self,name):

self.name=name

def __setitem__(self, key, value):

setattr(self,key,value) #反射

def __getitem__(self, item):

return getattr(self,item) # 反射取值

p=Person(‘lqz‘)

# p.name=‘ppp‘

p[‘name‘]=10 # 如何变行 重写__setitem__魔法方法

# print(p.name)

print(p[‘name‘])

# dic={‘name‘:‘lqz‘,‘age‘:19}

class Mydic(dict):

def __setattr__(self, key, value):

print("对象加点赋值,会触发我")

self[key]=value

def __getattr__(self, item):

print("对象加点取值,会触发我")

return self[item] # 不要加引号

mydic=Mydic(name=‘lqz‘,age=18)

# print(mydic[‘name‘])

print(mydic.name)

# mydic.name=99

# print(mydic.name)

with 上下文管理器

class Person:

def __enter__(self):

print("我在with管理的时候,会触发")

print(‘进入with语句块时执行此方法,此方法如果有返回值会赋值给as声明的变量‘)

return ‘oo‘

def __exit__(self, exc_type, exc_val, exc_tb):

print(‘退出with代码块时执行此方法‘)

print(‘1‘, exc_type)

print(‘2‘, exc_val)

print(‘3‘, exc_tb)

with Person() as p: # 这句话执行,会触发类的__enter__

print(p)

eq

class A:

def __init__(self,x,y):

self.x = x

self.y = y

# def __eq__(self,obj):

# # 打印出比较的第二个对象的x值

# print(obj.x)

# if self.x +self.y == obj.x+obj.y:

# return True

# else:

# return False

a=A(1,2)

b=A(99,3)

print(a==‘ddd‘) # 当执行==s时,会触发__eq__的执行,并且把b传进去,就是object

# ==后只要是对象,就可以传进去,就是object

8、cookie,session,token

HTTP协议:无状态,无连接,基于请求响应,基于tcp/ip,应用层协议

mysql:c/s架构:底层基于socket,自己封装的协议,mysql的客户端:

navcate(c++图形化界面,实现了请求和响应协议),pymysql(用python语言实现了请求和响应协议)

redis:c/s架构:底层基于socket,自己封装的协议

docker:c/s架构,基于http协议,使用restfull规范

elasticsearch:c/s架构,基于http协议,使用restfull规范

cookie:是存在于浏览器的键值对,向服务端发送请求,携带它过去(不安全)

session:存在于服务端的键值对(放在哪?内存中,文件,mysql,redis)

# 缺陷:如果用户量很大,存储需要耗费服务器资源

token:就是个字符串(既安全,又存个人信息),加密字符串,会有个人信息

token现在应用非常广泛,契合了前后端分离

JWT:json web token

9、django中的session底层原理

在中间件中,请求走的时候,process_response,取出request.session的modify属性,判断是否是true,如果是true,表示在视图函数中修改过session,数据库同步修改,如果是false,就不修改,返回给前端sessionid:随机字符串

请求来了,通过sessionid,取出随机字符串--》去数据库中查--》把表的数据转成字典,赋值给request.session,后面视图函数中就可以操作它了

10、异常处理

try:

except :

finally:

else: 什么时候执行

try:

print("xxx")

# print(1/0)

except Exception as e:

print(e)

else: # 基本上不会用到

print("正常执行,没有出异常,会走")

finally:

print("我是finally") # 用于会走,无论是否有异常

11、pymysql的使用

import pymysql

#连接数据库

conn=pymysql.connect(host=‘101.133.225.166‘, user=‘root‘, password="123456",database=‘test‘, port=3306) #

# 获取游标

cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) # 查出来数据是字典格式

# 操作 定义一个sql

sql=‘select id,name from book‘

cursor.execute(sql)

ret=cursor.fetchall()

print(ret)

# 插入

sql=‘insert into book(id,name) values (%s,%s)‘

cursor.execute(sql,[3,‘lqz‘])

conn.commit()

# 删除

sql=‘delete from book where name=%s‘

cursor.execute(sql,[‘lqz‘])

conn.commit()

# 更新

sql=‘update book set name=%s where id=%s‘

cursor.execute(sql,[‘xxx‘,1])

conn.commit()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值