JavaScript経験者がPythonを学ぶときに面食らうポイント10選!違いを知ってスムーズに移行しよう

こんにちは。ゆうせいです。

今回は JavaScriptを学んだ経験がある人が、Pythonを学び始めたときに戸惑いやすいポイント を10個に絞って紹介します。

「JavaScriptにはこういう書き方があったのに、Pythonではどうするの?」
「同じように動かないんだけど…」

そんな疑問や違和感を解消していきましょう!


1. セミコロン不要で文末がすっきり?

JavaScriptではおなじみのセミコロン(;)、Pythonでは基本的に不要です。

let x = 10;

x = 10  # セミコロンは不要

ただし例外的に1行で複数文を書くときはセミコロンを使いますが、基本的には推奨されません。

✅ JavaScriptのクセでつけすぎ注意!


2. 中括弧がなくて不安?インデントが命です

JavaScriptでは中括弧({})でブロックを作りますが、Pythonではインデントの深さでブロックを表現します。

if (x > 5) {
  console.log("大きい");
}

if x > 5:
    print("大きい")

インデントを崩すとエラーになります。

例えるなら「Pythonは見た目でルールを守らせる先生」です。


3. 型が緩すぎる!?letconstがない!

JavaScriptでは letconst を使って変数を宣言しますが、Pythonでは単に 変数名 = 値 でOK。

let name = "Alice";

name = "Alice"

ただし、型は自動推論されます(静的型付けではない)


4. 関数宣言の構文が違う

function greet(name) {
  return "Hello, " + name;
}

def greet(name):
    return "Hello, " + name
  • functiondef
  • 中括弧 → インデント
  • : を忘れるとエラー

5. 配列とリストは別物!?

JavaScriptの配列(Array)と、Pythonのリスト(List)は似て非なるもの。

操作JavaScriptPython
配列作成[1, 2, 3][1, 2, 3]
追加arr.push(4)arr.append(4)
要素削除arr.pop()arr.pop()

似てるようで、メソッド名が違う点が混乱ポイントです。


6. thisがない!自己参照の仕方が違う

JavaScriptではクラス内で this を使いますが、Pythonでは self を明示的に定義します。

class Person {
  constructor(name) {
    this.name = name;
  }
}

class Person:
    def __init__(self, name):
        self.name = name

self はただの引数」と理解するのが近道!


7. 非同期処理の考え方がちょっと違う

JavaScriptの async/await に慣れていても、Pythonではasync defawait の文法がやや異なります。

async function fetchData() {
  const data = await getData();
}

async def fetch_data():
    data = await get_data()

Pythonでは非同期関数の実行に asyncio.run() なども必要になったりするので、慣れが必要です。


8. オブジェクトリテラルの違いに注意

JavaScriptのオブジェクトは {} で定義されますが、Pythonでは dict 型を使います。

const user = { name: "Bob", age: 30 };

user = { "name": "Bob", "age": 30 }

キーは "文字列" で囲うのが普通。ドット記法(user.name)は使えません。


9. 文字列結合がちょっと不便?

JavaScriptでは + で文字列を簡単に結合できますが、Pythonでは**f文字列(f-string)**の利用が主流です。

let name = "Alice";
console.log("Hello, " + name);

name = "Alice"
print(f"Hello, {name}")

初見だと "f" + 文字列?" と混乱しがち!


10. nullじゃなくて None

JavaScriptの null に相当するのが、Pythonでは None です。

let value = null;

value = None

型チェックも == None ではなく is None を使うのがPython流。


まとめ:比較表でざっくり振り返り!

特徴JavaScriptPython
文末; 必須(場合あり)原則不要
ブロック{}インデント
変数宣言let, const= だけ
関数宣言functiondef
クラスの自己参照thisself
非同期処理async/awaitasync def / await
オブジェクト表現{}dict
文字列の挿入+, テンプレートf"文字列"
null 値nullNone

今後の学習の指針

Pythonはシンプルかつ読みやすいコードが特徴ですが、その分見た目=構文という厳格さがあります。

次のステップでは、以下を学んでみてください。

  • 標準ライブラリの活用(datetime, os, jsonなど)
  • リスト内包表記
  • クラスベースの設計
  • ユニットテストの書き方(unittest, pytest
  • Pythonicな書き方(PEP8のスタイル)

「JavaScriptでできたことをPythonでどうやるか」
この視点を持ちながら書き比べるのが、最も効果的な学習法です。

また知りたいことがあれば、どんどん質問してくださいね!

セイ・コンサルティング・グループでは、新人エンジニアの方がPythonプログラムを写経できるタイピングゲームを無償公開中です。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。