Python中程序调试的方法有哪些呢?





12.1 编码格式介绍

Unicode 定长编码:2个字节表示一个字符

.py文件放在磁盘上使用UTF—8储存(外存)
UTF-8 变长编码:UTF-8Unicode的实现,1-4个字节表示一个字符,英文1个字节,汉字3个字节。




12.2 文件读写原理

  1. 打开或新建文件open

12.3 文件读写操作

内置函数open()创建文件对象

通过IO流将磁盘文件中的内容与程序中的对象中的内容进行同步

3.文件读写操作.py文件



12.4 文件的打开开和关闭

12.4.1 文件的状态和操作过程

文件类型:按文件中数据的组织形式,文件分为以下两大类:

1.文本文件:存储的是普通“字符”文本,默认为Unicode字符集,可以使用记事本程序打开

2.二进制文件:把数据内容以字节进行存储,无法用记事本打开,必须使用专用的文软件打开,举例:MP3音频文件 JPG图片 .doc文档等

以只读模式打开文件,文件的指针将会放在文件的开头
以只写方式打开文件,如果文件不存在就创建,如果文件存在则覆盖原有内容,文件指针放在开头
以追加模式打开文件,如果文件不存在则创建,文件指针在开头,如果文件存在,则在文件末尾追加内容,文件指针在原文末尾
以二进制方式打开文件,不能单独使用,需要与其它模式一起使用:rb或者wb
以读写方式打开文件,不能单独使用,需要与其它模式一起使用,a+
r 以只读模式打开文件,文件的指针将会放在文件的开头 w 以只写方式打开文件,如果文件不存在就创建,如果文件存在则覆盖原有内容,文件指针放在开头 a 以追加模式打开文件,如果文件不存在则创建,文件指针在开头,如果文件存在,则在文件末尾追加内容,文件指针在原文末尾 b 以二进制方式打开文件,不能单独使用,需要与其它模式一起使用,rb,或者wb + 以读写方式打开文件,不能单独使用,需要与其它模式一起使用

12.5 文件对象的常用方法

从文件中读取size个字节或字符返回,若省略[size]则读到文件末尾
把文本文件中每一行都作为独立的字符串对象,并将这些对象放回列表返回
将字符串str内容写进文件
将字符串列表s_list写入文本文件,不添加换行符
把文件指针移到新的位置,offset表示相对whence的位置;offset:为正往结束方向移动, whence不同的值呆鸟不同的含义;0:从文件开头开始计算; 1:从文件当前位置开始计算
缓冲区的内容写入文件,但不关闭文件
把缓冲区内容写入文件,同事关闭文件,释放文件对象资源
3.readlines() 把文本文件中每一行都作为独立的字符串对象,并将这些对象放回列表返回 offset:为正往结束方向移动, whence不同的值呆鸟不同的含义: 0:从文件开头开始计算 1:从文件当前位置开始计算 2:从文件结尾开始计算 7.tell() 返回文件指针当前位置 8.flush() 把缓冲区的内容写入文件,但不关闭文件 9.close() 把缓冲区内容写入文件,同事关闭文件,释放文件对象资源

with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正常关闭,以此来达到释放资源的目的

__exit__(),遵守了上下文管理协议,这句表达式的对象就是上下文管理器,离开运行时上下文,自动调用上下文管理器的特殊方法


with语句复制文件:



1.OS模块是python内置的与操作系统功能文件系统相关的模块,该模块中的语句执行结果通常与操作系统有关,在不同操作系统上运行,得到的结果可能不一样.

2.os模块于os.path模块用于对目录或文件进行操作


12.7.1 os模块操作目录相关函数

os 模块操作目录相关函数

返回指定路径下的文件和目录信息
path设置为当前工作目录

os.path 模块操作目录相关函数

用于获取文件目录的绝对路径
用于判断文件或目录是否存在,如果存在返回True,否则返回False
将目录与目录或者文件名拼接起来
从一个目录中提取文件名
从一个目录中提取文件名

6.dirname(path) 从一个路径中提取文件路径,不包括文件名

12.7.3 列出指定目录下的所有.py文件


12.7.4 遍历指定目录下所有的文件以及目录


Python基础语法到这里就结束啦!喜欢博主的可以给博主点个关注。

Python部落()组织翻译,禁止转载,欢迎转发。

AJAX架构的组件是什么?

AJAX架构有两个组件:

控件功能的扩展程序之一。扩展程序使用一个JavaScript代码块来添加新的和增强的功能到 Framework AJAX是一个在应用程序添加功能。通过使用部分页面呈现,它可以用于更新内容。可以为部分页面而不是整个页面进行刷新。

3 Ajax客户端库的组件?

以下组件用于Ajax客户端库:

Ajax的基本目标是:

·减少Web服务器命中

·提供服务器端和客户端框架

Django面试中,首先被问得问题就是对Django的认识,然后是Django的生命周期,内置组件,FBV和CBV,再有就是orm的方法,cookie和session的区别等,面试者多做些准备还是有必要的。

