Python基本語法總結(jié)大全(含java、js對(duì)比)
專為有 JavaScript & Java 基礎(chǔ)的工程師《Python 基本語法快速上手指南》
Python 基本語法 · JS/Java 開發(fā)者快速上手指南
你會(huì)發(fā)現(xiàn):Python = 更少的代碼 + 更少的概念 + 更高的表達(dá)力。
1. Python 是動(dòng)態(tài)類型語言(像 JS,但比 JS 更簡單)
定義變量
a = 10 b = "Hello" c = True
無需 let、const、var、int 之類的關(guān)鍵字。
變量類型由賦值決定。
2. 縮進(jìn)就是作用域(沒有花括號(hào))
Java/JS:
if (x > 1) {
console.log('ok')
}
Python:
if x > 1:
print("ok")
?? 必須使用 4 個(gè)空格縮進(jìn)(不能用 Tab)
3. 基本數(shù)據(jù)類型
| Python | JS | Java |
|---|---|---|
| int | number | int |
| float | number | double |
| str | string | String |
| bool | boolean | boolean |
| list | Array | 數(shù)組/ArrayList |
| tuple | 類似 readonly array | 不可變數(shù)組 |
| dict | Object | Map |
示例:
age = 28 # int
price = 3.14 # float
name = "Tom" # str
is_ok = True # bool
arr = [1, 2, 3] # list
t = (1, 2) # tuple
user = {"name": "Tom"} # dict
4. 條件語句(更自然)
if score > 90:
print("A")
elif score > 60:
print("B")
else:
print("C")
注意:elif = else if
5. 循環(huán)
for 循環(huán)(更像 Java 的 foreach)
for item in [1, 2, 3]:
print(item)
range
for i in range(5): # 0,1,2,3,4
print(i)
for i in range(1, 5): # 1,2,3,4
print(i)
6. 函數(shù)定義
Java/JS:
function add(a, b) {
return a + b
}
Python:
def add(a, b):
return a + b
def add(a, b) -> str:
return a + b
-> str 完全可以不要,: 是函數(shù)必須的
7. 類與對(duì)象
Java:
class User {
String name;
User(String name) { this.name = name; }
}
Python(更簡潔):
class User:
def __init__(self, name):
self.name = name
u = User("Tom")
print(u.name)
關(guān)鍵點(diǎn):
- 構(gòu)造函數(shù)是
__init__ - 方法第一個(gè)參數(shù)必須是
self
8. 字符串(功能超強(qiáng))
f-string(Python 最好用的語法)
name = "Tom"
age = 18
print(f"My name is {name}, age {age}")
9. 列表(list)的常用操作
arr = [1, 2, 3] arr.append(4) arr.insert(0, 100) arr.remove(2) print(len(arr))
列表推導(dǎo)式(神器 ??)
squares = [x*x for x in range(5)] print(squares) # [0,1,4,9,16]
10. 字典(dict)
user = {
"name": "Tom",
"age": 20
}
print(user["name"])
user["age"] = 30
for key, val in user.items():
print(key, val)
11. 異常處理(與 Java 類似)
try:
x = 10 / 0
except ZeroDivisionError:
print("不能除以 0")
finally:
print("done")
12. 文件操作(非常簡單)
with open("test.txt", "r") as f:
content = f.read()
with open("a.txt", "w") as f:
f.write("hello")
13. 模塊與導(dǎo)入
Java:
import java.util.List;
JS:
import fs from 'fs';
Python:
import math from math import sqrt
14. Python 對(duì)象打印超級(jí)方便
print(user)
你不需要寫 JSON.stringify,也不需要重寫 toString。
15. 虛擬環(huán)境(推薦)
python -m venv venv source venv/bin/activate # Mac/Linux venv\Scripts\activate # Windows
16. pip 安裝庫
pip install requests
示例:
import requests
res = requests.get("https://api.github.com")
print(res.json())
17. Pythonic 語法總結(jié)(從 JS/Java 轉(zhuǎn)過來最常用)
? 多重賦值
a, b = 1, 2
? 三元表達(dá)式
msg = "ok" if x > 1 else "fail"
? enumerate
for index, item in enumerate(arr):
print(index, item)
? 交換變量
a, b = b, a
? 一行讀取文件
data = open("a.txt").read()
繼續(xù)為你輸出 Python 快速上手指南(面向 JS & Java 工程師)。
你可以隨時(shí)說“繼續(xù)”往下擴(kuò)展更多內(nèi)容。
10. 列表推導(dǎo)式(List Comprehension)??
這是 Python 最經(jīng)典、最強(qiáng)大的語法之一。
JS/Java 寫法:
const arr = [];
for(let i=0; i<5; i++){
arr.push(i * i);
}
Python 一行:
squares = [x * x for x in range(5)]
帶條件:
evens = [x for x in range(10) if x % 2 == 0]
11. 字典(dict)常用操作(相當(dāng)于 JS Object / Java HashMap)
創(chuàng)建:
user = {"name": "Tom", "age": 18}
訪問:
print(user["name"])
print(user.get("age"))
修改:
user["age"] = 20
遍歷:
for key, value in user.items():
print(key, value)
12. 異常處理(類似 Java,更好用)
try:
1 / 0
except ZeroDivisionError as e:
print("Error:", e)
finally:
print("done")
13. 文件讀寫(非常簡單)
寫文件:
with open("a.txt", "w", encoding="utf-8") as f:
f.write("hello")
讀文件:
with open("a.txt", "r", encoding="utf-8") as f:
content = f.read()
with 會(huì)自動(dòng) close 文件。
14. 模塊與導(dǎo)入(import)
相當(dāng)于 JS 的 import,Java 的 import。
import math print(math.sqrt(16))
from 寫法:
from math import sqrt print(sqrt(16))
導(dǎo)入別名:
import numpy as np
15. Python 的常用數(shù)據(jù)結(jié)構(gòu)總結(jié)(對(duì)比 JS & Java)
| Python | JS | Java |
|---|---|---|
| list | Array | Array / ArrayList |
| tuple | 無等價(jià)(類似 readonly array) | 不可變數(shù)組 |
| dict | Object / Map | HashMap |
| set | Set | HashSet |
16. Python 的強(qiáng)大語法糖
? 解構(gòu)賦值(JS 也有,但 Python 更強(qiáng))
a, b = 1, 2
交換變量(無需臨時(shí)變量):
a, b = b, a
解構(gòu)列表:
x, y, z = [10, 20, 30]
17. Lambda(匿名函數(shù))
JS:
const add = (a, b) => a + b
Python:
add = lambda a, b: a + b
用在排序中非常常見:
arr.sort(key=lambda x: x["age"])
18. 裝飾器(類似 JS 的高階函數(shù) + 注解功能)
最基本的形式:
def log(fn):
def wrapper(*args, **kwargs):
print("call", fn.__name__)
return fn(*args, **kwargs)
return wrapper
@log
def hello():
print("hi")
19. Python 的包管理(pip)
安裝包:
pip install requests
升級(jí)包:
pip install -U requests
20. 虛擬環(huán)境(venv)—— 類似 JS 的 node_modules 隔離
創(chuàng)建:
python -m venv venv
激活(Mac/Linux):
source venv/bin/activate
激活(Windows):
venv\Scripts\activate
退出:
deactivate
21. Python 異步(async/await)
幾乎與 JS 一樣。
import asyncio
async def hello():
print("Hello")
await asyncio.sleep(1)
print("World")
asyncio.run(hello())
22. f-string(Python 的模板字符串)
return f"It's always sunny in {city}!"
f-string 是 Python 拼接字符串最常用的方式。
等價(jià)于 JS 的模板字符串:
return `It's always sunny in ${city}!`
23. 三引號(hào)字符串
三引號(hào)字符串放在函數(shù)第一行 = 函數(shù)注釋(用于文檔、IDE 提示、help())。
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
相當(dāng)于 Java 的:
/** * Get weather for a given city. */
24. 類型是否必須寫,是否有類似js和ts的區(qū)分
類型 不是必寫!
不區(qū)分!只有一個(gè) Python。
但 Python 允許可選寫類型注解,因此:
- Python = JS(動(dòng)態(tài)) + TS(可選標(biāo)注)
- 寫不寫類型都能運(yùn)行(不像 TS 那樣必須編譯檢查)
Python 官方把這套類型系統(tǒng)稱為 Type Hints(類型提示)。
Python 的類型注解是“提示”,不是“限制”
例如:
def add(a: int, b: int) -> int:
return a + b
print(add("hello", "world"))
照樣運(yùn)行……輸出 "helloworld"
(因?yàn)?Python 不強(qiáng)制類型)
要強(qiáng)制檢查必須使用外部工具,比如:
- mypy
- pyright
- pylance(VSCode)
- PyCharm 自帶類型分析
什么時(shí)候推薦寫:
- 大型項(xiàng)目
- 團(tuán)隊(duì)協(xié)作
- 需要 IDE 提示
- API 層
- 數(shù)據(jù)結(jié)構(gòu)定義
總結(jié)
到此這篇關(guān)于Python基本語法(含java、js對(duì)比)的文章就介紹到這了,更多相關(guān)Python基本語法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python訪問OPCUA服務(wù)器,訂閱一個(gè)變量標(biāo)簽方式
這篇文章主要介紹了Python訪問OPCUA服務(wù)器,訂閱一個(gè)變量標(biāo)簽方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Pandas刪除數(shù)據(jù)的幾種情況(小結(jié))
這篇文章主要介紹了Pandas刪除數(shù)據(jù)的幾種情況(小結(jié)),詳細(xì)的介紹了4種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
詳解Python執(zhí)行py文件是否需要可執(zhí)行權(quán)限
這篇文章主要通過幾個(gè)案例為大家詳細(xì)介紹一下在Python中執(zhí)行py文件是否需要可執(zhí)行權(quán)限,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以了解一下2023-03-03
Python3 MySQL 數(shù)據(jù)庫連接的使用示例
本文我們?yōu)榇蠹医榻B Python3 使用 PyMySQL 連接數(shù)據(jù)庫,并實(shí)現(xiàn)簡單的增刪改查,需要的朋友可以參考下2021-06-06
python?opencv的imread方法無法讀取圖片問題
這篇文章主要介紹了python?opencv的imread方法無法讀取圖片問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
詳解Python 實(shí)現(xiàn)元胞自動(dòng)機(jī)中的生命游戲(Game of life)
本篇文章主要介紹了詳解Python 實(shí)現(xiàn)元胞自動(dòng)機(jī)中的生命游戲(Game of life),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01

