python面试笔记

1.熟悉 PEP8 编码规范,OOP(Object Oriented Programming) 编程思想,有良好的编码习惯

1 尽量单独使用小写字母‘l’,大写字母‘O’等容易混淆的字母。
2 模块命名尽量短小,使用全部小写的方式,可以使用下划线。
3 包命名尽量短小,使用全部小写的方式,不可以使用下划线。
4 类的命名使用CapWords的方式,模块内部使用的类采用_CapWords的方式。
5 异常命名使用CapWords+Error后缀的方式。
6 全局变量尽量只在模块内有效,类似C语言中的static。实现方法有两种,一是__all__机制;二是前缀一个下划线。
7 函数命名使用全部小写的方式,可以使用下划线。
8 常量命名使用全部大写的方式,可以使用下划线。
9 类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。
9 类的属性有3种作用域public、non-public和subclass API,可以理解成C++中的public、private、protected,non-public属性前,前缀一条下划线。
11 类的属性若与关键字名字冲突,后缀一下划线,尽量不要使用缩略等其他方式。
12 为避免与子类属性命名冲突,在类的一些属性前,前缀两条下划线。比如:类Foo中声明__a,访问时,只能通过Foo._Foo__a,避免歧义。如果子类也叫Foo,那就无能为力了。
13 类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。
 
 OOP是一种程序设计范型,同时也是一种程序开发的方法,实现OOP的程序希望能够在程序中包含各种独立而又互相调用的对象,每一个对象又都应该能够接受数据、处理数据并将数据传达给其它对象,因此每个对象都可以被看作一个小型的”机器”,而整个程序系统就是由这些小机器相互协助、组合构建起来的。

2.熟练使用 Python 常用标准库以及第三方库

著名第三方库
1.Web框架
Django:    开源Web开发框架,它鼓励快速开发,并遵循MVC设计,开发周期短。
ActiveGrid:    企业级的Web2.0解决方案。
Karrigell:    简单的Web框架,自身包含了Web服务,py脚本引擎和纯python的数据库PyDBLite。
Tornado:    一个轻量级的Web框架,内置非阻塞式服务器,而且速度相当快
webpy:    一个小巧灵活的Web框架,虽然简单但是功能强大。
CherryPy:    基于Python的Web应用程序开发框架。
Pylons:    基于Python的一个极其高效和可靠的Web开发框架。
Zope:    开源的Web应用服务器。
TurboGears:    基于Python的MVC风格的Web应用程序框架。
Twisted:    流行的网络编程库,大型Web框架。
Quixote:    Web开发框架。

2.科学计算
Matplotlib:    用Python实现的类matlab的第三方库,用以绘制一些高质量的数学二维图形。
SciPy:    基于Python的matlab实现,旨在实现matlab的所有功能。
NumPy:    基于Python的科学计算第三方库,提供了矩阵,线性代数,傅立叶变换等等的解决方案。

3.GUI
PyGtk:    基于Python的GUI程序开发GTK+库。
PyQt:    用于Python的QT开发库。
WxPython:    Python下的GUI编程框架,与MFC的架构相似。

4.其它
BeautifulSoup:    基于Python的HTML/XML解析器,简单易用。
PIL:    基于Python的图像处理库,功能强大,对图形文件的格式支持广泛。
PyGame:    基于Python的多媒体开发和游戏软件开发模块。
Py2exe:    将python脚本转换为windows上可以独立运行的可执行程序。 

3.熟悉Python 多线程、多进程开发

http://www.cnblogs.com/tyomcat/p/5486827.html

https://www.cnblogs.com/whatisfantasy/p/6440585.html?utm_source=itdadao&utm_medium=referral

4.熟悉 Linux 基本操作命令

1、日常操作命令  
**查看当前所在的工作目录
pwd

**查看当前系统的时间 
date

**查看有谁在线(哪些人登陆到了服务器)
who  查看当前在线
last 查看最近的登陆历史记录

2、文件系统操作
**
ls /    查看根目录下的子节点(文件夹和文件)信息
ls -al  -a是显示隐藏文件   -l是以更详细的列表形式显示

**切换目录
cd  /home

**创建文件夹
mkdir aaa     这是相对路径的写法 
mkdir -p aaa/bbb/ccc
mkdir  /data    这是绝对路径的写法 

**删除文件夹
rmdir   可以删除空目录
rm -r aaa   可以把aaa整个文件夹及其中的所有子节点全部删除
rm -rf aaa   强制删除aaa

**修改文件夹名称
mv aaa angelababy

**创建文件
touch  somefile.1   创建一个空文件
echo "i miss you,my baby" > somefile.2  利用重定向“>”的功能,将一条指令的输出结果写入到一个文件中,会覆盖原文件内容
echo "huangxiaoming ,gun dan" >> somefile.2     将一条指令的输出结果追加到一个文件中,不会覆盖原文件内容

用vi文本编辑器来编辑生成文件
******最基本用法
vi  somefile.4
1、首先会进入“一般模式”,此模式只接受各种快捷键,不能编辑文件内容
2、按i键,就会从一般模式进入编辑模式,此模式下,敲入的都是文件内容
3、编辑完成之后,按Esc键退出编辑模式,回到一般模式;
4、再按:,进入“底行命令模式”,输入wq命令,回车即可

******一些常用快捷键
一些有用的快捷键(在一般模式下使用):
a  在光标后一位开始插入
A   在该行的最后插入
I   在该行的最前面插入
gg   直接跳到文件的首行
G    直接跳到文件的末行
dd   删除行,如果  5dd   ,则一次性删除光标后的5行
yy  复制当前行,  复制多行,则  3yy,则复制当前行附近的3行
p   粘贴
v  进入字符选择模式,选择完成后,按y复制,按p粘贴
ctrl+v  进入块选择模式,选择完成后,按y复制,按p粘贴
shift+v  进入行选择模式,选择完成后,按y复制,按p粘贴

查找并替换(在底行命令模式中输入)
%s/sad/88888888888888     效果:查找文件中所有sad,替换为88888888888888
/you       效果:查找文件中出现的you,并定位到第一个找到的地方,按n可以定位到下一个匹配位置(按N定位到上一个)

3、文件权限的操作

****linux文件权限的描述格式解读
drwxr-xr-x      (也可以用二进制表示  111 101 101  -->  755)

d:标识节点类型(d:文件夹   -:文件  l:链接)
r:可读   w:可写    x:可执行 
第一组rwx:  表示这个文件的拥有者对它的权限:可读可写可执行
第二组r-x:  表示这个文件的所属组对它的权限:可读,不可写,可执行
第三组r-x:  表示这个文件的其他用户(相对于上面两类用户)对它的权限:可读,不可写,可执行

****修改文件权限
chmod g-rw haha.dat    表示将haha.dat对所属组的rw权限取消
chmod o-rw haha.dat 表示将haha.dat对其他人的rw权限取消
chmod u+x haha.dat      表示将haha.dat对所属用户的权限增加x

也可以用数字的方式来修改权限
chmod 664 haha.dat   
就会修改成   rw-rw-r--

如果要将一个文件夹的所有内容权限统一修改,则可以-R参数
chmod -R 770 aaa/
chown angela:angela aaa/    <只有root能执行>

目录没有执行权限的时候普通用户不能进入
文件只有读写权限的时候普通用户是可以删除的(删除文件不是修改它,是操作父及目录),只要父级目录有执行和修改的权限

4、基本的用户管理

*****添加用户
useradd  angela
要修改密码才能登陆 
passwd angela  按提示输入密码即可

**为用户配置sudo权限
用root编辑 vi /etc/sudoers
在文件的如下位置,为hadoop添加一行即可
root    ALL=(ALL)       ALL     
hadoop  ALL=(ALL)       ALL



然后,hadoop用户就可以用sudo来执行系统级别的指令
[hadoop@shizhan ~]$ sudo useradd huangxiaoming

5、系统管理操作
*****查看主机名
hostname
****修改主机名(重启后无效)
hostname hadoop

*****修改主机名(重启后永久生效)
vi /ect/sysconfig/network
****修改IP(重启后无效)
ifconfig eth0 192.168.12.22

****修改IP(重启后永久生效)
vi /etc/sysconfig/network-scripts/ifcfg-eth0

mount ****  挂载外部存储设备到文件系统中
mkdir   /mnt/cdrom      创建一个目录,用来挂载
mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/     将设备/dev/cdrom挂载到 挂载点 :  /mnt/cdrom中

