10个Python面试常问的问题_python面试中的常问问题(1)

    print 'base show'

class B(A):
def show(self):
print ‘derived show’

obj = B()
obj.show()


如何调用类A的show方法了。 方法如下:



obj.class = Aobj.show()


\_\_class\_\_方法指向了类对象,只用给他赋值类型A,然后调用方法show,但是用完了记得修改回来。


**2、方法对象**


问题:为了让下面这段代码运行,需要增加哪些代码?



class A(object):
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)


答案:为了能让对象实例能被直接调用,需要实现\_\_call\_\_方法



class A(object):
def init(self, a, b):
self.__a = a
self.__b = b
def myprint(self):
print ‘a=’, self.__a, ‘b=’, self.__b
def call(self, num):
print ‘call:’, num + self.__a


**3、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()


答案:



NEW 5
B INIT
B fn
NEW 20
INIT 20
A fn


使用\_\_new\_\_方法,可以决定返回那个对象,也就是创建对象之前,这个可以用于设计模式的单例、工厂模式。\_\_init\_\_是创建对象是调用的。


**4、Python 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’}
set([‘h’, ‘r’, ‘d’])


**5、全局和局部变量**


下面这段代码输出什么?



num = 9

def f1():
num = 20

def f2():
print num

f2()
f1()
f2()


答案:



9
9


num不是个全局变量,所以每个函数都得到了自己的num拷贝,如果你想修改num,则必须用global关键字声明。比如下面这样



num = 9

def f1():
global num
num = 20

def f2():
print num

f2()
f1()
f2()

prints:

9

20


**6、交换两个变量的值**


一行代码交换两个变量值



a=8
b=9


答案:



(a,b) = (b,a)




### 最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~  

给大家准备的学习资料包括但不限于:  

Python 环境、pycharm编辑器/永久激活/翻译插件  

python 零基础视频教程  

Python 界面开发实战教程  

Python 爬虫实战教程  

Python 数据分析实战教程  

python 游戏开发实战教程  

Python 电子书100本  

Python 学习路线规划

![](https://img-blog.csdnimg.cn/d29631674929476f9c3b30f7ff58dff0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值