Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. python - tail stuck under the rocks?

python - tail stuck under the rocks?

Scheduled Pinned Locked Moved The Lounge
helppythonbusinesstutorialquestion
38 Posts 18 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Nand32

    Okay, that was an analogy. I was trying a little piece of Python code. Got a bit surprised with the "positional"-indentation requirements in code. Just like how it used to be in older programming languages like Cobol. (I'm not sure if any other recent programming languages enforce these) For example,

    If x is a:
    do //indented & works

    is different from

    if x is a:
    do //Non-indented & throws error

    It's funny, and doesn't this sound rudimentary and a bit annoying? :)

    P Offline
    P Offline
    PIEBALDconsult
    wrote on last edited by
    #4

    Supporting and encouraging good (consistent) formatting is a good thing, but requiring it isn't. (In my opinion) one of the strengths of C-like languages is that whitespace is pretty much unimportant. With C and C# -- unless you have directives -- each sequence of whitespace can be reduced to a single SPACE without affecting the meaning of the code. When I write C, I try to put all the directives in their own files, away from the actual C code.

    1 Reply Last reply
    0
    • L Lost User

      The first version will not work as it has a syntax error. It should be:

      if x is a: # note the trailing colon

      N Offline
      N Offline
      Nand32
      wrote on last edited by
      #5

      :) fixed ! Thanks

      1 Reply Last reply
      0
      • OriginalGriffO OriginalGriff

        It sorta makes sense, and in theory at least should encourage correct indentation. But ... that won't save it. Survey Results - If you know C, C++, C#, Objective C or Java do you also know Python?[^] Just the "no need to declare variables" sends a shiver down my spine. That's actually worse than VB could manage - and that takes some doing!

        Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #6

        OriginalGriff wrote:

        "no need to declare variables" sends a shiver down my spine.

        Er, isn't that exactly why the "var" keyword was invented? A few years from now no one will be using proper typed variables any more.

        OriginalGriffO R 2 Replies Last reply
        0
        • L Lost User

          OriginalGriff wrote:

          "no need to declare variables" sends a shiver down my spine.

          Er, isn't that exactly why the "var" keyword was invented? A few years from now no one will be using proper typed variables any more.

          OriginalGriffO Offline
          OriginalGriffO Offline
          OriginalGriff
          wrote on last edited by
          #7

          Oh, no, no, no, no! Python's version is worse: you don't need to declare the variable using "var", or "Dim", or anything - just pick a name and assign a value. So if you misspell it ... that's a new variable. Just like FORTRAN was back in the day (1977). And that caused a probe to miss the planet Venus completely, so what it does in a banking app, or a Boeing 737 Max is not something you want to think about too hard, really. Strongly typed variables should be mandatory in all languages used in the 21st century!

          Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

          "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
          "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

          L G 3 Replies Last reply
          0
          • OriginalGriffO OriginalGriff

            Oh, no, no, no, no! Python's version is worse: you don't need to declare the variable using "var", or "Dim", or anything - just pick a name and assign a value. So if you misspell it ... that's a new variable. Just like FORTRAN was back in the day (1977). And that caused a probe to miss the planet Venus completely, so what it does in a banking app, or a Boeing 737 Max is not something you want to think about too hard, really. Strongly typed variables should be mandatory in all languages used in the 21st century!

            Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #8

            OriginalGriff wrote:

            Python's version is worse

            I agree, but you can still do quite a bit of damage with var.

            OriginalGriff wrote:

            Strongly typed variables should be mandatory in all languages used in the 21st century!

            That is definitely true; but will teachers explain that properly to their students?

            Sander RosselS 1 Reply Last reply
            0
            • L Lost User

              OriginalGriff wrote:

              "no need to declare variables" sends a shiver down my spine.

              Er, isn't that exactly why the "var" keyword was invented? A few years from now no one will be using proper typed variables any more.

              R Offline
              R Offline
              r_hyde
              wrote on last edited by
              #9

              But a `var` (as in C#, say) isn't at all the same thing as an untyped (or rather, dynamically-typed) variable (as in Python). When you write `var x = 5;`, `x` is still an `int` just the same as if you'd written `int x = 5;`, you're just helping yourself save some keystrokes and letting the compiler infer the type (ok, you're not saving any keystrokes in that example, but not every type name is as succinct as `int` ;P ). You can't then turn around and write `x = "snuggles";` or the compiler will throw a fit, unlike Python where it would be perfectly legal. More and more people might be using `var`, but let's not confuse that with "no one will be using proper typed variables any more!"

              Sander RosselS 1 Reply Last reply
              0
              • OriginalGriffO OriginalGriff

                Oh, no, no, no, no! Python's version is worse: you don't need to declare the variable using "var", or "Dim", or anything - just pick a name and assign a value. So if you misspell it ... that's a new variable. Just like FORTRAN was back in the day (1977). And that caused a probe to miss the planet Venus completely, so what it does in a banking app, or a Boeing 737 Max is not something you want to think about too hard, really. Strongly typed variables should be mandatory in all languages used in the 21st century!

                Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                L Offline
                L Offline
                Lost User
                wrote on last edited by
                #10

                OriginalGriff wrote:

                just pick a name and assign a value. So if you misspell it ... that's a new variable

                but how do you misspell "i"

                Message Signature (Click to edit ->)

                OriginalGriffO K 2 Replies Last reply
                0
                • L Lost User

                  OriginalGriff wrote:

                  just pick a name and assign a value. So if you misspell it ... that's a new variable

                  but how do you misspell "i"

                  Message Signature (Click to edit ->)

                  OriginalGriffO Offline
                  OriginalGriffO Offline
                  OriginalGriff
                  wrote on last edited by
                  #11

                  'j'? 'u', 'o', 'k'? All easy to do, especially on a "soft keyboard". :laugh:

                  Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                  "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                  "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                  D 1 Reply Last reply
                  0
                  • OriginalGriffO OriginalGriff

                    'j'? 'u', 'o', 'k'? All easy to do, especially on a "soft keyboard". :laugh:

                    Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                    D Offline
                    D Offline
                    David ONeil
                    wrote on last edited by
                    #12

                    Use Cryllic. Word doesn't match the second as 'sit': sit sіt

                    The forgotten roots of science | C++ Programming | DWinLib

                    OriginalGriffO 1 Reply Last reply
                    0
                    • D David ONeil

                      Use Cryllic. Word doesn't match the second as 'sit': sit sіt

                      The forgotten roots of science | C++ Programming | DWinLib

                      OriginalGriffO Offline
                      OriginalGriffO Offline
                      OriginalGriff
                      wrote on last edited by
                      #13

                      There is also the "Extra quote character": ''' which looks just like the ones around it, but will not compile in other peoples code - not that you would replace any, I'm sure ... :laugh:

                      Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                      "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                      "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                      D 1 Reply Last reply
                      0
                      • L Lost User

                        OriginalGriff wrote:

                        Python's version is worse

                        I agree, but you can still do quite a bit of damage with var.

                        OriginalGriff wrote:

                        Strongly typed variables should be mandatory in all languages used in the 21st century!

                        That is definitely true; but will teachers explain that properly to their students?

                        Sander RosselS Offline
                        Sander RosselS Offline
                        Sander Rossel
                        wrote on last edited by
                        #14

                        Richard MacCutchan wrote:

                        I agree, but you can still do quite a bit of damage with var.

                        In what language? JavaScript? Certainly, but JavaScript doesn't really get much better than that... In C# it's still a typed variable, so it's exactly the same thing as explicitly using the type name except instead of the type name you use var. So no damage there, except to readability.

                        Best, Sander sanderrossel.com Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly

                        F 1 Reply Last reply
                        0
                        • R r_hyde

                          But a `var` (as in C#, say) isn't at all the same thing as an untyped (or rather, dynamically-typed) variable (as in Python). When you write `var x = 5;`, `x` is still an `int` just the same as if you'd written `int x = 5;`, you're just helping yourself save some keystrokes and letting the compiler infer the type (ok, you're not saving any keystrokes in that example, but not every type name is as succinct as `int` ;P ). You can't then turn around and write `x = "snuggles";` or the compiler will throw a fit, unlike Python where it would be perfectly legal. More and more people might be using `var`, but let's not confuse that with "no one will be using proper typed variables any more!"

                          Sander RosselS Offline
                          Sander RosselS Offline
                          Sander Rossel
                          wrote on last edited by
                          #15

                          Dictionary<string, IEnumerable<IEnumerable<SomeValue>>> valuesPerLineFromACsvFileByKey = new Dictionary<string, IEnumerable<IEnumerable<SomeValue>>>();

                          or:

                          var valuesPerLineFromACsvFileByKey = new Dictionary<string, IEnumerable<IEnumerable<SomeValue>>>();

                          :D

                          Best, Sander sanderrossel.com Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly

                          1 Reply Last reply
                          0
                          • N Nand32

                            Okay, that was an analogy. I was trying a little piece of Python code. Got a bit surprised with the "positional"-indentation requirements in code. Just like how it used to be in older programming languages like Cobol. (I'm not sure if any other recent programming languages enforce these) For example,

                            If x is a:
                            do //indented & works

                            is different from

                            if x is a:
                            do //Non-indented & throws error

                            It's funny, and doesn't this sound rudimentary and a bit annoying? :)

                            Sander RosselS Offline
                            Sander RosselS Offline
                            Sander Rossel
                            wrote on last edited by
                            #16

                            I know Haskell has it too. I know, because I had a school assignment that I've been looking at for two hours because I mixed up a few spaces with a tab... X|

                            if x is a:
                            do //...

                            Isn't the same as:

                            if x is a:
                            do //...

                            :rolleyes: It does produce some really clean and concise code though!

                            Best, Sander sanderrossel.com Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly

                            1 Reply Last reply
                            0
                            • OriginalGriffO OriginalGriff

                              There is also the "Extra quote character": ''' which looks just like the ones around it, but will not compile in other peoples code - not that you would replace any, I'm sure ... :laugh:

                              Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                              D Offline
                              D Offline
                              David ONeil
                              wrote on last edited by
                              #17

                              OriginalGriff wrote:

                              - not that you would replace any, I'm sure

                              If I wasn't using a strongly-typed language, and had an asshole for a coworker that needed a lesson, I certainly would! Send him a copy in which a variable has unicode changes but looks the same: "It works for me, I can't understand why you are having problems!" :rolleyes: :rolleyes: :rolleyes:

                              The forgotten roots of science | C++ Programming | DWinLib

                              1 Reply Last reply
                              0
                              • N Nand32

                                Okay, that was an analogy. I was trying a little piece of Python code. Got a bit surprised with the "positional"-indentation requirements in code. Just like how it used to be in older programming languages like Cobol. (I'm not sure if any other recent programming languages enforce these) For example,

                                If x is a:
                                do //indented & works

                                is different from

                                if x is a:
                                do //Non-indented & throws error

                                It's funny, and doesn't this sound rudimentary and a bit annoying? :)

                                G Offline
                                G Offline
                                GuyThiebaut
                                wrote on last edited by
                                #18

                                I started looking at Python in my home hobby time around 6 months ago and while it is a bit strange at first, I now find the indentation makes the code easier to read without brackets. I know IDEs allow you to indent bracketed languages but I find that Python easier to read. If you find the indentation strange, wait until you get on to the coding standards where lines should not exceed 79 characters in length.

                                “That which can be asserted without evidence, can be dismissed without evidence.”

                                ― Christopher Hitchens

                                1 Reply Last reply
                                0
                                • OriginalGriffO OriginalGriff

                                  Oh, no, no, no, no! Python's version is worse: you don't need to declare the variable using "var", or "Dim", or anything - just pick a name and assign a value. So if you misspell it ... that's a new variable. Just like FORTRAN was back in the day (1977). And that caused a probe to miss the planet Venus completely, so what it does in a banking app, or a Boeing 737 Max is not something you want to think about too hard, really. Strongly typed variables should be mandatory in all languages used in the 21st century!

                                  Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                                  G Offline
                                  G Offline
                                  GuyThiebaut
                                  wrote on last edited by
                                  #19

                                  Which is why I see Python as a poor choice for teaching beginners to 'code'. Take this class definition containing a function:

                                  class StringFormat(object):

                                  @staticmethod
                                  def FloatToStringFormat(num: float, decimalPlaces: int) -> str:
                                      return "{:.{}f}".format(num, decimalPlaces)
                                  

                                  Calling it like this:

                                  resultAsString = StringFormat.FloatToStringFormat(20.123, "2")

                                  I would expect to get an error as I am passing in a string rather than an integer for decimalPlaces. But no, Python happily sets resultAsString to "20.12"

                                  “That which can be asserted without evidence, can be dismissed without evidence.”

                                  ― Christopher Hitchens

                                  M 1 Reply Last reply
                                  0
                                  • G GuyThiebaut

                                    Which is why I see Python as a poor choice for teaching beginners to 'code'. Take this class definition containing a function:

                                    class StringFormat(object):

                                    @staticmethod
                                    def FloatToStringFormat(num: float, decimalPlaces: int) -> str:
                                        return "{:.{}f}".format(num, decimalPlaces)
                                    

                                    Calling it like this:

                                    resultAsString = StringFormat.FloatToStringFormat(20.123, "2")

                                    I would expect to get an error as I am passing in a string rather than an integer for decimalPlaces. But no, Python happily sets resultAsString to "20.12"

                                    “That which can be asserted without evidence, can be dismissed without evidence.”

                                    ― Christopher Hitchens

                                    M Offline
                                    M Offline
                                    Mike Winiberg
                                    wrote on last edited by
                                    #20

                                    It's interesting to see in this discussion that one of python's more attractive features is seen as a disadvantage 8) Once again, the debate here about whether the language is 'good' or not seems to have nothing to do with whether it actually is good or otherwise, but simply amounts to 'does it fit my idea of how a language should work'. If I've learnt anything from over 40 years of software development, it is that (with a few domain specific exceptions) the skill of writing good software - don't mistake me here, I'm not saying that I write good software! - has almost nothing to do with the language you write it in, and everything to do with domain knowledge and the skill of the programmer(s). Every language has rules; every language has flaws. Being aware of both and using/avoiding them so you produce good code is what it's all about. The behaviour cited above as being 'problematic' is exactly why I use Python for certain types of project. 8)

                                    G 1 Reply Last reply
                                    0
                                    • M Mike Winiberg

                                      It's interesting to see in this discussion that one of python's more attractive features is seen as a disadvantage 8) Once again, the debate here about whether the language is 'good' or not seems to have nothing to do with whether it actually is good or otherwise, but simply amounts to 'does it fit my idea of how a language should work'. If I've learnt anything from over 40 years of software development, it is that (with a few domain specific exceptions) the skill of writing good software - don't mistake me here, I'm not saying that I write good software! - has almost nothing to do with the language you write it in, and everything to do with domain knowledge and the skill of the programmer(s). Every language has rules; every language has flaws. Being aware of both and using/avoiding them so you produce good code is what it's all about. The behaviour cited above as being 'problematic' is exactly why I use Python for certain types of project. 8)

                                      G Offline
                                      G Offline
                                      GuyThiebaut
                                      wrote on last edited by
                                      #21

                                      Mike Winiberg wrote:

                                      has almost nothing to do with the language you write it in, and everything to do with domain knowledge and the skill of the programmer(s).

                                      I agree. I am glad you used the word "almost", because using Windows batch scripting for some devops work I have been doing has resulted in me having to work around the language and do things in a manner that I would not see as particularly elegant. Of course I could rewrite it with powershell scripting, which is on my list, but when you are working on systems that are business critical - doing a large code refactor is not always possible largely due to the cost to the business.

                                      “That which can be asserted without evidence, can be dismissed without evidence.”

                                      ― Christopher Hitchens

                                      M 1 Reply Last reply
                                      0
                                      • G GuyThiebaut

                                        Mike Winiberg wrote:

                                        has almost nothing to do with the language you write it in, and everything to do with domain knowledge and the skill of the programmer(s).

                                        I agree. I am glad you used the word "almost", because using Windows batch scripting for some devops work I have been doing has resulted in me having to work around the language and do things in a manner that I would not see as particularly elegant. Of course I could rewrite it with powershell scripting, which is on my list, but when you are working on systems that are business critical - doing a large code refactor is not always possible largely due to the cost to the business.

                                        “That which can be asserted without evidence, can be dismissed without evidence.”

                                        ― Christopher Hitchens

                                        M Offline
                                        M Offline
                                        Mike Winiberg
                                        wrote on last edited by
                                        #22

                                        Oh yes, I was careful to say "almost"! 8) It never ceases to amaze me how complex a process could be constructed with DOS batch scripts - often by relying on obscure side-effects of small .COM files etc. I've always liked Powershell (although I rarely use it!) because it seemed a genuine attempt to provide a full batch environment for windows with 'proper' controlled access to the entire system. I do find the verbosity of the naming convention somewhat off-putting though (as indeed is the case for some other languages) - ridiculously long and complex variable names can be as difficult to manage as i, ii, iii and iiii etc! (I once spent over a day hunting down a bug in some C++ code where a stupidly long descriptive variable name had been used in multiple places with two different internal spellings via a macro such that the compiler didn't 'notice' the variants!)

                                        1 Reply Last reply
                                        0
                                        • Sander RosselS Sander Rossel

                                          Richard MacCutchan wrote:

                                          I agree, but you can still do quite a bit of damage with var.

                                          In what language? JavaScript? Certainly, but JavaScript doesn't really get much better than that... In C# it's still a typed variable, so it's exactly the same thing as explicitly using the type name except instead of the type name you use var. So no damage there, except to readability.

                                          Best, Sander sanderrossel.com Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly

                                          F Offline
                                          F Offline
                                          Fueled By Decaff
                                          wrote on last edited by
                                          #23

                                          C#

                                          var elapsedTime = stopwatch.ElapsedMilliseconds;
                                          var processedCount = GetProcessedCount();
                                          var processedPerSecond = processedCount / elapsedTime * 1000;

                                          Spot the bug.

                                          Sander RosselS 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups