|
Technical Interview Questions
C++ Interview Questions
Php Interview Questions
Xml
Interview Questions
C Interview Questions
.........More
Soft Skills
Communication Skills
Leadership Skills
.........More
|
|
Python Interview Questions and Answers
What is Python?
Python is an interpreted, interactive, object-oriented
programming language. It incorporates modules,
exceptions, dynamic typing, very high level dynamic data
types, and classes. Python combines remarkable power
with very clear syntax. It has interfaces to many system
calls and libraries, as well as to various window
systems, and is extensible in C or C++. It is also
usable as an extension language for applications that
need a programmable interface. Finally, Python is
portable: it runs on many Unix variants, on the Mac, and
on PCs under MS-DOS, Windows, Windows NT, and OS/2.
Why can't I use an assignment in an expression?
Many people used to C or Perl complain that they want to
use this C idiom:
while (line = readline(f)) {
...do something with line...
}
where in Python you're forced to write this:
while True:
line = f.readline()
if not line:
break
...do something with line...
The reason for not allowing assignment in Python
expressions is a common, hard-to-find bug in those other
languages, caused by this construct:
if (x = 0) {
...error handling...
}
else {
...code that only works for nonzero x...
}
The error is a simple typo: x = 0, which assigns 0 to
the variable x, was written while the comparison x == 0
is certainly what was intended.
Many alternatives have been proposed. Most are hacks
that save some typing but use arbitrary or cryptic
syntax or keywords, and fail the simple criterion for
language change proposals: it should intuitively suggest
the proper meaning to a human reader who has not yet
been introduced to the construct.
An interesting phenomenon is that most experienced
Python programmers recognize the "while True" idiom and
don't seem to be missing the assignment in expression
construct much; it's only newcomers who express a strong
desire to add this to the language.
There's an alternative way of spelling this that seems
attractive but is generally less robust than the "while
True" solution:
line = f.readline()
while line:
...do something with line...
line = f.readline()
The problem with this is that if you change your mind
about exactly how you get the next line (e.g. you want
to change it into sys.stdin.readline()) you have to
remember to change two places in your program -- the
second occurrence is hidden at the bottom of the loop.
The best approach is to use iterators, making it
possible to loop through objects using the for
statement. For example, in the current version of Python
file objects support the iterator protocol, so you can
now write simply:
for line in f:
... do something with line...
Is there a tool to help find bugs or perform static
analysis?
Yes.
PyChecker is a static analysis tool that finds bugs in
Python source code and warns about code complexity and
style.
Pylint is another tool that checks if a module satisfies
a coding standard, and also makes it possible to write
plug-ins to add a custom feature.
How do you set a global variable in a function?
Did you do something like this?
x = 1 # make a global
def f():
print x # try to print the global
...
for j in range(100):
if q>3:
x=4
Any variable assigned in a function is local to that
function. unless it is specifically declared global.
Since a value is bound to x as the last statement of the
function body, the compiler assumes that x is local.
Consequently the print x attempts to print an
uninitialized local variable and will trigger a
NameError.
The solution is to insert an explicit global declaration
at the start of the function:
def f():
global x
print x # try to print the global
...
for j in range(100):
if q>3:
x=4
In this case, all references to x are interpreted as
references to the x from the module namespace.
What are the rules for local and global variables in
Python?
In Python, variables that are only referenced inside a
function are implicitly global. If a variable is
assigned a new value anywhere within the function's
body, it's assumed to be a local. If a variable is ever
assigned a new value inside the function, the variable
is implicitly local, and you need to explicitly declare
it as 'global'.
Though a bit surprising at first, a moment's
consideration explains this. On one hand, requiring
global for assigned variables provides a bar against
unintended side-effects. On the other hand, if global
was required for all global references, you'd be using
global all the time. You'd have to declare as global
every reference to a builtin function or to a component
of an imported module. This clutter would defeat the
usefulness of the global declaration for identifying
side-effects.
How do I share global variables across modules?
The canonical way to share information across modules
within a single program is to create a special module
(often called config or cfg). Just import the config
module in all modules of your application; the module
then becomes available as a global name. Because there
is only one instance of each module, any changes made to
the module object get reflected everywhere. For example:
config.py:
x = 0 # Default value of the 'x' configuration setting
mod.py:
import config
config.x = 1
main.py:
import config
import mod
print config.x
Note that using a module is also the basis for
implementing the Singleton design pattern, for the same
reason.
Page Numbers : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Have a Question ?
post your questions here. It
will be answered as soon as possible.
Check
HTML Interview
Questions for more HTML Interview Questions with Answers
Check
Job Interview Questions
for more Interview Questions with Answers
|