News for hackers. Stuff that matters.
Re:I have no side code projects to show by vigrante on Friday December 16, 2016 @08:26PM (#13198529)
That's a pretty elaborate story to rationalize the fact you didn't know the difference between range and xrange....
Re:I have no side code projects to show by gravypod on Friday December 16, 2016 @09:41PM (#13198854)
Unless you've written a lot of Python 2, or ported a lot of it in my case, then you wouldn't know. It's a stupid question with little basis in actually seeing if someone know's what they are talking about.
Re:I have no side code projects to show by jghn on Saturday December 17, 2016 @11:11AM (#13201168)
Really? I used python for a few years a long while back and I thought that this was common knowledge. Perhaps it was the timing of it all as I now that I google around a bit most of the SO posts and such are from when I was writing Python.
Re:I have no side code projects to show by unethical_ban on Friday December 16, 2016 @08:41PM (#13198594)
It doesn't need to be rationalized. I don't know it without googling it, but I can still get by writing some useful automation for Ops work. Granted, I haven't interviewed for a full-time Python gig, but even the one or two REALLY sharp programmers I know need to reference the web for a lot of stdlib stuff they don't use often.
Re:I have no side code projects to show by srssays on Friday December 16, 2016 @11:19PM (#13199175)
xrange vs range is basic competence for any Python 2 programmer. They are two of the most commonly used functions and have very distinct uses. I think that was the point of the original post, however, that the question is so basic it is actually insulting - like interviewing a doctor and asking the difference between red and white blood cells.
Re:I have no side code projects to show by drvdevd on Saturday December 17, 2016 @02:56AM (#13199805)
I don't know this. And I don't care. I don't self-identify as anything near a "Python programmer" and yet I've written, modified, read, and debugged (and put into production at times), let's say 100's of thousands of lines of Python since the late 90s. Not a ton, perhaps, but I certainly feel qualified to write it.

I'm forced to maintain (or deploy) other people's Python code all the time. Personally, I would rarely choose it for a team project I have to maintain (if the choice is mine) because I've seen most teams commit the same annoying type errors over and over in every dynamic language I've ever used, including epecially Python. I've worked with much more competent Python programmers than myself who still do this.

But if I was on your team, I wouldn't complain and my code would be somewhere between pretty good to great. I would help the team ship that Python and ship it well.

I'm not sure what this rant says more about: me or this 'range vs xrange' question?

Re:I have no side code projects to show by srssays on Saturday December 17, 2016 @07:08PM (#13203519)
The problem is that it's bad style to write (in Python 2.x):

    for i in range(n):
        # your code here
because it potentially allocates a lot of memory for no reason whatsoever. It's the equivalent of this C code:

    int* r = calloc(sizeof(int), n);
    for (int j = 0; j < n; j++) r[j] = j;
    for (int j = 0; j < n; j++) {
        int i = r[j];
        // your code here
    }
    free(r);
If you don't want to deal with the distinction then what you can do is just treat range() as deprecated and always use either xrange() or list(xrange()) depending on the situation. But you had probably ought to know about the issue.
Re:I have no side code projects to show by drvdevd on Sunday December 18, 2016 @02:27AM (#13204757)
Ok, I would certainly agree then that I ought to know about that (for Python 2.x).

And here's the thing: despite my rant, given that explanation, I'm going to have to say I respect that as a Python (2.x) interview question.

But that's because I care about performance optimization and good style in every language I use. I'm not sure that everyone else always should or that this should be a deal breaker for a python dev gig.

Re:I have no side code projects to show by jonathankoren on Friday December 16, 2016 @08:34PM (#13198574)
The correct answer is of course, is that xrange doesn't exist.
Re:I have no side code projects to show by fencepost on Friday December 16, 2016 @10:59PM (#13199111)
I'd say that the correct answer would be "Which version of Python are you using?" but I actually kind of like the question - it's an important enough function that most people doing more than toy projects would have needed to use it at some point or at least would have considered it, but it's also something that has changed recently enough that people who are claiming long-term experience will have dealt with both versions.

My Python is rusty, but I actually had to go look up the differences - my initial thought was "I'm pretty sure it used to be that range() generated a list and xrange() basically just iterated a value, but at some point range() was changed to use the xrange() behavior - I'd have to look it up to give you more detail than that." I didn't realize that xrange() had been completely removed from 3.x, for example. For that matter, I was thinking that both of them might have existed in 1.x, though it looks like they were added in 2.0.

Re:I have no side code projects to show by logicallee on Friday December 16, 2016 @08:50PM (#13198635)
In short, it's the default behavior in Python 3; it doesn't exist anymore:

http://pythoncentral.io/how-to-use-pythons-xrange-and-range/

From that article (buried near the end for some reason):

>One more thing to add. In Python 3.x, the xrange function does not exist anymore. The range function now does what xrange does in Python 2.x, so to keep your code portable, you might want to stick to using range instead.

Re:I have no side code projects to show by ant6n on Friday December 16, 2016 @08:51PM (#13198641)
so they removed it from python 3?
Re:I have no side code projects to show by OJFord on Friday December 16, 2016 @10:49PM (#13199067)
`range` took the behaviour of `xrange`; the latter name was removed.

https://docs.python.org/3/whatsnew/3.0.html#views-and-iterat...

Re:I have no side code projects to show by brianwawok on Friday December 16, 2016 @08:53PM (#13198650)
And if they don't agree or laugh, time for a table flip.
Re:I have no side code projects to show by dongslol on Friday December 16, 2016 @09:36PM (#13198834)
He didn't say he didn't.
Re:I have no side code projects to show by vigrante on Monday December 19, 2016 @03:46PM (#13214832)
Probably should of put /s at the end of my comment.... :)
Re:I have no side code projects to show by dongslol on Monday December 19, 2016 @10:51PM (#13217328)
Oh, oops, sorry!
Re:I have no side code projects to show by ldev on Sunday December 18, 2016 @02:48PM (#13207246)
Some people aren't born to code...