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!')
相关推荐
Coder_Boy_6 分钟前
Java开发者破局指南:跳出内卷,借AI赋能,搭建系统化知识体系
java·开发语言·人工智能·spring boot·后端·spring
databook12 分钟前
像搭积木一样思考:数据科学中的“自下而上”之道
python·数据挖掘·数据分析
Mr_Xuhhh12 分钟前
介绍一下ref
开发语言·c++·算法
luoluoal12 分钟前
基于python的医疗问句中的实体识别算法的研究(源码+文档)
python·mysql·django·毕业设计·源码
nbsaas-boot17 分钟前
软件开发最核心的理念:接口化与组件化
开发语言
lsx20240620 分钟前
Java 对象概述
开发语言
啊阿狸不会拉杆22 分钟前
《机器学习导论》第 9 章-决策树
人工智能·python·算法·决策树·机器学习·数据挖掘·剪枝
Mr_Xuhhh23 分钟前
C++11实现线程池
开发语言·c++·算法
喵手25 分钟前
Python爬虫实战:城市停车收费标准自动化采集系统 - 让停车费透明化的技术实践(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·城市停车收费标准·采集城市停车收费数据·采集停车数据csv文件导出
无水先生26 分钟前
python函数的参数管理(01)*args和**kwargs
开发语言·python