SwiftとPythonの文法比較


Pythonは少し触れただけで知識があまり無いので、表面的な文法の違いだけ比べてみます。

環境

使用したバージョンは以下の通りです。

SwiftはXcode Playgroundで動かしています。

Python

  • Python 3.9.1

Swift

  • Xcode 11.3.1

  • Swift 5.1.3

定数を定義

Python

#ログに出力
print("Hello World!")

#定数を定義
str = "Hello World!!"
print(str)

#文字列の結合
print("hello"+"world")

Swift

//ログに出力
print("Hello World!")

//定数を定義
let str = "Hello World!!"
print(str)

//文字列の結合
print("hello"+"world")

ほとんど変わらないですね。

Swiftでは定数を定義するならlet、変数ならvarをつける必要があります(それが当たり前か)。

コメントアウトするときは、Pythonでは#、Swiftでは//を使います。

四則演算

Python

#四則演算
num = 10
print(num+3)
print(num-3)
print(num*3)
print(num/3)

num2 = 4
num2 += 1
print(num2)

Swift

//四則演算
let num = 10
print(num+3)
print(num-3)
print(num*3)
print(num/3)

var num2 = 4
num2 += 1
print(num2)

どちらも普通の書き方なので、何も変わらないです。

乱数生成、条件分岐

Python

#乱数生成(import randomが必要)
score = random.randint(50, 100)

#条件分岐
if score > 80:
    print("Great!")
elif score > 60:
    print("Good!")
else:
    print("So So!")

Swift

//乱数生成
let score = Int.random(in: 50...100)

//条件分岐
if score > 80 {
    print("Great!")
} else if score > 60 {
    print("Good!")
} else {
    print("So So!")
}

Pythonの特徴である、「{ }がいらない」という点がよく分かります。

繰り返し(while、for)

Python

i = 0
#繰り返し
while i < 10:
    if i == 5:
        break
    print(i)
    i += 1
else:
    print("finish!")

for i in range(0,10):
    #5なら飛ばす
    if i == 5:
        continue
    print(i)

Swift

var i = 0
//繰り返し
while i < 10 {
    if i == 5 {
        break
    }
    print(i)
    i += 1
}

for i in [Int](0...10) {
    //5なら飛ばす
    if i == 5 {
        continue
    }
    print(i)
}

これもほとんど一緒です。

0から10の配列を作成するとき、Pythonではrange(0,10)、Swiftでは[Int](0...10)と書きます。

Swiftは型に厳しいのが特徴と言えます。

関数の定義

Python

#関数の定義
def SayHello(name):
    print("Hello! %s" %(name))

SayHello("Taro")

#返り値あり
def Hello(name):
    return "Hello! %s" %(name)

print(Hello("Jiro"))

Swift

//関数の定義
func SayHello(_ name:String) {
    print("Hello! \(name)")
}

SayHello("Taro")

//返り値あり
func Hello(_ name:String) -> String{
    return "Hello! \(name)"
}

print(Hello("Jiro"))

Pythonではdef、Swiftではfuncで関数を定義します。

returnの所ではString文字列に変数を埋め込んでいますが、Pythonの書き方は若干分かりにくいと感じました。

普通は"Hello! " + nameで済むと思いますが…。

クラスの作成

Python

class Friend:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    
    def Hello(self):
        print("Hello! {0}".format(self.name))

taro = Friend("Taro",15)
print(taro.name)
print(taro.age)

taro.Hello()

Swift

class Friend {
    var name:String?
    var age:Int?
    
    init(_ name:String?, _ age: Int?) {
        self.name = name
        self.age = age
    }
    
    func Hello(){
        print("Hello! \(self.name!)")
    }
}

let taro = Friend("Taro",15)
print(taro.name!)
print(taro.age!)

taro.Hello()

Swiftではクラス内で直接変数を定義して、initで引数を代入していますが、Pythonではinit内で定義します。

おわりに

Pythonの「{ }がいらない」という点に違和感があって、なんとなく避けていましたが、実際に比べてみると結構似てる箇所も多いことに気付きました。

もっと内面的な違いが分かってきたら、また書こうと思います。

参考

Comments

Show Comments