社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

从零开始学Python:一篇文章讲清所有入门知识

A逍遥之路 • 3 天前 • 16 次点击  

📢 划重点:不管你是编程小白还是转行大神,这篇Python入门指南都能让你少走弯路,快速上手!附赠实用代码片段和常见坑位提醒,建议收藏慢慢看!

一、为啥要学Python?我直接说干货

如果你还在纠结要不要学Python,那我只能说——别想了,学就对了!为啥?

  • 上手容易:语法简单,代码读起来像英语,告别复杂的大括号和分号

  • 用途广泛:数据分析、人工智能、网站开发、自动化脚本、爬虫...样样能行

  • 就业香:不管是转行还是升职,Python技能都是真香

  • 社区强大:遇到问题一搜,海量教程和答案等着你

我自己就是从零开始学的Python,一年内从"print是啥"到独立开发项目。只要方法对,学习曲线真的不陡。

二、环境搭建:一次到位,省心省力

很多初学者卡在第一步:环境安装。这里我手把手教你,保证一遍过!

2.1 下载安装Python

直接访问Python官网,下载最新版本(目前是Python 3.11)。

Windows用户注意:安装时记得勾选"Add Python to PATH"!这是新手第一个大坑,不勾选会导致后面命令行找不到Python。

Mac用户:可以用自带的Python,但建议用Homebrew安装:brew install python3

2.2 选择一个顺手的编辑器

我强烈推荐以下几款:

  • VS Code :轻量级但功能强大,配合Python插件简直完美

  • PyCharm:专业Python IDE,功能齐全(社区版免费够用)

  • Jupyter Notebook:数据分析必备,交互式编程超爽

初学者建议先用VS Code,界面友好,上手快。

2.3 测试环境

打开命令行(Windows用cmd或PowerShell,Mac用Terminal),输入:

python --version

如果显示Python版本号,恭喜你,环境搭好了!再试试进入Python交互环境:

python

看到>>>提示符,就可以输入Python代码了:

print("Hello, 我的Python之旅开始啦!")

三、Python基础语法:一学就会

3.1 变量和数据类型

Python中变量不需要声明类型,直接赋值就能用:

# 整数
age=25

# 浮点数(小数)
height=175.5

# 字符串
name="张三"

# 布尔值
is_student=True

# 打印变量
print(f"我叫{name},今年{age}岁,身高{height}cm,学生身份:{is_student}")

常见数据类型有:

类型例子用途
int42整数
float3.14小数
str"你好"文本
boolTrue/False真/假
list[1, 2, 3]列表(可修改)
tuple(1, 2, 3)元组(不可修改)
dict{"name": "张三"}字典(键值对)
set{1, 2, 3}集合(唯一值)

3.2 运算符:和数学差不多

