1 性能: 解析下面代码慢在哪里
def strtest1(num):
str='first'
for i in range(num):
str+="X"
return str
解析:python中str是一个不可变类型,每次迭代,都会生成一个新的str来储存对象,当num特别大的时候,就会创建很多的str,所有对内存的占用也
会特别的大。 2 闭包:写一个函数,接收整数参数n,返回一个函数,函数的功能是把函数的参数和n相乘并把结果返回
def func(n):
def func1(val):
return val * n
return func1 num = func(2)
print(num(3)) 3 包管理:一个包里有三个模块,mod1.py, mod2.py, mod3.py,但使用from demopack import *导入模块时,如何保证只有mod1、mod3被
导入了
增加__init__.py文件,文件内容为
all =['mod1', 'mod3'] 4 类:添加代码
class A: def __init__(self, a, b):
self.a1 = a
self.b1 = bdef mydefault(self):
print('default') a1 = A(10, 20)
a1.fn1()
a1.fn2()
a1.fu3()
要求输出:
default
default
default 修改后代码如下:
class A: def __init__(self, a, b):
self.a1 = a
self.b1 = b def mydefault(self):
print('default') def __getattr__(self, item):
return self.mydefault a1 = A(10, 20)
a1.fn1()
a1.fn2()
a1.fu3()
方法__getattr__只有在调用没有定义的方法时,才会调用它。 以下代码给mydefault加上了参数:
class A: def __init__(self, a, b):
self.a1 = a
self.b1 = b def mydefault(self, *args):
print('default' + str(args[0])) def __getattr__(self, item):
return self.mydefault a1 = A(10, 20)
a1.fn1(10)
a1.fn2('hello')
a1.fu3(20) 5 交换变量:一行代码交换变量
a, b = b, a 6 全局变量和局部变量:下面代码输了什么
num = 9
def f1():
num = 20 def f2():
print(num) f2()
f1()
f2()
答案:
9
9
修改代码:
num = 9
def f1():
global num
num = 20 def f2():
print(num) f2()
f1()
f2()
得到答案:
9
20 7 list和dict:下面代码输出什么
ls = [1,2,3,4]
list1 = [i for i in ls if i>2]
print list1
list2 = [i*2 for i in ls if i>2]
print list2
dic1 = {x: x**2 for x in (2, 4, 6)}
print dic1
dic2 = {x: 'item' + str(x**2) for x in (2, 4, 6)}
print dic2
set1 = {x for x in 'hello world' if x not in 'low level'}
print set1
答案"
[3, 4]
[6, 8]
{2:4, 4:16, 6:36}
{2:'item4', 4:'item16', 6:'item36'}
{'h', 'r', 'd'} 8 new和init:下面代码输出什么
class B(object):
def fn(self):
print 'B fn'
def __init__(self):
print "B INIT"
class A(object):
def fn(self):
print 'A fn'
def __new__(cls,a):
print "NEW", a
if a>10:
return super(A, cls).__new__(cls)
return B()
def __init__(self,a):
print "INIT", a
a1 = A(5)
a1.fn()
a2=A(20)
a2.fn()
答案:
先修改上述代码:
class B:
def fn(self):
print('B fn') def __init__(self):
print('B init') class A:
def fn(self):
print('A fn') def __new__(cls, a):
print('New ', a)
if a > 10:
return super(A, cls).__new__(cls)
else:
return B() def __init__(self, a):
print('init ', a) a1 = A(5)
a1.fn()
a2 = A(20)
a2.fn()
答案:
New 5
B init
B fn
New 20
init 20
A fn 9 方法对象:为了让下面代码运行,需要增加什么
class A:
def __init__(self, a, b):
self.__a = a
self.__b = b def myprint(self):
print('a=', self.__a, 'b=', self.__b) a1 = A(10, 20)
a1.myprint()
a1(80)
答案: class A:
def __init__(self, a, b):
self.__a = a
self.__b = b def myprint(self):
print('a=', self.__a, 'b=', self.__b) def __call__(self, *args):
print('call:', args[0] + 20) a1 = A(10, 20)
a1.myprint()
a1(80) 10 继承:如何让obj继承A类的show方法
class A:
def show(self):
print('base show') class B(A):
def show(self):
print('derived show') obj = B()
obj.show()
答案:
class A:
def show(self):
print('base show') class B(A):
def show(self):
print('derived show') obj = B()
obj.__class__ = A
obj.show()

python面试中被问的最多的10道题的更多相关文章

  1. 面试中常问的List去重问题,你都答对了吗?

    面试中经常被问到的list如何去重,用来考察你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固. 我们大家都知道,set集合的特点就是没有重复的元素.如果集合中的数据类型是基本 ...

  2. Python 面试中 8 个必考问题(转载)

    Python 面试中 8 个必考问题 1.下面这段代码的输出结果是什么?请解释. def extendList(val, list=[]): list.append(val) return list ...

  3. [译]Python面试中8个必考问题

    1.下面这段代码的输出结果是什么?请解释. def extendList(val, list=[]): list.append(val) return list list1 = extendList( ...

  4. Python 面试中可能会被问到的30个问题

    第一家公司问的题目 1 简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候才翻译.这样解释型语言每执行一次 ...

  5. 全栈工程师对Python面试中is和==区别的详细解说!看完真的学到了!

    面试实习生的时候,当问到 is 和 == 的区别时,很多同学都答不上来,搞不清两者什么时候返回一致,什么时候返回不一致.本文我们来看一下这两者的区别. 我们先来看几个例子: a = "hel ...

  6. Java面试中常问的数据库方面问题

    MySQL 为什么用自增列作为主键 如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引.如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作 ...

  7. 面试中常问的五种IO模型和BIO,NIO,AIO

    一,五种IO模型: 一个IO操作可以分为两个步骤:发起IO请求和实际的IO操作例如:1.操作系统的一次写操作分为两步:第一步,将数据从用户空间拷贝到系统空间:第二步,从系统空间往网卡写.2.一次读操作 ...

  8. 面试中经常问到的Redis七种数据类型,你都真正了解吗?

    前言 Redis不是一个简单的键值对存储,它实际上是一个支持各种类型数据结构的存储.在传统的键值存储中,是将字符串键关联到字符串值,但是在Redis中,这些值不仅限于简单的字符串,还可以支持更复杂的数 ...

  9. 聊聊面试中常问的GC机制

    GC 中文直译垃圾回收,是一种回收内存空间避免内存泄漏的机制.当 JVM 内存紧张,通过执行 GC 有效回收内存,转而分配给新对象从而实现内存的再利用. JVM GC 机制虽然无需开发主动参与,减轻不 ...

随机推荐

  1. 4,postman和newman的联合使用

    1:下载安装node.js http://nodejs.cn/ 出现版本号证明安装node.js成功 2:安装newman npm install -g newman --registry=https ...

  2. Charles抓https请求详细步骤

    1.电脑上安装好Charles 2.电脑上安装证书 (1)点击Help - SSL Proxying - Install Charlse Root Certificate (2)在电脑上找到证书.此时 ...

  3. Maven 生成可执行的jar包

    maven 默认打包生成的 jar 包是不能够直接运行的,因为带有 main 方法的类信息不会添加到 manifest 中,即打开 jar 文件中的 META-INF/MANIFEST.MF 文件,将 ...

  4. 《Java并发编程的艺术》Java内存模型(三)

    Java内存模型 一.Java内存模型的基础 1.并发编程模型的两个关键问题: 两个关键问题,线程之间如何通信和如何同步.两种方式,共享内存和消息传递.Java里线程的通信是通过共享内存,线程的同步是 ...

  5. java -关于包装类自动装箱与拆箱拓展+整形常量池

    关于自动装箱与拆箱 1.包装类与基本数据类型的自动转换,叫装箱和拆箱(类型自动转换) 2.自动装箱拆箱是在编译器,编译器自动配转换方法,实现装箱和拆箱.所以这个过程发生在编译期 3.只有需要相互类型转 ...

  6. 给area标签添加红色边框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org ...

  7. Java容器-个人整理1

    1.初始化集合时,若能知道知道容量,尽量初始化时确定容量.容器类一般可以自动扩充,但扩充是有性能代价的. 2.Arrays.asList()的底层表示仍然时数组,因此不能进行调整尺寸的操作. 3.Ha ...

  8. vue中使用axios

    1.结合vue-axios使用 vue-axios是按照vue插件的方式去写的,那么结合vue-axios就可以使用Vue.use()这个方法import axios from 'axios' imp ...

  9. 详细分析LoadRunner参数化

    在进行网页的性能测试时,对网页的登录界面进行压力测试情况下就会使用到多用户进行登录,就需要对登录名和密码进行参数化,那么loadrunner怎么参数化设置呢?下面我们来详细分析一下. 一.我们这里通过 ...

  10. 招聘ETL开发工程师

    上班地点徐汇 本科以上学历 3年以上ETL开发经验熟悉Oracle数据库,精通PL  SQL开发与优化,熟悉Vertica或者GreenPlum库优先 熟悉数据库性能优化,有海量数据处理经验优先 自荐 ...