{"id":4762,"date":"2020-07-28T22:39:19","date_gmt":"2020-07-28T22:39:19","guid":{"rendered":"https:\/\/www.solutionstreet.com\/blog\/?p=4762"},"modified":"2020-07-28T22:39:19","modified_gmt":"2020-07-28T22:39:19","slug":"10-python-particulars-to-know","status":"publish","type":"post","link":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/","title":{"rendered":"10 Python Particulars to Know"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"729\" height=\"480\" src=\"https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2020\/07\/magnifiying1-Copy1b.png\" alt=\"\" class=\"wp-image-4878\" srcset=\"https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2020\/07\/magnifiying1-Copy1b.png 729w, https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2020\/07\/magnifiying1-Copy1b-300x198.png 300w\" sizes=\"auto, (max-width: 729px) 100vw, 729px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Like many software developers, I have learned my share of software languages over the years. Two years ago, <a rel=\"noopener noreferrer\" href=\"https:\/\/www.linkedin.com\/posts\/activity-6397164262682296320-RWde\" target=\"blank\">I wrote a post on LinkedIn<\/a> where I identified 29 software languages I had learned in the 37 years prior; everything from Basic to Ruby to JavaScript and obscure languages like <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/APL_(programming_language)\" target=\"blank\">APL<\/a> and <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Clipper_(programming_language)\" target=\"blank\">Clipper<\/a>. As all developers know, in the software engineering field it\u2019s important to keep up with emerging programming languages, so even to this day, I\u2019m learning new ones. Similarly, like many other developers, in my eagerness to quickly learn a new  language, I start with similar and familiar code syntax based on programming languages I already know. Using familiar syntax from programming languages you&#8217;ve already worked with is initially easier and can jump-start your use of a new language, but there&#8217;s a price to pay for that. When doing so, you often avoid learning some of the subtleties and specific features unique to the new language you&#8217;re learning, and you may miss some of the differences between the new one and the current languages you know. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At Solution Street, we ask candidates interviewing for developer positions to write some code during the interview. Sometimes we will describe a candidate\u2019s code after an interview as, \u201cHe writes Ruby like a Java developer.\u201d This is just another way of saying that, if the candidate was writing in Ruby, he didn\u2019t really make use of some of Ruby\u2019s advantages. I am no different and I often will lazily rely on familiar syntax and control structures when I use a newly-learned language.<\/p>\n\n\n\n<p><div style=\"padding: 12px; background-color: #eee9e9; line-height: 1.3; margin: 40px; border: 1px solid #ccc; border-radius: 6px; box-shadow: 1px #ccc; border-left: 5px solid #61963D;\"><span style=\"font-size: x-large; color: #61963d;\">\u201c<\/span><em>Using familiar syntax from programming languages you&#8217;ve already worked with is initially easier and can jump-start your use of a new language, but there&#8217;s a price to pay for that.<\/em><span style=\"font-size: x-large; color: #61963d; line-height: 1.0;\">\u201d<\/span><\/div><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Having learned Python a few years ago, I have discovered some new tidbits and tricks that sometimes come in the form of different syntax that could be advantageous to a developer. I want to share some of them with you.<br><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>List slicing<\/strong> &#8211; List processing is very powerful in Python and although there are many Python packages that enhance list processing, this core capability is very powerful to extract portions of a list. Typically, in other languages you might simply use an iterator to extract what you need, but this concise way is much easier:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\"># list slicing\nmy_list = \"Solution Street\" # either a string as in this case or a list of elements\nprint(my_list[1:4]) # 1 - 3\nprint(my_list[1:]) # 1 to end\nprint(my_list[:4]) # 0 to 3\nprint(my_list[1:-4]) # 1 to length-4\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/listSlicing\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>)<\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\nolu<br>\nolution Street<br>\nSolu<br>\nolution St<\/div>\n\n\n\n<ol start=\"2\"><li><strong>Operator chaining<\/strong> &#8211; Often, when writing code, you come across a conditional saying something like:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\"># evaluate the variable between two numbers\nx = 42\nprint( x >= 0 and x <= 100 ) # returns True\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Specifying the condition slightly differently still works:<\/p>\n\n\n\n<pre lang=\"python\" line=\"1\"># restated condition\nx = 42\nprint( 0 <= x and x <= 100 ) # returns True\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Python further allows you to take the above statement and simplify it. Some may say this is too terse, but after looking at this more, you may realize the original way is too verbose:<\/p>\n\n\n\n<pre lang=\"python\" line=\"1\"># operator chaining\nx = 42\nprint( 0 <= x <= 100 ) # nice simplified way\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/operatorChaining\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>)<\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\nTrue<\/div>\n\n\n\n<ol start=\"3\"><li><strong>Value swapping<\/strong> - Similar to above, there are more verbose ways of swapping values between variables, but Python\u2019s terse way can be seen as either elegant or difficult to read:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\"># value swapping\n# common way\nx = 1\ny = 2\ntemp = y\ny = x\nx = temp\nprint(x, y)\n\n# python simplified way\na = 1\nb = 2\nb, a = a, b\nprint(a, b)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/valueSwapping\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>)<\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\n(2, 1)<br>\n(2, 1)<\/div>\n\n\n\n<ol start=\"4\"><li><strong>For else loops<\/strong> - In most languages, we are very familiar with for loops, but Python has this extra added benefit of an else conditional. Often within a loop, you are evaluating a condition and if that condition is true you typically perform some operation and leave the loop. However, you sometimes need to know that the condition was never met and perform some other operation. In most languages, you would do this manually via some additional boolean:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\"># standard way\nfound_item = False # init\npizza_ingredients = [\"cheese\",\"sauce\",\"pineapple\",\"olives\",\"basil\"]\nfor i in pizza_ingredients:\n if i == \"pineapple\":\n   print('This is not a valid pizza.')\n   found_item = True # set\n \nif(not found_item):\n print('This is a real pizza!')<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">With for else loops, it\u2019s more elegant with less code:<\/p>\n\n\n\n<pre lang=\"python\" line=\"1\"># for else loops\npizza_ingredients = [\"cheese\",\"sauce\",\"pineapple\",\"olives\",\"basil\"]\nfor i in pizza_ingredients:\n  if i == \"pineapple\": \n    # the else block will not run after using break\n    print('This is not a valid pizza.')\n    break\nelse:\n  print('This is a real pizza!')<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/forElseLoop\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>)<\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\nThis is not a valid pizza.<\/div>\n\n\n\n<ol start=\"5\"><li><strong>Function argument unpacking<\/strong> - Sometimes in functions\/methods of other languages, you need to pass in a set of arguments, but your values are currently stored in an array or key\/value pair object (dictionary). Python gives you the ability to pass in a structure and have it unpacked to satisfy the arguments:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\"># function argument unpacking\ndef do_something(x, y):\n  print(f'x = {x}')\n  print(f'y = {y}') \n  # then find larger number\n\ntuple_parms = (100, 42)\ndictionary_parms = {'y': 42, 'x': 100}\n\ndo_something(*tuple_parms) # unpack tuple\ndo_something(**dictionary_parms) # unpack dictionary<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/functionArgumentUnpacking\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>)<\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\nx = 100<br>\ny = 42<br>\nx = 100<br>\ny = 42\n<\/div>\n\n\n\n<ol start=\"6\"><li><strong>Special override<\/strong> called \u201cmissing\u201d in dictionaries - How many times have you worked with a dictionary (object\/key-value pair) and you needed the key to be initialized? Typically, in the course of your code, you check for null and then initialize it. While this is standard practice, Python has a way to override a special method __<i>missing<\/i>__ to deal with missing keys when you subclass the built-in <i>dict<\/i>:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\"># using the missing override\nclass MyDict(dict):\n def __missing__(self, key):\n   return_value = []\n   self[key] = return_value # initialize key\n   return return_value\n \nm = MyDict()\nm[\"foo\"].append(1) # no problem with uninitialized key\nm[\"foo\"].append(2)\nprint(dict(m))<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/missingOverride\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>)<\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\n{'foo': [1, 2]}\n<\/div>\n\n\n\n<ol start=\"7\"><li><strong>Step argument<\/strong> in slice operators - Just a nifty way to walk through a list and skip elements:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\"># The step argument in slice operators.\nskip_me = \"Saorltuhtuirofnf  Satnrkeeelt\" # a string is a list too\nprint(skip_me[::2]) # start with 0 position and then skip by 2\nprint(skip_me[::-1]) # go in reverse but don't skip<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/stepArgument\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>) <\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\nSolution Street<br>\ntleeekrntaS  fnforiuthutlroaS\n<\/div>\n\n\n\n<ol start=\"8\"><li><strong>Enumerate a list<\/strong> with access to an index - Often, we need to iterate over a list of items but we also need the index. Some languages easily offer this option and some don\u2019t. The simple, additional code method, is to maintain a separate counter while looping but that is extraneous with Python. Python\u2019s enumerate function gives us an iterable where each element is a tuple that contains the index of the item and the original item value:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\"># enumerate with index\n# wrap an iterable with enumerate and it will yield the item along with its index.\na = ['Python', 'Ruby', 'JavaScript', 'Java', 'C#']\nfor index, item in enumerate(a):\n # have access to both index and the item\n print(index, item)\n \n# full dump of enumerator\nprint(list(enumerate(a)))<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/enumerateWithIndex\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>) <\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\n0 Python<br>\n1 Ruby<br>\n2 JavaScript<br>\n3 Java<br>\n4 C#<br>\n[(0, 'Python'), (1, 'Ruby'), (2, 'JavaScript'), (3, 'Java'), (4, 'C#')]\n<\/div>\n\n\n\n<ol start=\"9\"><li><strong>List comprehensions<\/strong> - Although it may initially look different, Python allows for a concise and powerful way to create lists. The syntax is brackets containing an expression followed by a 'for' clause, then zero or more 'for' or 'if' clauses. These lists can be conditional or even include operations:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\"># List Comprehensions\nx = []\nfor i in range(5):\n  x.append(i) # standard way\nprint (x)\n\nx = [i for i in range(5)] # more concise way than above\nprint (x)\n\n# conditional list comprehension\n# pick vowels from a phrase\nphrase = \"Hello this is a test\"\nvowels = [v for v in phrase if v in 'aeiou']\nprint (vowels)\n\n# operations on list elements\nprices = [20, 30, 40, 100]\n\ndef get_discounted_price(v):\n  \"\"\"\n  5% discount if prices is less or equal to 20,\n  10% discount for prices > 20\n  \"\"\"\n  if v <= 30:\n    return v*0.95\n  else:\n    return v*0.90\n\ndiscounted_prices = [get_discounted_price(p) for p in prices]\n\nprint(discounted_prices)\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/listComprehensions\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>) <\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\n[0, 1, 2, 3, 4]<br>\n[0, 1, 2, 3, 4]<br>\n['e', 'o', 'i', 'i', 'a', 'e']<br>\n[19.0, 28.5, 36.0, 90.0]<br>\n<\/div>\n\n\n\n<ol start=\"10\"><li><strong>Conditions in ternary operator<\/strong> - Frequently, in coding, you find yourself with the need to do a basic if\/else condition and in most cases you write the simplistic but multi-line code block like this:<\/li><\/ol>\n\n\n\n<pre lang=\"python\" line=\"1\">x = 42\nif (x > 100):\n print(\"qualifies\")\nelse:\n print(\"not does qualify\")\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You can be more terse in your statement with Python:<\/p>\n\n\n\n<pre lang=\"python\" line=\"1\"># Conditions in Ternary Operator\nx = 42\nprint(\"qualifies\") if x>100 else print(\"does not qualify\")\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Output<\/strong> (or <a href=\"https:\/\/repl.it\/@afrankel\/conditionsInTernaryOperator\" target=\"blank\" rel=\"noopener noreferrer\">run it<\/a>)<\/p>\n\n\n\n<div style=\"background-color:#EBEBEB;padding:12px\">\ndoes not qualify<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Like many software developers, I have learned my share of software languages over the years. Two years ago, I wrote a post on LinkedIn where I identified 29 software languages I had learned in the 37 years prior; everything from Basic to Ruby to JavaScript and obscure languages like APL and Clipper. As all developers [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4762","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>10 Python Particulars to Know - Solution Street Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"10 Python Particulars to Know - Solution Street Blog\" \/>\n<meta property=\"og:description\" content=\"Like many software developers, I have learned my share of software languages over the years. Two years ago, I wrote a post on LinkedIn where I identified 29 software languages I had learned in the 37 years prior; everything from Basic to Ruby to JavaScript and obscure languages like APL and Clipper. As all developers [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/\" \/>\n<meta property=\"og:site_name\" content=\"Solution Street Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-28T22:39:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2020\/07\/magnifiying1-Copy1b.png\" \/>\n<meta name=\"author\" content=\"Peggy Frankel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Peggy Frankel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/\"},\"author\":{\"name\":\"Peggy Frankel\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4846451eff30e9514b534b2a2e01696\"},\"headline\":\"10 Python Particulars to Know\",\"datePublished\":\"2020-07-28T22:39:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/\"},\"wordCount\":966,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/magnifiying1-Copy1b.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/\",\"url\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/\",\"name\":\"10 Python Particulars to Know - Solution Street Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/magnifiying1-Copy1b.png\",\"datePublished\":\"2020-07-28T22:39:19+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4846451eff30e9514b534b2a2e01696\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/magnifiying1-Copy1b.png\",\"contentUrl\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/magnifiying1-Copy1b.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2020\\\/07\\\/28\\\/10-python-particulars-to-know\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"10 Python Particulars to Know\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/\",\"name\":\"Solution Street Blog\",\"description\":\"Quality Software Engineering - Technology and Consulting Articles\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4846451eff30e9514b534b2a2e01696\",\"name\":\"Peggy Frankel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g\",\"caption\":\"Peggy Frankel\"},\"url\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/author\\\/pfrankel\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"10 Python Particulars to Know - Solution Street Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/","og_locale":"en_US","og_type":"article","og_title":"10 Python Particulars to Know - Solution Street Blog","og_description":"Like many software developers, I have learned my share of software languages over the years. Two years ago, I wrote a post on LinkedIn where I identified 29 software languages I had learned in the 37 years prior; everything from Basic to Ruby to JavaScript and obscure languages like APL and Clipper. As all developers [&hellip;]","og_url":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/","og_site_name":"Solution Street Blog","article_published_time":"2020-07-28T22:39:19+00:00","og_image":[{"url":"https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2020\/07\/magnifiying1-Copy1b.png","type":"","width":"","height":""}],"author":"Peggy Frankel","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Peggy Frankel","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/#article","isPartOf":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/"},"author":{"name":"Peggy Frankel","@id":"https:\/\/www.solutionstreet.com\/blog\/#\/schema\/person\/c4846451eff30e9514b534b2a2e01696"},"headline":"10 Python Particulars to Know","datePublished":"2020-07-28T22:39:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/"},"wordCount":966,"commentCount":0,"image":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/#primaryimage"},"thumbnailUrl":"https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2020\/07\/magnifiying1-Copy1b.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/","url":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/","name":"10 Python Particulars to Know - Solution Street Blog","isPartOf":{"@id":"https:\/\/www.solutionstreet.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/#primaryimage"},"image":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/#primaryimage"},"thumbnailUrl":"https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2020\/07\/magnifiying1-Copy1b.png","datePublished":"2020-07-28T22:39:19+00:00","author":{"@id":"https:\/\/www.solutionstreet.com\/blog\/#\/schema\/person\/c4846451eff30e9514b534b2a2e01696"},"breadcrumb":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/#primaryimage","url":"https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2020\/07\/magnifiying1-Copy1b.png","contentUrl":"https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2020\/07\/magnifiying1-Copy1b.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.solutionstreet.com\/blog\/2020\/07\/28\/10-python-particulars-to-know\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.solutionstreet.com\/blog\/"},{"@type":"ListItem","position":2,"name":"10 Python Particulars to Know"}]},{"@type":"WebSite","@id":"https:\/\/www.solutionstreet.com\/blog\/#website","url":"https:\/\/www.solutionstreet.com\/blog\/","name":"Solution Street Blog","description":"Quality Software Engineering - Technology and Consulting Articles","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.solutionstreet.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.solutionstreet.com\/blog\/#\/schema\/person\/c4846451eff30e9514b534b2a2e01696","name":"Peggy Frankel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g","caption":"Peggy Frankel"},"url":"https:\/\/www.solutionstreet.com\/blog\/author\/pfrankel\/"}]}},"_links":{"self":[{"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/posts\/4762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/comments?post=4762"}],"version-history":[{"count":0,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/posts\/4762\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/media?parent=4762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/categories?post=4762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/tags?post=4762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}