*****umount
umount /mnt/cdrom

*****统计文件或文件夹的大小
du -sh  /mnt/cdrom/Packages
df -h    查看磁盘的空间
****关机
halt
****重启
reboot

******配置主机之间的免密ssh登陆



假如 A  要登陆  B
在A上操作:
%%首先生成密钥对
ssh-keygen   (提示时,直接回车即可)
%%再将A自己的公钥拷贝并追加到B的授权列表文件authorized_keys中
ssh-copy-id   B
——————————————————————————————————

******后台服务管理
service network status   查看指定服务的状态
service network stop     停止指定服务
service network start    启动指定服务
service network restart  重启指定服务
service --status-all  查看系统中所有的后台服务


设置后台服务的自启配置
chkconfig   查看所有服务器自启配置
chkconfig iptables off   关掉指定服务的自动启动
chkconfig iptables on   开启指定服务的自动启动




*****系统启动级别管理
vi  /etc/inittab


# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

5.熟悉Django框架、Flask 框架, 了解tornado框架

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。
Django 框架的核心组件有:
    1.用于创建模型的对象关系映射
    2.为最终用户设计的完美管理界面
    3.一流的 URL 设计
    4.设计者友好的模板语言
    5.缓存系统。
Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:    
层次职责
模型(Model),即数据存取层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即表现层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
视图(View),即业务逻辑层存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。
1.Flask是一个使用 Python 编写的 
1).轻量级 Web 应用框架。 
2).其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。 
3).Flask使用 BSD 授权。 
4)根据 URL 可以返回特定网页

2.Flask 属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖于外部库的框架。这既有优点也有缺点,优点是框架很轻量,更新时依赖少,并且专注安全方面的 bug,缺点是,你不得不自己做更多的工作,或通过添加插件增加自己的依赖列表。Flask 的依赖如下: 
Werkzeug 一个 WSGI 工具包 
jinja2 模板引擎

3.WSGI: Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口)。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。 
Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
得利于其非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。
Tornado就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本 [1]  。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。 

6.熟悉面向切面编程AOP和装饰器

AOP
简言之、这种在运行时,编译时,类和方法加载时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。

我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。

优点是:这样的做法,对原有代码毫无入侵性

装饰器
装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。

概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。 

7.熟悉Git版本控制

分布式版本控制系统
是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 [1]  Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

8.熟悉Nginx + uwsgi/gunicorn部署服务器

https://blog.csdn.net/holmehai/article/details/80044867?utm_source=blogxgwz1

https://www.cnblogs.com/Pushy/p/8453218.html

https://blog.csdn.net/my_chenjie/article/details/81089014?from=singlemessage

9.熟悉Django-rest-framework实现前后端分离

Nodejs的逐渐成熟和日趋稳定,使得越来越多的公司开始尝试使用Nodejs来练一下手,尝一尝鲜。在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端。

  前后端分离是web应用的一种架构模式。在开发阶段,前后端工程师约定好数据交互接口,实现并行开发和测试;在运行阶段前后端分离模式需要对web应用进行分离部署,前后端之间使用HTTP或者其他协议进行交互请求。在前后端分离架构中,后端只需要负责按照约定的数据格式向前端提供可调用的API服务即可。前后端之间通过HTTP请求进行交互,前端获取到数据后,进行页面的组装和渲染,最终返回给浏览器。
 
从目前应用软件开发的发展趋势来看,主要有两方面需要注意:

越来越注重用户体验,随着互联网的发展,开始多终端化。

大型应用架构模式正在向云化、微服务化发展。

10.熟悉 MySQL 数据库,熟练使用 SQL 语句

https://www.cnblogs.com/1234abcd/p/5530314.html

11.熟悉 mysql、Redis数据库

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

12.熟悉MVT/MVC 开发思想,

MVC各部分的功能
M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。

V全拼为View,用于封装结果,生成页面展示的html内容。

C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。

MVT各部分的功能 
M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。

V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。

T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。

13.熟悉 Scrapy 框架使用

组件
Scrapy Engine
引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。

调度器(Scheduler)
调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。

下载器(Downloader)
下载器负责获取页面数据并提供给引擎,而后提供给spider。

