Live data from Hacker News

Unpythonic Python

skien.cc

1–10 of 156 posts

Re: Unpythonic Python

#2
Neat! I'd be interested in seeing pythonic solutions written in other languages (to the extent that those languages may allow 'Pythonic' style), too. I find it fascinating to see how certain languages will, for one reason or another, trend towards certain design patterns and styles.

Re: Unpythonic Python

#5
post #3

Playing code golf with Python, this is the shortest I could get: https://gist.github.com/tghw/3702360 Definitely a little unpythonic.

In the comments, someone gave this nice solution:

  for x in range(100):
    print x%3/2*'Fizz'+x%5/4*'Buzz' or x+1

Re: Unpythonic Python

#6

Neat! I'd be interested in seeing pythonic solutions written in other languages (to the extent that those languages may allow 'Pythonic' style), too. I find it fascinating to see how certain languages will, for one reason or another, trend towards certain design patterns and styles.

Actually, most Python I write (influence from reading experienced programmers) tends to the last one, although it's semi-jokingly:

    def fizzbuzz(n):
        return 'FizzBuzz' if n % 3 == 0 and n % 5 == 0 else None

    def fizz(n):
        return 'Fizz' if n % 3 == 0 else None

    def buzz(n):
        return 'Buzz' if n % 5 == 0 else None

    def fizz_andor_maybenot_buzz(n):
        print fizzbuzz(n) or fizz(n) or buzz(n) or str(n)

    map(fizz_andor_maybenot_buzz, xrange(1, 101))

It's pleasing to use HFOs in Python, as long as you don't abuse lambdas. Also, some functional types like `defaultdict` can be used to describe code/business logic with datastructures rather than a bunch of if's, keeping things tidy.

Re: Unpythonic Python

#8
post #3

Playing code golf with Python, this is the shortest I could get: https://gist.github.com/tghw/3702360 Definitely a little unpythonic.

Something annoying about python is that the word "lambda" is so long for what are supposed to be one-off functions.

You have

  f=lambda x,y=1,a='Fizz',b='Buzz': ...
But it's actually shorter to say

  def f(x,y=1,a='Fizz',b='Buzz'): ...
I much prefer Haskell's

  \x -> x
Style lambdas.

Re: Unpythonic Python

#10
post #3

Playing code golf with Python, this is the shortest I could get: https://gist.github.com/tghw/3702360 Definitely a little unpythonic.

Something annoying about python is that the word "lambda" is so long for what are supposed to be one-off functions. You have f=lambda x,y=1,a='Fizz',b='Buzz': ... But it's actually shorter to say def f(x,y=1,a='Fizz',b='Buzz'): ... I much prefer Haskell's \x -> x Style lambdas.

> But it's actually shorter

It's not: with def() you have to explicitly write return, while with lambda it is implicit.

Post reply on HN