自我提升-python爬虫学习:day05-函数与面向对象编程

1.切片

Python切片的基本语法为:

sequencestart:stop:step

  • start: 起始索引(包含)
  • stop: 结束索引(不包含)
  • step: 步长,默认为1
省略参数
  • sequence[:stop] - 从开始到stop-1
  • sequence[start:] - 从start到结束
  • sequence[:] - 复制整个序列
负数索引
  • 从序列末尾开始计数,-1表示最后一个元素
  • 例如:sequence[-3:] 获取最后3个元素
步长使用
  • 正数:从左到右
  • 负数:从右到左(逆序)
  • 例如:sequence[::-1] 反转序列
python 复制代码
'''
切片
    语法:s[start:end:step]
    start:开始索引,默认值为0
    end:结束索引,默认值为字符串的长度(不包含在切片中)
    step:步长,默认值为1
'''

#字符串切片
s = '偷偷学python,惊艳所有人!'
# 取出学
print(s[2]) # 学
#取出python
print(s[3:9]) # python
print(s[3:9:2]) # pto
#取出python和之后的所有字符
print(s[3:]) #python,惊艳所有人!
print(s[3:len(s)]) # python,惊艳所有人!

#取出python之前的所有字符
print(s[:3]) # 偷偷学
# 取出所有字符的倒序
print(s[::-1]) # !人有所艳惊,nohtyp学偷偷
print(s[::-2]) # !有艳,otp偷

#列表切片
# 列表的切片和字符串的切片的用法是完全一样的,只是列表的切片返回的是一个新的列表,而字符串的切片返回的是一个新的字符串。
#              0          1        2           3            4             5
xiyouji = ['猴王出世','大闹天宫','五指山','四人一马','九九八十一难','取得真经']
print(xiyouji[1:3]) # ['大闹天宫', '五指山']
print(xiyouji[:3]) # ['猴王出世', '大闹天宫', '五指山']
print(xiyouji[1:-3]) # ['大闹天宫', '五指山']

2.函数

函数是可重用的代码块,用于执行特定任务。使用 def 关键字定义:

python 复制代码
#def 函数名(参数):  ----> 函数名遵循变量名规则,参数可选
#	函数体
def greet(name):
    """向用户问好"""
    return f"Hello, {name}!"

print(greet("Alice"))  # 输出: Hello, Alice!
位置参数

按顺序传递的参数,必须一一对应:

python 复制代码
def add(a, b):
    return a + b

print(add(3, 5))  # 输出: 8
默认参数

为参数提供默认值,调用时可省略:

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

print(greet("Bob"))          # 输出: Hello, Bob!
print(greet("Bob", "Hi"))    # 输出: Hi, Bob!

注意:默认参数应放在位置参数之后,且默认值应为不可变对象(如数字、字符串、元组)。

函数的返回值

使用 return 语句返回结果,执行后函数结束

  • 函数的返回值可以是任意类型,包括数字、字符串、列表、元组、字典等。
  • 函数的返回值可以是多个值,用逗号隔开。
  • 函数的返回值可以是None,表示没有返回值。
python 复制代码
def square(x):
    return x ** 2

result = square(5) + 5
print(result)  # 输出: 30

3.类

一个创造事务的模板

使用 class 关键字定义类,类名通常采用驼峰命名法(首字母大写):

复制代码
class 类名:
    def __init__(self, 形参1, 形参2, ...): --->self代表对象,self不可修改不可删

        self.属性名 = 形参值

        # 初始化属性

        self.name = 形参1

        self.age = 形参2

    def 功能函数(self):

        # 方法体

        print('方法体')
python 复制代码
'''
语法:先写模板
    class 类名:
        def __init__(self, 形参1, 形参2, ...): --->self代表对象,self不可修改不可删
            self.属性名 = 形参值
            # 初始化属性
            self.name = 形参1
            self.age = 形参2
        def 功能函数(self):
            # 方法体
            print('方法体')
'''
class Mage:
    # 类变量(所有实例共享)
    team = '取经人'
    def __init__(self, my_name, my_age, my_sex):
        # 构造函数,初始化实例属性
        self.name = my_name
        self.age = my_age
        self.sex = my_sex
    def show(self):
        # 实例方法,第一个参数为self
        print(f"我是{self.name},我今年{self.age}岁,我是{self.sex}{self.team}")
#通过模板创建对象,格式:对象名 = 类名(实参1, 实参2, ...)
mage1 = Mage('孙悟空', 18, '男')
#访问实例属性:对象名.属性名
print(mage1.name) # 孙悟空
print(mage1.age) # 18
print(mage1.sex) # 男
# 调用实例方法
mage1.show()

# 访问类变量:类名.属性名
print(Mage.team) # 取经人
print(mage1.team) # 取经人   通过实例访问
相关推荐
荣码1 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
金銀銅鐵12 小时前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li14 小时前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸18 小时前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学19 小时前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员
花酒锄作田1 天前
Pydantic校验配置文件
python
hboot1 天前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
ZhengEnCi2 天前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi2 天前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab
曲幽2 天前
你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南
python·fastapi·web·graphql·route·cors·rest·strawberry