面向Web开发者的Python速成指南,5分钟学会Python

大家好,我是花姐,今天给大家带来一篇关于Python的速成指南,特别适合那些已经熟悉JavaScript的Web开发者。Python不仅语法简洁,还能让你在Web开发、自动化、数据科学等领域大展拳脚。准备好了吗?让我们开始吧!

简单介绍下Python

Python是一种强大的高级编程语言,广泛应用于Web开发、自动化、数据科学和脚本编写。如果你已经是一名熟悉JavaScript、TypeScript、Node.js以及React或Next.js等框架的全栈Web开发者,学习Python可以为你打开使用Django、Flask和FastAPI进行后端开发的大门,同时还能涉足自动化、数据分析和人工智能领域。本教程将快速带你了解Python,带你了解JavaScript与Python的不同之处。如果你对JavaScript已经很熟悉,你会发现Python的语法更简洁易学。

1. Python语法与基础

Hello World(没有分号,没有大括号)

python 复制代码
print("Hello, world!")
  • 没有分号;
  • 没有大括号{},使用缩进。
  • 没有console.log(),只有print()

变量与动态类型

python 复制代码
name = "花姐"  # 直接赋值,没有let/const的束缚
age = 18  # 永远18岁的神秘数字(HR看了都流泪)
  • 不需要声明varletconst
  • 类型是动态推断的。

Python中的const如何工作?

Python没有像JavaScript那样的const,但你可以通过使用全大写的变量名来定义常量。

python 复制代码
PI = 3.14159  # 约定俗成,常量用大写

然而,这并不强制不可变性。如果你需要真正的不可变性,可以使用dataclassfrozen set

JavaScript vs Python 数据类型对比

