Python初级面试语法<一>
可变对象与不可变对象
可变对象存的是地址,地址不变,但地址指向的值可以变(引用类型)。类型:list、dict、set等
不可变对象直接存值,值变了,就是另一个对象了(值类型)。int、float、tuple、string等
直接赋值,浅拷贝,深拷贝
在含有可变对象讨论这个问题更显得有意义。
直接赋值:直接传递对象的引用。浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变。深拷贝,原始对象的改变不会造成深拷贝里任何子元素的改变。
__init__和__new__区别
__new__控制新实例的生成,__init__初始化一个新实例。可以用__new__实现单例模式。
设计模式
大话设计的工厂、代理、单例、观察者...... 。想起了这篇文章 20年前GoF提出的设计模式,对这个时代是否还有指导意义?
编码、解码
字符编码有GBK、ASCII、UTF-8、 Unicode等。encode和decode分别指编码和解码。明文--->选中一种编码加密-->密文,反之解码。
列表推导(list comprehension)和生成表达式(generator expression)的优劣
列表推导一下子生成完了列表,免去以后计算的时间,提高了性能,浪费了内存。而生成表达式延迟了列表的生成时间,需要它才一个个生成出来,节省了内存,降低了性能。
什么是装饰器?
装饰器就是把函数包装一下,为函数添加一些附加功能,装饰器就是一个函数,参数为被包装的函数,返回包装后的函数。
如果装饰器和被装饰的函数还有其他参数呢(也可以问如果在函数之后再进行装饰,该如何做)?
再包装一层 (个人觉得这里说得通俗易懂 https://zhidao.baidu.com/question/580801144.html)
使用装饰器实现单例模式的代码
def singleton(cls, *args, **kwargs):
instance = {}
def _instance():
if cls not in instance:
instance[cls] = cls(*args, *kwargs)
return instance[cls]
return _instance
使用装饰器和使用其他方法实现单例区别?
未能找到比较好的解答,求推荐。感觉这篇写得不错https://www.cnblogs.com/huchong/p/8244279.html
手写一个邮箱验证正则
邮箱前缀允许中文、英文、数字 ,中间必须有@符号 ,最后必须是域名 域名名称 只可以是英文和符号_ -的组合。(题外话:没必要太纠结邮箱格式,邮箱格式一直都在变,以前不许有中文,现在都允许有了)
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
( 随意看看: ^表示开始,$表示结束。[ 标记匹配字符表达式的开始,] 标记匹配字符表达式的结束。
+表示匹配前面表达式的字符要出现一个或多个,\表示转义。( 和 )分别标记子表达式的开始和结束。)
多进程与多线程的区别
多线程之间可以共享资源,多进程各自独占资源。
CPU密集型适用多进程还是多线程?
多进程,原因:要提高CPU密集型操作效率,任务同时进行的数量尽可能等于CPU的核心数,使用多线程,也不能并行运算。
内存管理(或垃圾回收):引用计数/孤立引用环 /分代回收
指向该对象的引用总数为引用计数,对象之间相互引用形成了孤立引用环。
当某一代对象经历过垃圾回收,依然存活,那么它就被归入下一代对象,分代回收使得存活越就的对象越迟被回收。这篇内存管理讲得不错http://www.cnblogs.com/vamei/p/3232088.html
进程之间的通信方式
消息队列、信号量、管道、socket等
什么是协程?为什么比线程快?
一种程序组件,比线程快其一因为没有线程上下文切换的开销。https://www.cnblogs.com/zingp/p/5911537.html
问题来源:https://blog.csdn.net/csdnsevenn/article/details/79068624~
Python初级面试语法<一>的更多相关文章
- Python自动化面试必备 之 你真明白装饰器么?
Python自动化面试必备 之 你真明白装饰器么? 装饰器是程序开发中经常会用到的一个功能,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多小白来讲,这个功能 有点绕 ...
- python yield from 语法
python yield from 语法 yield语法比较简单, 教程也很多 , yield from的中文讲解很少 , python官网是这样解释的 PEP 380 adds the yield ...
- Python基础:语法基础(3)
本篇主要介绍Python中一些基础语法,其中包括:标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 1. 标识符和关键字 1.1 标识符 标识符是变量.常量.函数.属性.类.模块和包等 ...
- Python的基础语法(二)
0. 前言 接着上一篇博客的内容,我将继续介绍Python相关的语法.部分篇章可能不只是简单的语法,但是对初学者很有帮助,也建议读懂. 1. 表达式 由数字.符号.括号.变量等组成的组合. 算术表达式 ...
- 六. Python基础(6)--语法
六. Python基础(6)--语法 1 ● Python3中, Unicode转字节的方法 print(bytes("李泉", encoding = 'utf-8')) prin ...
- 五. Python基础(5)--语法
五. Python基础(5)--语法 1 ● break结束的是它所在的循环体, continue是让它所在的循环体继续循环 # 打印: 1 10 2 10 3 10 4 10 5 10 6 10 7 ...
- 四. Python基础(4)--语法
四. Python基础(4)--语法 1 ● 比较几种实现循环的代码 i = 1 sum = 0 while i <= 10: # 循环10-1+1=10次 sum += i i ...
- 三. Python基础(3)--语法
三. Python基础(3)--语法 1. 字符串格式化的知识补充 tpl = "我是%s,年龄%d,学习进度100%" %('Arroz',18) print(tpl) # 会提 ...
- 二. Python基础(2)--语法
二. Python基础(2)--语法 1.实现一个简单的登录系统 '''# 形式1 n = 1 while n < 4: name = input("请输入姓名\n" ...
随机推荐
- arp脚本
1.什么是arp?arp可以解决什么问题? ARP:是地址解析协议 arp解决我们知道一个机器(主机或者路由器)的IP地址,需要找出其相应的硬件地址 2.编写ARP脚本,抓取对应主机的mac地址 1 ...
- ASP.NET Core 微服务初探[2]:熔断降级之Polly
当我们从单体架构迁移到微服务模式时,其中一个比较大的变化就是模块(业务,服务等)间的调用方式.在以前,一个业务流程的执行在一个进程中就完成了,但是在微服务模式下可能会分散到2到10个,甚至更多的机器( ...
- java基础知识-笔记整理
1.查看已安装jdk文件路径 CMD输入java -verbose. 2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...
- 阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路
本文原始内容由作者“阳振坤”整理发布于OceanBase技术公众号. 1.引言 OceanBase 是蚂蚁金服自研的分布式数据库,在其 9 年的发展历程里,从艰难上线到找不到业务场景濒临解散,最后在双 ...
- Nginx+tomcat集群使用redis共享session
一 :nginx负载均衡 当Tomcat当做独立的Servlet容器来运行时,可看做是能运行Java Servlet的独立Web服务器. 此外 Tomcat还可以作为其他Web服务器进程内或者进程外的 ...
- pycharm删除project
1 在pycharm里面选择关闭project 2 返回到这个页面,然后点×让project不在project列表显示(最好记住project的位置) 3 到源文件夹删除这个project文件夹 大功 ...
- Java-二进制转10进制原理机制
任何文件在计算机储存时都是以二进制储存的,由 1和0 组成,如: 101010101010100111110100101010 现在有一组二进制数据: 10010110 那么他转成10进制是多少呢(我 ...
- 项目中git版本控制及协作开发的常用操作(命令行,小乌龟,sourcetree)
一. git命令:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 小乌龟:htt ...
- SVN切换账号
问题背景 SVN账号在登录的时候,默认是保存在个人电脑的 C:\Users\Administrator\AppData\Roaming\Subversion\auth\svn.simple\ 目录下的 ...
- Java IO 导入导出Excel表格
1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...