学完了Python和Django的小伙伴,找工作面试时必经的一关,那么在面试中,面试官通常会问哪些问题呢?下面来看一下。

(推荐教程:django视频教程)

1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。

2.Django内置的ORM跟框架内的其他模块耦合程度高。

应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;

理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。

3.Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。

4.Django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。

5.Django模板的设计哲学是彻底的将代码、样式分离; Django从根本上杜绝在模板中进行编码、处理数据的可能。

WSGI是一种WEB服务器  ==网关接口==。 是一个Web服务器(如nginx)与应用服务器(如uWSGI)通信的一种规范(协议)。

在生产环境中使用WSGI作为python web的服务器。Python Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛接受。WSGI没有官方的实现, 因为WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行。

uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器。uWSGI代码完全用C编写,效率高、性能稳定。

uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型。

Django 是一个 Web 框架,框架的作用在于处理 request 和 reponse,其他的不是框架所关心的内容。所以怎么部署 Django 不是 Django 所需要关心的。

Django 所提供的是一个开发服务器,这个开发服务器,没有经过安全测试,而且使用的是 Python 自带的 simple HTTPServer 创建的,在安全性和效率上都是不行的

而uWSGI 是一个全功能的 HTTP 服务器,他要做的就是把 HTTP 协议转化成语言支持的网络协议。比如把 HTTP 协议转化成 WSGI 协议,让 Python 可以直接使用。

uwsgi 是一种 uWSGI 的内部协议,使用二进制方式和其他应用程序进行通信。

WSGI是Python在处理HTTP请求时,规定的一种处理方式。如一个HTTP Request过来了,那么就有一个相应的处理函数来进行处理和返回结果。WSGI就是规定这个处理函数的参数长啥样的,它的返回结果是长啥样的?至于该处理函数的名子和处理逻辑是啥样的,那无所谓。简单而言,WSGI就是规定了处理函数的输入和输出格式。

四.django请求的生命周期?

当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端

请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中.

url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配,

一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了.

视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端.

客户端浏览器接收到返回的数据,经过渲染后显示给用户.

3.路由匹配 根据浏览器发送的不同url去匹配不同的视图函数   

5.中间件,对响应的数据进行处理。

6.wsgi,将响应的内容发送给浏览器。

五.列举django的内置组件?

Admin是对model中对应的数据表进行增删改查提供的组件

model组件:负责操作数据库

form组件:1.生成HTML代码2.数据有效性校验3校验信息返回并展示

ModelForm组件即用于数据库操作,也可用于用户请求的验证

六.列举django中间件的5个方法?以及django中间件的应用场景?

七.简述什么是FBV和CBV?

FBV和CBV本质是一样的,基于函数的视图叫做FBV,基于类的视图叫做CBV

提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)

可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性

九.如何给CBV的程序添加装饰器?

filter(**kwargs): 它包含了与所给筛选条件相匹配的对象。获取不到返回None get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个。 如果符合筛选条件的对象超过一个或者没有都会抛出错误。 并不是一系 model的实例化对象,而是一个可迭代的字典序列

前提:有外键存在时,可以很好的减少数据库请求的次数,提高性能

select_related通过多表join关联查询,一次性获得所有数据,只执行一次SQL查询

prefetch_related分别查询每个表,然后根据它们之间的关系进行处理,执行两次查询

 直接执行SQL语句(类似于pymysql的用法)
 # 更高灵活度的方式执行原生SQL语句
 


执行原始sql并返回模型
依赖model多用于查询



cookie是保存在浏览器端的键值对,可以用来做用户认证

将用户的会话信息保存在服务端,key值是随机产生的字符串,value值是session的内容
依赖于cookie将每个用户的随机字符串保存到用户浏览器上


十五.如何使用django orm批量创建数据?
十六.django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新



删除关联表中的数据时,当前表与其关联的field的操作
django2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常


1.可以与if标签来连用
2.自定义时需要写两个形参 3. 在py文件中写代码
1.可以传多个参数,没有限制
2.不能与if标签来连用

2、在包中创建一个py文件






第一步:django第一次响应来自某个客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中;同时,后端把这个token放到cookie中交给前端页面;
第二步:下次前端需要发起请求(比如发帖)的时候把这个token值加入到请求数据或者头信息中,一起传给后端;cookies:{csrftoken:xxxxx}
第三步:后端校验前端请求带过来的token和SESSION里的token是否一致。

1.后端将csrftoken传到前端,发送post请求时携带这个值发送
2.获取form中隐藏标签的csrftoken值,加入到请求数据中传给后端



WSGI Server 运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程 。
2.uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http 等协议。注意uwsgi是一种通信协议,而uWSGI是实现uwsgi协议和WSGI协议的 Web 服务器。uWSGI具有超快的性能、低内存占用和多app管理等优点,并且搭配着Nginx就是一个生产环境了,能够将用户访问请求与应用 app 隔离开,实现真正的部署 。相比来讲,支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。


更多相关教程推荐:python web教程

我要回帖

更多关于 java程序调试的步骤 的文章

 

随机推荐