JS代码 Python代码
let age = 18; age = 18
const name = "花姐"; name = "花姐"
let arr = [1, 2, 3]; `arr = [1, 2, 3]
let obj = {key: "value"}; obj = {"key": "value"}

2. 控制流(循环与条件语句)

If/Else

python 复制代码
x = 10

if x > 5:
    print("X is large")
elif x == 5:
    print("X is five")
else:
    print("X is small")
  • 条件语句不需要括号()。
  • 使用缩进代替{}。

循环(For & While)

python 复制代码
# 遍历列表
for num in [1, 2, 3]:
    print(num)

# While循环
x = 5
while x > 0:
    print(x)
    x -= 1
  • for循环直接遍历列表/数组。
  • while循环与JavaScript类似。

3. 函数与Lambda表达式

定义函数

python 复制代码
def greet(name):
    return f"Hello, {name}!"

print(greet("花姐"))
  • def代替function
  • 没有{},只有缩进。

Lambda(相当于箭头函数)

python 复制代码
add = lambda x, y: x + y
print(add(5, 10))  # 输出: 15
  • 相当于JavaScript的箭头函数:
javascript 复制代码
const add = (x, y) => x + y;

4. Python集合(列表、字典、集合)

列表(类似数组)

python 复制代码
nums = [1, 2, 3]
nums.append(4)  # 添加元素
nums.remove(2)  # 移除元素
print(nums)  # 输出: [1, 3, 4]

字典(类似对象)

python 复制代码
user = {"name": "花姐", "age": 18}
print(user["name"])  # 输出: 花姐

5. Python中的面向对象编程(OOP)

定义类

python 复制代码
class Person:
    def __init__(self, name):
        self.name = name

    def greet(self):
        return f"Hello, my name is {self.name}"

p = Person("花姐")
print(p.greet())  # 输出: Hello, my name is 花姐
  • __init__是构造函数(类似JavaScript中的constructor())。
  • self类似this

6. Python与数据库

SQLite示例(兼容Django和Flask)

python 复制代码
import sqlite3

conn = sqlite3.connect("database.db")
cursor = conn.cursor()

cursor.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)")
cursor.execute("INSERT INTO users (name) VALUES ('Austin')")
conn.commit()
  • SQLite是内置的,无需安装。

7. Python中的异步编程

Async/Await(类似JavaScript)

python 复制代码
import asyncio

async def fetch_data():
    await asyncio.sleep(2)
    return "Data received"

async def main():
    result = await fetch_data()
    print(result)

asyncio.run(main())
  • 使用async/await,类似JavaScript。
  • asyncio是事件循环,相当于Node.js。

8. Python包管理

任务

任务 JavaScript Python
安装包 npm install axios pip install requests
创建虚拟环境 nvm use python -m venv env
运行脚本 node script.js python script.py
  • 使用pip进行包管理。
  • 虚拟环境(venv)隔离依赖。

9. Python开发的最佳实践

编写干净、高效、可维护的Python代码对于长期的可扩展性至关重要。以下是每个Python开发者都应遵循的关键最佳实践:

遵循PEP 8(Python风格指南)

Python有一个官方的风格指南,称为PEP 8,它提供了编写Python代码的约定。

  • 使用4个空格作为缩进级别(不要使用制表符)。
  • 限制行长度为79个字符。
  • 使用有意义的变量和函数名称。
  • 使用snake_case作为变量和函数名称,使用PascalCase作为类名称。

示例代码

python 复制代码
# 符合规范的代码
def calculate_area(radius):
    return 3.14 * radius ** 2

# 不推荐的代码
def calcArea(r): return 3.14*r**2

使用虚拟环境

Python的虚拟环境隔离了不同项目的依赖关系,防止冲突。

创建虚拟环境

python 复制代码
python -m venv venv

激活虚拟环境:

  • Windows:

    venv\Scripts\activate

  • Mac/Linux:

bash 复制代码
source venv/bin/activate

停用虚拟环境:

python 复制代码
deactivate

使用类型提示提高代码可读性

Python是动态类型的,但你可以使用类型提示来提高代码的清晰度。

python 复制代码
def add(x: int, y: int) -> int:
    return x + y
  • 这使得代码可读性更强。
  • 帮助像mypy这样的工具捕获类型错误。

Python中的函数、类注释文档

始终使用文档字符串(""" """)记录你的函数和类。

python 复制代码
def greet(name: str) -> str:
    """
    返回给定名称的问候消息。

    :param name: 要问候的名称。
    :return: 问候字符串。
    """
    return f"Hello, {name}!"
  • 使用三重引号进行多行文档字符串。
  • 解释参数、返回值和目的。

10. Python中的注释

Python使用#进行单行注释,使用三重引号(""" """)进行文档字符串。

单行注释

python 复制代码
# 这是一个单行注释
print("Hello, world!")  # 行内注释

多行文档字符串

python 复制代码
"""
这是一个多行文档字符串。
通常用于文档。
"""
print("Hello, world!")
  • 仅在必要时使用注释------好的代码应该是自解释的。
  • 文档字符串不是注释------它们用于文档,可以通过help()访问。

11. 面向Web开发者的的Python导入

以下是一些常见的Python导入:

内置模块

功能 导入
系统操作 import os
文件处理 import pathlib
环境变量 import dotenv
日期和时间 import datetime
JSON解析 import json
HTTP请求 import requests
日志记录 import logging

示例用法

python 复制代码
import os
import json
import requests

response = requests.get("https://api.example.com/data")
data = response.json()
print(data)

12. 设置requirements.txt文件

requirements.txt文件类似于Node.js中的package.json------它列出了Python项目的依赖项。

创建requirements.txt文件

python 复制代码
pip freeze > requirements.txt

requirements.txt安装依赖

python 复制代码
pip install -r requirements.txt
  • 这确保了所有团队成员和部署环境都有相同的包版本。

13. 在Python中编写和运行测试

Python有内置的unittest测试,但实用pytest模块更简洁。

使用unittest的基本测试

python 复制代码
import unittest

def add(x, y):
    return x + y

class TestMath(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)

if __name__ == "__main__":
    unittest.main()
  • 使用assertEqual()检查预期结果。

使用pytest进行测试

安装pytest

python 复制代码
pip install pytest

示例test_math.py

python 复制代码
def add(x, y):
    return x + y

def test_add():
    assert add(2, 3) == 5
    assert add(-1, 1) == 0

运行所有测试:

python 复制代码
pytest
  • 不需要使用类------只需使用assert
  • 自动发现名为test_*.py的测试文件。

14. 使用Python进行API调用获取数据

Python使用requests获取数据,类似于JavaScript中的fetch()

基本API请求

python 复制代码
import requests

response = requests.get("https://jsonplaceholder.typicode.com/posts")
data = response.json()
print(data)
  • requests.get()类似于JavaScript中的fetch(url)
  • .json()在两种语言中的工作方式相同。

发送数据(POST请求)

python 复制代码
payload = {"title": "Hello", "body": "World"}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=payload)

print(response.status_code)  # 201 Created
print(response.json())
  • 使用json=payload而不是data=payload来发送JSON。

15. Python中的日志记录

日志记录对于调试和监控应用程序至关重要。

基本日志记录

python 复制代码
import logging

logging.basicConfig(level=logging.INFO)
logging.info("This is an info message")
logging.warning("This is a warning")
logging.error("This is an error")
  • 类似于console.log(),但支持不同的日志级别。

将日志写入文件

python 复制代码
logging.basicConfig(filename="app.log", level=logging.DEBUG)
logging.debug("Debugging info")
  • 保存日志以供后续分析。

16. 在Python中引发和处理错误

当发生错误时,Python允许你引发异常或记录错误。

引发异常

python 复制代码
def divide(x, y):
    if y == 0:
        raise ValueError("Cannot divide by zero")
    return x / y

print(divide(10, 2))  # 正常
print(divide(10, 0))  # 引发ValueError
  • 使用raise手动触发错误。

记录错误

而不是崩溃,使用日志记录错误并附带回溯:

python 复制代码
import logging

logging.basicConfig(filename="error.log", level=logging.ERROR)

try:
    result = 10 / 0
except ZeroDivisionError as e:
    logging.error("An error occurred", exc_info=True)
  • exc_info=True记录完整的错误回溯。

结论

Python对于Web开发者来说是一种非常有用的语言,它扩展了你的技术栈,超越了JavaScript。无论你是使用FastAPI构建API,还是使用Django构建全栈应用,或者进行自动化任务,Python都让这一切变得简单而强大。🚀

相关推荐
geekmice3 小时前
pdf转换markdwon文档
python·pdf
老马啸西风3 小时前
Occlum 是一个内存安全的、支持多进程的 library OS,特别适用于 Intel SGX。
网络·后端·算法·阿里云·云原生·中间件·golang
蹦蹦跳跳真可爱5895 小时前
Python----计算机视觉处理(Opencv:梯度处理:filiter2D算子,Sobel,Laplacian)
人工智能·python·opencv·计算机视觉
蹦蹦跳跳真可爱5896 小时前
Python----计算机视觉处理(Opencv:绘制图像轮廓:寻找轮廓,findContours()函数)
人工智能·python·opencv·计算机视觉
天才测试猿6 小时前
Python常用自动化测试框架—Pytest
自动化测试·软件测试·python·功能测试·测试工具·测试用例·pytest
Ronin-Lotus7 小时前
深度学习篇---卷积网络结构
人工智能·python·深度学习·cnn
FreakStudio7 小时前
一文速通Python并行计算:04 Python多线程编程-多线程同步(上)—基于条件变量、事件和屏障
python·嵌入式·开发工具·面向对象·线程同步·代码阅读·电子diy
Fansv5878 小时前
深度学习框架PyTorch——从入门到精通(10)PyTorch张量简介
人工智能·pytorch·经验分享·python·深度学习·机器学习
冰蓝蓝8 小时前
Pytorch :维度转化
人工智能·pytorch·python
独好紫罗兰8 小时前
洛谷题单1-B2002 Hello,World!-python-流程图重构
python·算法·流程图