# 算术运算符
a=10
b=3
print(a+b)  # 13(加)
print(a-b)  # 7(减)
print( a*b)  # 30(乘)
print(a/b)  # 3.3333...(除,结果是float)
print(a//b)  # 3(整除,舍弃小数部分)
print(a%b)  # 1(取余/模)
print(a**b)  # 1000(幂,10的3次方)

# 比较运算符
print(a==b)  # False(等于)
print(a!=b)  # True(不等于)
print(a>b)   # True(大于)
print(a<b)   # False(小于)

# 逻辑运算符
x=True
y=False
print(and y)  # False(与)
print(or y)   # True(或)
print(not x)    # False(非)

3.3 条件语句:做决策

Python用缩进来表示代码块,这点很特别:

age=20

if age<18:
    print("未成年")
elif age>=18 and age<60:
    print("成年人")
else:
    print("老年人")

注意:Python用4个空格作为缩进(不是Tab)。缩进错误是新手常见错误!

3.4 循环:重复执行

两种常见循环:

# for循环:适合已知循环次数
for in range(5):  # range(5)生成[0,1,2,3,4]
    print(i)

# while循环:适合未知循环次数
count=0
while count<5:
    print(count)
    count+=1  # 别忘了更新条件,否则会无限循环!

循环控制:

# break:立即退出循环
for in range(10):
    if i==5:
        break  # 到5就停止
    print(i)  # 只打印0到4

# continue:跳过当前循环
for in range(10):
    if i%2==0:
        continue  # 跳过偶数
    print(i)  # 只打印奇数

3.5 函数:代码复用的基本单位

# 定义函数
def greet(name, age=18):  # age有默认值
    """这是函数说明文档"""
    return f"你好,{name}!你今年{age}岁了。"

# 调用函数
message = greet("小明", 20)
print(message)  # 输出:你好,小明!你今年20岁了。

# 使用默认参数
message = greet("小红")  # 不传age,使用默认值
print(message)  # 输出:你好,小红!你今年18岁了。

3.6 列表:最常用的数据结构

# 创建列表
fruits = ["苹果", "香蕉", "橙子"]

# 访问元素
print(fruits[0])  # 苹果(索引从0开始)
print(fruits[-1])  # 橙子(负索引从末尾开始)

# 修改元素
fruits[1] = "葡萄"
print(fruits)  # ['苹果', '葡萄', '橙子']

# 添加元素
fruits.append("西瓜")  # 添加到末尾
print(fruits)  # ['苹果', '葡萄', '橙子', '西瓜']

# 插入元素
fruits.insert(1, "梨")  # 在索引1处插入
print(fruits)  # ['苹果', '梨', '葡萄', '橙子', '西瓜']

# 删除元素
fruits.remove("葡萄")  # 删除指定元素
print(fruits)  # ['苹果', '梨', '橙子', '西瓜']

# 弹出元素
last_fruit = fruits.pop()  # 弹出最后一个元素并返回
print(last_fruit)  # 西瓜
print(fruits)  # ['苹果', '梨', '橙子']

# 列表长度
print(len(fruits))  # 3

# 列表排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort()  # 原地排序
print(numbers)  # [1, 1, 2, 3, 4, 5, 6, 9]

3.7 字典:键值对存储

# 创建字典
student = {
    "name": "张三",
    "age": 20,
    "courses": ["Python", "数据分析", "机器学习"]
}

# 访问值
print(student["name"])  # 张三

# 修改值
student["age"] = 21

# 添加键值对
student["school"] = "某大学"

# 删除键值对
del student["courses"]

# 安全获取值
grade = student.get("grade", "未知")  # 如果键不存在,返回默认值
print(grade)  # 未知

# 遍历字典
for key in student:
    print(f"{key}: {student[key]}")

# 或者
for key, value in student.items():
    print(f"{key}: {value}")

四、错误和异常处理:防止程序崩溃

try:
    number = int(input("请输入一个数字:"))
    result = 10 / number
    print(f"10除以{number}等于{result}")
except ValueError:
    print("输入无效,请输入一个数字!")
except ZeroDivisionError:
    print("不能除以零!")
except:
    print("发生了其他错误!")
finally:
    print("无论如何,这句话都会执行")

五、文件操作:读写超简单

# 写入文件
with open("example.txt", "w", encoding="utf-8") as file:
    file.write("这是第一行\n")
    file.write("这是第二行\n")

# 读取文件
with open("example.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)

# 逐行读取
with open("example.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())  # strip()去除换行符

提示:使用with语句能自动关闭文件,即使发生异常也没关系,强烈推荐!

六、模块和包:站在巨人肩膀上

Python的强大在于丰富的第三方库。先了解如何引入:

# 导入标准库
import math
print(math.sqrt(16))  # 4.0

# 导入特定函数
from math import sqrt
print(sqrt(16))  # 4.0

# 导入并重命名
import math as m
print(m.pi)  # 3.141592653589793

# 导入全部(不推荐,可能造成命名冲突)
from math import *

6.1 常用标准库

  • os:操作系统交互

  • sys:Python解释器相关

  • datetime:日期时间处理

  • random:随机数生成

  • json:JSON数据处理

6.2 必知第三方库

  • NumPy:科学计算基础

  • pandas:数据分析利器

  • matplotlib/seaborn:数据可视化

  • requests:HTTP请求库

  • BeautifulSoup:HTML解析库

  • Flask/Django:Web框架

  • scikit-learn:机器学习库

安装第三方库很简单:

pip install 库名

例如:pip install pandas

七、面向对象:进阶必学

简单理解:把数据和处理数据的方法打包在一起,形成"对象"。

class Person:
    # 初始化方法(构造函数)
    def __init__(self, name, age):
        self.name = name  # 实例属性
        self.age = age

    # 实例方法
    def greet(self):
        return f"你好,我叫{self.name},今年{self.age}岁。"

    # 修改年龄
    def have_birthday(self):
        self.age += 1
        return f"{self.name}过生日了,现在{self.age}岁了。"

# 创建实例
p1 = Person("小明", 20)
p2 = Person("小红", 18)

# 调用方法
print(p1.greet())  # 你好,我叫小明,今年20岁。
print(p2.greet())  # 你好,我叫小红,今年18岁。

# 修改属性
p1.name = "大明"
print(p1.greet())  # 你好,我叫大明,今年20岁。

# 调用方法改变状态
print(p1.have_birthday())  # 大明过生日了,现在21岁了。

八、10个实用小技巧

8.1 列表推导式:一行代码搞定列表生成

# 生成1-10的平方列表
squares = [x**2 for x in range(1, 11)]
print(squares)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 带条件的列表推导式
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)  # [4, 16, 36, 64, 100]

8.2 f-string:最简洁的字符串格式化

name = "小明"
age = 20
print(f"{name}今年{age}岁")  # 小明今年20岁

# 格式化数字
pi = 3.1415926
print(f"圆周率是{pi:.2f}")  # 圆周率是3.14

8.3 enumerate:同时获取索引和值

fruits = ["苹果", "香蕉", "橙子"]
for i, fruit in enumerate(fruits):
    print(f"{i+1}. {fruit}")
# 输出:
# 1. 苹果
# 2. 香蕉
# 3. 橙子

8.4 zip:并行遍历多个列表

names = ["张三", "李四", "王五"]
ages = [20, 21, 22]
for name, age in zip(names, ages):
    print(f"{name}今年{age}岁")
# 输出:
# 张三今年20岁
# 李四今年21岁
# 王五今年22岁

8.5 *解包运算符

# 列表解包
first, *rest = [1, 2, 3, 4, 5]
print(first)  # 1
print(rest)   # [2, 3, 4, 5]

# 用于函数参数
def add(*numbers):
    return sum(numbers)

print(add(1, 2, 3))  # 6

8.6 使用collections模块简化代码

from collections import Counter

# 计数器
text = "hello world hello python"
word_count = Counter(text.split())
print(word_count)  # Counter({'hello': 2, 'world': 1, 'python': 1})

# 默认字典
from collections import defaultdict
fruit_counts = defaultdict(int)  # 默认值为0
for fruit in ["苹果", "香蕉", "苹果", "梨"]:
    fruit_counts[fruit] += 1
print(fruit_counts)  # defaultdict(, {'苹果': 2, '香蕉': 1, '梨': 1})

8.7 使用set快速去重

numbers = [1, 2, 3, 2, 1, 4, 5, 4]
unique_numbers = list(set(numbers))
print(unique_numbers)  # [1, 2, 3, 4, 5](顺序可能不同)

8.8 lambda匿名函数




    
# 普通函数
def add(x, y):
    return x + y

# 等价的lambda函数
add = lambda x, y: x + y

# 结合列表排序
students = [("张三", 85), ("李四", 92), ("王五", 78)]
students.sort(key=lambda student: student[1], reverse=True)  # 按分数从高到低排序
print(students)  # [('李四', 92), ('张三', 85), ('王五', 78)]

8.9 生成器表达式:节省内存

# 生成器表达式(用()而不是[])
sum_of_squares = sum(x**2 for x in range(1, 1001))
print(sum_of_squares)  # 比列表推导式节省内存

8.10 使用pathlib处理文件路径

from pathlib import Path

# 创建路径对象
p = Path("example")

# 创建目录
p.mkdir(exist_ok=True)

# 创建文件
file_path = p / "test.txt"
file_path.write_text("Hello, Python!", encoding="utf-8")

# 读取文件
content = file_path.read_text(encoding="utf-8")
print(content)  # Hello, Python!

九、常见坑位和解决方案

9.1 可变默认参数陷阱

# 错误示范
def add_item(item, list=[]):  # 这里list是所有函数调用共享的!
    list.append(item)
    return list

print(add_item(1))  # [1]
print(add_item(2))  # [1, 2] 而不是 [2]

# 正确做法
def add_item(item, list=None):
    if list is None:
        list = []
    list.append(item)
    return list

9.2 浅拷贝vs深拷贝

import copy

original = [1, [2, 3], 4]

# 引用(不是拷贝)
ref = original
ref[0] = 9  # 原列表也变了
print(original)  # [9, [2, 3], 4]

# 浅拷贝
shallow = original.copy()  # 或用 shallow = copy.copy(original)
shallow[0] = 1  # 原列表不变
shallow[1][0] = 99  # 原列表的嵌套列表会变
print(original)  # [9, [99, 3], 4]

# 深拷贝
deep = copy.deepcopy(original)
deep[1][1] = 88  # 原列表不变
print(original)  # [9, [99, 3], 4]
print(deep)  # [9, [99, 88], 4]

9.3 全局变量陷阱

counter = 0

def increment():
    counter += 1  # 错误!Python认为这是局部变量

def correct_increment():
    global counter  # 声明这是全局变量
    counter += 1

# correct_increment()  # 正确

9.4 字符串是不可变的

s = "hello"
# s[0] = "H"  # 错误!字符串不可修改

# 正确做法
s = "H" + s[1:]  # 创建新字符串
print(s)  # Hello

恭喜你读到这里!Python基础知识已经掌握得差不多了

Python学习是一段有趣的旅程。记住,编程能力不是一蹴而就的,需要持续实践和学习。遇到问题别怕,这是成长的机会。

希望这篇文章能帮你建立坚实的Python基础。如果有问题,欢迎在评论区留言。让我们一起在Python的海洋里遨游吧!

转发、收藏、在看,是对作者最大的鼓励!👏
关注逍遥不迷路,Python知识日日补!






           对Python,AI,自动化办公提效,副业发展等感兴趣的伙伴们,扫码添加逍遥,限免交流群

备注【成长交流】

图片



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/181488
 
16 次点击