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. 型が緩すぎる!?let
やconst
がない!
JavaScriptでは let
や const
を使って変数を宣言しますが、Pythonでは単に 変数名 = 値
でOK。
let name = "Alice";
name = "Alice"
ただし、型は自動推論されます(静的型付けではない)。
4. 関数宣言の構文が違う
function greet(name) {
return "Hello, " + name;
}
def greet(name):
return "Hello, " + name
function
→def
- 中括弧 → インデント
:
を忘れるとエラー
5. 配列とリストは別物!?
JavaScriptの配列(Array)と、Pythonのリスト(List)は似て非なるもの。
操作 | JavaScript | Python |
---|---|---|
配列作成 | [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 def
や await
の文法がやや異なります。
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流。
まとめ:比較表でざっくり振り返り!
特徴 | JavaScript | Python |
---|---|---|
文末 | ; 必須(場合あり) | 原則不要 |
ブロック | {} | インデント |
変数宣言 | let , const | = だけ |
関数宣言 | function | def |
クラスの自己参照 | this | self |
非同期処理 | async/await | async def / await |
オブジェクト表現 | {} | dict |
文字列の挿入 | + , テンプレート | f"文字列" |
null 値 | null | None |
今後の学習の指針
Pythonはシンプルかつ読みやすいコードが特徴ですが、その分見た目=構文という厳格さがあります。
次のステップでは、以下を学んでみてください。
- 標準ライブラリの活用(
datetime
,os
,json
など) - リスト内包表記
- クラスベースの設計
- ユニットテストの書き方(
unittest
,pytest
) - Pythonicな書き方(PEP8のスタイル)
「JavaScriptでできたことをPythonでどうやるか」
この視点を持ちながら書き比べるのが、最も効果的な学習法です。
また知りたいことがあれば、どんどん質問してくださいね!
セイ・コンサルティング・グループでは、新人エンジニアの方がPythonプログラムを写経できるタイピングゲームを無償公開中です。
投稿者プロフィール
