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, " + namefunction→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プログラムを写経できるタイピングゲームを無償公開中です。
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能④
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能③
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能②
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能①