Spiders
Spider是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。 更多内容请看 Spiders 。

Item Pipeline
Item Pipeline负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库中)。 更多内容查看 Item Pipeline 。

下载器中间件(Downloader middlewares)
下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response(也包括引擎传递给下载器的Request)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。更多内容请看 下载器中间件(Downloader Middleware) 。

一句话总结就是:处理下载请求部分

Spider中间件(Spider middlewares)
Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。更多内容请看 Spider中间件(Middleware) 。

一句话总结就是:处理解析部分

数据流(Data flow)
Scrapy中的数据流由执行引擎控制,其过程如下:

引擎打开一个网站(open a domain),找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。
引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)以Request调度。
引擎向调度器请求下一个要爬取的URL。
调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)。
一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。
引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。
Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。
引擎将(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器。
(从第二步)重复直到调度器中没有更多地request,引擎关闭该网站。

14.熟练使用 Xpath 与 BeautifulSoup分析页面结构

https://www.cnblogs.com/vipchenwei/p/7807860.html

15.熟练使用numpy、pandas、matplotlib对数据进行清洗、及可视化

https://blog.csdn.net/dihao0836/article/details/79323775

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 代码笔记是对 Python 程序代码的解释和说明。它可以帮助你理解代码的工作原理,并在以后更好地维护和编写代码。常用的代码笔记格式有注释、文档字符串等。示例代码: ```python # 计算平方 def square(x): """ 返回x的平方 """ return x*x print(square(4)) ``` 在上面的代码中,`# 计算平方`是注释,`"""返回x的平方"""`是文档字符串。 ### 回答2: Python代码笔记是程序员在学习和实践Python编程语言时记录的一种文档。它包括通过编写实际的Python代码示例来记录各种语法、函数、模块、库和算法的用法和应用。 Python代码笔记通常用于记录和整理编程语言的基本知识,并用代码示例来演示这些知识的具体使用。因为Python语言本身较为简洁易读,因此在代码笔记中使用Python语言编写示例代码非常方便。 通过编写Python代码笔记,程序员可以更好地理解和掌握Python编程语言的特性和用法。而且代码笔记还可以作为程序员的参考资料,帮助他们在遇到问题时快速找到解决方案并进行复用。 除了记录基本知识之外,Python代码笔记还可以用于记录程序员在实际项目中遇到的问题和解决方案。通过记录这些问题和解决方案,程序员可以在未来的项目中预防和避免相同的问题,并且能够提高自己的编程技巧和经验。 总之,Python代码笔记是程序员学习和实践Python编程语言时记录的一种文档。它可以帮助程序员整理知识、提高编程技巧,并成为他们解决问题和提高效率的有力工具。 ### 回答3: Python代码笔记是程序员在学习和使用Python语言时记录的一种方式。它可以包括以下内容: 首先,Python代码笔记通常会记录Python代码的基本语法和用法。这些笔记会列举Python的关键字、变量类型、运算符、控制流语句等基本知识点,以便在需要的时候进行快速查阅和复习。 其次,Python代码笔记还会记录一些常用的Python库和模块的使用方法。Python具有丰富的第三方库和模块,如numpy、pandas、matplotlib等,这些库在数据处理、科学计算、绘图等领域都有广泛的应用。通过记录库和模块的使用方法,可以帮助程序员实现特定的功能或解决具体的问题。 此外,Python代码笔记还会记录一些常见的编程技巧和经验。比如如何提高代码的效率、如何优化算法、如何进行调试等等。这些技巧和经验是程序员在实际开发中积累的宝贵资料,可以帮助他们更好地解决问题和提高工作效率。 最后,Python代码笔记还可以记录一些项目示例和实践经验。当程序员在开发具体的项目时,他们会遇到各种问题和挑战,记录下来的项目示例和实践经验可以为他们以后的开发工作提供参考和借鉴。这些实践经验可以包括项目的架构设计、数据库操作、接口调用等方面的知识。 综上所述,Python代码笔记是程序员学习和使用Python语言的重要辅助工具,它通过记录基本语法、常用库和模块的使用、编程技巧和经验以及项目示例和实践经验等内容,帮助程序员提高开发效率,解决问题,并不断提升自己的编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值