Code Comments
Both languages have comments:# Python has single line comments // Swift has single line comments /* Swift also has multi-line comments in C style */
Declaring Constants and Variables
Swift has rich support for type inference and constants. Python is dynamic and does not natively support constants.name = "A string variable in Python" age = 42 # An integer variable in Python var name = "A string variable in Swift" var age : Int // An explicit integer variable in Swift age = 42 let pi = 3.14 // Constant in Swift
Integer Bounds
# Python does not have upper bounds for integer numbers (Python 3) large_nun = 10000000000000000000000000000000000000000000000000000 // Swift var a = Int32.min var b = Int32.max
Type Inference
Swift is a strongly-typed language which makes heavy use of type-inference although you can declare explicit types. Python is a dynamic language so while there is a type system it is not evident in the syntax.# Python name = "Michael" # string variable, but can change name = 42 # would run n = 42 # currently an int d = 42.0 # currently a float // Swift var name = "Michael" // string name = 42 // Error var n = 42 // int var d = 42.0 // double
String Comparison
Python and Swift both have Unicode strings. Python generally has richer string support than Swift (especially around string formatting).# python a = "some text" b = "some text" if a == b: print("The strings are equal") # swift var a = "some text" var b = "some text" if a == b { println("The strings are equal") }Both languages have many functions on strings
# python if a.startswith("some"): print("Starts with some") if a.endswith("some"): print("Ends with some") // swift if a.hasPrefix("some") { println("Starts with some") } if a.hasSuffix("some") { println("Endss with some") }
String Upper or Lower Case
# python s = "some text" u = s.upper() l = s.lower() // swift var s = "some text" var u = s.uppercaseString var l = s.lowercaseString
Declaring Arrays
Neither language has strict array types in the sense of C-based arrays. The arrays in Swift and Python are closer to lists. Python’s lists are not typed (hence can be heterogeneous).# python nums = [1,1,3,5,8,13,21] // swift var nums = [1,1,3,5,8,13,21] // int array var strings = ["one", "two", "three"] // string array
Working with Arrays
# Iteration in python nums = [1,1,3,5,8,13,21] for n in nums: print(n) # Iteration in Swift: var nums = [1,1,3,5,8,13,21] for n in nums { println(n) } # Element access n = nums[2] # python, n = 3 var n = nums[2] # swift, n = 3 # Updating values nums[2] = 10 # python nums[2] = 10 # swift # Check for elements # python if nums: print("Nums is not empty") // swift if !nums.isEmpty { println("Nums is not empty") } # Adding items: nums.append(7) # python nums.append(7) # swift # Slicing nums = [1,1,3,5,8,13,21] middle = nums[2:4] # python, middle = [3, 5] var middle = nums[2..<4] // swift, middle = [3,5]
Dictionaries
Dictionaries play important roles in both languages and are fundamental types.# python d = dict(name="Michael", state="OR") d = { "name": "Michael", "state": "OR" } the_name = d["name"] // swift var empty_dict = Dictionary<String, String>() var d = ["name": "Michael", "state": "OR"] var the_name = d["name"]
Adding items is the same in both languages. Removing entries is arguably clearer in Swift.
# add an item d["hobby"] = "Biking" # python d["hobby"] = "Biking" // swift # remove an item del d["hobby"] # python d.removeValueForKey("hobby") // swift
Checking for the existence of a key can also be done in both languages.
# python if "hobby" in d: print("Your hobby is " + d["hobby"]) // swift if let theHobby = d["hobby"] { println("Your hobby is \(theHobby)") }
Conditional Statements
Conditional statements are quite similar.# python n = 40 m = 2 if n > 40: print("n bigger than 40") elif m == 2 and n % 2 == 0: print("m is 2") else: print("else") # swift var n = 40 var m = 2 if n > 40 { println("n bigger than 40") } else if m == 2 && n % 2 == 0 { print("m is 2") } else { print("else") }
Switch statements
Swift has them, Python does not.Functions
Functions are very rich in both languages. They have closures, multiple return values, lambdas, and more. Here is a simple version. Note that this example also leverages tuples and tuple unpacking in both languages.
# python def get_user(id): name = "username" email = "email" return name,email n, e = get_user(1) // swift func getUser(id : Int) -> (String, String) { var username = "username" var email = "email" return (username, email) } var (n, e) = getUser(1) // n = username, e = email