summarize
Python is a very popular programming language, and with the development of machine learning, cloud computing and other technologies in recent years, the demand for Python jobs is getting higher and higher. Below I have collected 10 questions often asked by Python interviewers for your reference and learning.
class inheritance
There is the following piece of code:
class A(object): def show(self): print 'base show' class B(A): def show(self): print 'derived show' obj = B() ()
How to call the show method of class A now.
The methodology is as follows:
obj.__class__ = A ()
The __ class__ method points to the class object, just assign him type A and call the method show, but remember to change it back when you're done.
method object
QUESTION: What code needs to be added in order for the following piece of code to run?
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(80)
Answer: The call method needs to be implemented in order for the object instance to be called directly
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
new and init
What do you enter into this code below?
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) () a2=A(20) ()
Answers:
NEW 5
B INIT
B fn
NEW 20
INIT 20
A fn
Using the new method, you can decide to return that object, that is, before creating the object, this can be used in the design pattern of the single case, factory pattern. init is to create the object is called.
Python list and dict generation
What is the output of the following code?
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
ANSWER.
[3, 4]
[6, 8]
{2: 4, 4: 16, 6: 36}
{2: 'item4', 4: 'item16', 6: 'item36'}
set(['h', 'r', 'd'])
Global and local variables
What is the output of the following code?
num = 9 def f1(): num = 20 def f2(): print num f2() f1() f2()
ANSWER.
9
9
num is not a global variable, so each function gets its own copy of num, and if you want to modify it, you have to declare it with the global keyword. For example
num = 9 def f1(): global num num = 20 def f2(): print num f2() f1() f2() # prints: # 9 # 20
Swapping the values of two variables
One line of code exchanges two variable values
a=8 b=9
Answers:
(a,b) = (b,a)
default method
The following code
class A(object): def __init__(self,a,b): self.a1 = a self.b1 = b print 'init' def mydefault(self): print 'default' a1 = A(10,20) a1.fn1() a1.fn2() a1.fn3()
The methods fn1/fn2/fn3 are all undefined, add code that is undefined methods all call the mydefault function, the code above should output
default
default
default
Answers:
class A(object): def __init__(self,a,b): self.a1 = a self.b1 = b print 'init' def mydefault(self): print 'default' def __getattr__(self,name): return a1 = A(10,20) a1.fn1() a1.fn2() a1.fn3()
The method getattr is calling him only when the undefined method is called. When the fn1 method is passed arguments, we can add a *args indefinite argument to the mydefault method to be compatible.
class A(object): def __init__(self,a,b): self.a1 = a self.b1 = b print 'init' def mydefault(self,*args): print 'default:' + str(args[0]) def __getattr__(self,name): print "other fn:",name return a1 = A(10,20) a1.fn1(33) a1.fn2('hello') a1.fn3(10)
package management
There are three modules in a package,, , but when importing modules using from demopack import *, how do I make sure that only mod1, mod3 have been imported.
Answer:Add the file and add it to the file:
__ all__ = ['mod1','mod3']
closure (math)
Write a function that takes an integer argument n and returns a function that multiplies the function's argument with n and returns the result.
ANSWER.
def mulby(num): def gn(val): return num * val return gn zw = mulby(7) print(zw(9));
performances
Parsing the following code is slow
def strtest1(num): str='first' for i in range(num): str+="X" return str
Answer: python's str is an immutable object, each iteration, a new str object is generated to store the new string, the larger the num, the more str objects are created and the more memory is consumed.
This is the whole content of this article.