python的基础使用

文档地址

https://liaoxuefeng.com/books/python/oop/index.html

一、函数默认参数

复制代码
def enroll(name, gender, age=6, city='Beijing'):
    print('name:', name)
    print('gender:', gender)
    print('age:', age)
    print('city:', city)

# 1.没有写默认值的是必须传递的
enroll('Sarah', 'F')

# 2.写了默认值的传递了,就覆盖默认值
enroll('Bob', 'M', 7)

# 3.当默认参数的位置不一样时,需要指定变量名
enroll('Adam', 'M', city='Tianjin')

二、切片

复制代码
# 1.默认索引0开始,不包括右边数字,取出0,1,2索引的值
L[:3]

# 2.取出最后10个值
L[-10:]

# 3.取到倒数第二个
L[:-2]

# 4.取全部
L[:]

# 5.全部数据,步长为2取
L[::2]

# 6.前10个数,步长为2取
L[:10:2]

三、for循环与迭代

复制代码
from collections.abc import Iterable
isinstance('abc', Iterable) # str是否可迭代
True

四、列表生成式

复制代码
# 把要生成的元素x * x放到前面操作

[x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

五、生成器

复制代码
# 节约内存

通过列表生成式,我们可以直接创建一个列表。
但是,受到内存限制,列表容量肯定是有限的。
而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,
如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

# 用法:把一个列表生成式的[]改成()

>>> g = (x * x for x in range(10))
>>> for n in g:
...     print(n)

六、生成器函数(yiled关键字)

复制代码
函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator函数

generator的函数,在每次调用next()的时候执行,
遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。


def odd():
    print('step 1')
    yield 1
    print('step 2')
    yield(3)
    print('step 3')
    yield(5)

七、*args-元组, **kwargs-字典

复制代码
# 传递的参数,解包为元组,解包为字典

def example(a, b, *args, c=10, **kwargs):
    print(f"a={a}, b={b}, args={args}, c={c}, kwargs={kwargs}")

# 调用示例
example(1, 2, 3, 4, c=20, d=100, e="hello")
a=1, b=2, args=(3, 4), c=20, kwargs={'d': 100, 'e': 'hello'}

八、类

1.封装

复制代码
1.封装
#  __init__:构造方法,初始化方法
#  __name,表示私有属性


class Student(object):

    aa: str # 声明实例属性类型

    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

    def get_name(self):
        return self.__name

    def get_score(self):
        return self.__score
   
    def set_score(self, score):
        self.__score = score


bart = Student('Bart', 'male')

2.继承和多态

复制代码
1.子类继承父类,拥有父类的方法

2.子类对父类的方法进行重写,叫做多态

十、错误处理

复制代码
try:
    print('try...')
    r = 10 / 0
    print('result:', r)
except ZeroDivisionError as e:
    print('except:', e)

十一、日志(结合错误处理使用)

1.使用方法

复制代码
import logging

1.基础使用
#debug,info,warning,error等几个级别
logging.basicConfig(level=logging.INFO)  # 定义日志级别的阈值,比这个低的级别会输出

2.创建子模块日志器
命名日志器:通过logging.getLogger(name)创建的子日志器


3.进阶配置:自定义格式 + 输出到文件(同时输出到控制台)
logging.basicConfig(
    level=logging.INFO,
    # 日志格式:时间 - 日志器名称 - 级别 - 模块名 - 日志内容
    format="%(asctime)s - %(name)s - %(levelname)s - %(module)s - %(message)s",
    # 时间格式
    datefmt="%Y-%m-%d %H:%M:%S",
    # 输出目标:同时输出到文件和控制台(默认只输出到控制台)
    handlers=[
        logging.FileHandler("flight_rag.log", encoding="utf-8"),  # 输出到文件
        logging.StreamHandler()  # 输出到控制台
    ]
)

4.使用,在可能出错的节点

2.级别说明

复制代码
级别	数值	是否输出(level=INFO 时)
DEBUG	10	❌ 过滤
INFO	20	✅ 输出
WARNING	30	✅ 输出
ERROR	40	✅ 输出
CRITICAL	50	✅ 输出

十二、IO概念

复制代码
程序和外部设备之间的数据交换、

只要程序和 "内存 / CPU 之外的东西" 做数据交互,就是 IO 操作。

十三、文件读写

复制代码
1.文件读操作
try:
    f = open('/path/to/file', 'r')
    print(f.read())
finally:
    if f:
        f.close()

with open('/path/to/file', 'r') as f:
    print(f.read())

2.文件写操作

with open('/Users/michael/test.txt', 'w') as f:
    f.write('Hello, world!')
相关推荐
万粉变现经纪人2 小时前
如何解决 pip install SSL 报错 ValueError: check_hostname requires server_hostname 问题
网络·python·网络协议·beautifulsoup·bug·ssl·pip
逻极2 小时前
FastAPI + SQLAlchemy 现代API项目实战:从零到上手的Python MySQL开发指南
python·mysql·fastapi·异步·sqlalchemy
wildlily84272 小时前
C++ Primer 第5版章节题 第十章
开发语言·c++
吃人陈乐游刘2 小时前
06实战经验X-anylabelingAI自动标注数据集-本地实现-方法二(2025年12月)保姆级教程
python·miniforge·xanylabeling
玄同7652 小时前
Python 正则表达式:LLM 噪声语料的精准清洗
人工智能·python·自然语言处理·正则表达式·nlp·知识图谱·rag
2401_841495642 小时前
【机器学习】BP神经网络
人工智能·python·神经网络·机器学习·梯度下降法·反向传播·前向传播
Pyeako2 小时前
机器学习--K-means聚类&DBSCAN&TF-IDF
python·机器学习·kmeans·tf-idf·聚类·dbscan
零雲2 小时前
java面试:@Resource和@Autowired的区别
java·开发语言·面试
liu****2 小时前
01_NumPy讲义
开发语言·python·numpy·python高级语法