当前位置: 首页 > news >正文

Python知识点汇总

1. 位置参数 *args 关键字参数**kwargs

args、kwargs也可以换成别的表达

示例:

def example_function(arg1, arg2, *args, **kwargs):print(f"固定参数: {arg1}, {arg2}")print(f"额外位置参数: {args}")print(f"额外关键字参数: {kwargs}")example_function(1, 2, 3, 4, 5, name="Alice", age=25)
# 输出:
# 固定参数: 1, 2
# 额外位置参数: (3, 4, 5)
# 额外关键字参数: {'name': 'Alice', 'age': 25}

2. PEP 8 相关规范

什么是PEP 8规范:PEP8 是 Python 官方制定的代码风格指南,规定了命名规范、缩进、空行、注释等代码编写细节,旨在提高 Python 代码的可读性和一致性

  • 不要使用反斜杠连接行
  • 方法定义之间空1行,顶级定义之间空两行(顶级定义(Top-level definitions) 指的是直接定义在模块(.py 文件)最外层的代码元素,不属于任何类、函数或其他代码块的定义。简单来说,就是没有缩进的定)

3. __new____init__ 的区别

class MyClass:# __new__:创建实例(静态方法)def __new__(cls, *args, **kwargs):print(f"__new__ 被调用,正在创建 {cls.__name__} 实例")# 调用父类的__new__创建并返回实例instance = super().__new__(cls)return instance# __init__:初始化实例(实例方法)def __init__(self, name):print(f"__init__ 被调用,正在初始化实例")self.name = name  # 设置实例属性def show(self):print(f"实例属性 name = {self.name}")# 创建实例
obj = MyClass("测试对象")
obj.show()# 输出结果:
# __new__ 被调用,正在创建 MyClass 实例
# __init__ 被调用,正在初始化实例
# 实例属性 name = 测试对象

new 的第一个参数是 cls(当前类),必须返回一个实例。
init 的第一个参数是 self(new 返回的实例),无需返回值。

4. rangexrange的区别

# Python 2 环境下
# 遍历 range()(直接遍历已存在的列表)
for i in range(1, 5):print(i)  # 1, 2, 3, 4# 遍历 xrange()(动态生成每个元素)
for i in xrange(1, 5):print(i)  # 1, 2, 3, 4(结果相同,但生成方式不同)
  • Python 2:range() 返回列表(占用内存多),xrange() 返回生成器(节省内存)。
  • Python 3:仅保留range(),功能等同于 Python 2 的 xrange()。

5. 字符串统计单词个数

from collections import Counter# 定义一个英文句子
sentence = "I like python, python is easy, I like coding, coding is fun"# 简单处理:去除标点并转为小写(避免大小写和标点影响统计)
processed = sentence.replace(",", "").lower()# 按空格分割成单词列表
words = processed.split()# 使用Counter统计每个单词的出现次数
word_counts = Counter(words)print("单词出现次数:")
for word, count in word_counts.items():print(f"{word}: {count}次")

6. 列表扁平化

def flatten(nested):result = []for item in nested:if isinstance(item, list):# 如果是列表,递归扁平化后合并result.extend(flatten(item))else:# 否则直接添加result.append(item)return result# 测试三层嵌套列表
nested_list = [1, [2, [3, 4], 5], [6, [7, [8]]]]
print(flatten(nested_list))  # 输出:[1, 2, 3, 4, 5, 6, 7, 8]

7. 二分查找

(1)非递归——左右指针

def binary_search(data,target):left = 0right = len(data)-1while left <= right:mid = (left+right)//2if data[mid] == target:return Trueelif data[mid] > target:right = mid-1else:left = mid+1return False

(2)递归

def binary_search(data,target):n = len(data)if n>0:mid = n//2if data[mid] == target:return Trueelif data[mid]<target:binary_search(data[mid+1:],target)else:binary_search(data[:mid],target)return False

8. == 和 is 的区别

9. 字典和json的转换

“dump 出”:把字典 “倒出来” 变成 JSON 字符串。
“load 入”:把 JSON 字符串 “装进去” 变成字典。

import json# 原字典
my_dict = {"name": "张三", "age": 30}# dumps:字典 → JSON字符串(dump出字符串)
json_str = json.dumps(my_dict)
print(type(json_str))  # <class 'str'>(是字符串)# loads:JSON字符串 → 字典(load入字典)
new_dict = json.loads(json_str)
print(type(new_dict))  # <class 'dict'>(是字典)

10.字典推导式

# 键是数字,值是数字的平方
square_dic = {x: x**2 for x in [1, 2, 3, 4]}
# 结果:{1: 1, 2: 4, 3: 9, 4: 16}# 从列表生成键,值是键的长度
len_dic = {word: len(word) for word in ["apple", "banana", "cat"]}
# 结果:{'apple': 5, 'banana': 6, 'cat': 3}
http://www.dtcms.com/a/336221.html

相关文章:

  • 人工智能训练师复习题目实操题1.2.1 - 1.2.5
  • 4.Ansible自动化之-部署文件到主机
  • Mac(五)自定义鼠标滚轮方向 LinearMouse
  • 【网络通信】TCP/IP 协议全方位解析​
  • 计算机网络 TCP、UDP 区别
  • 云原生俱乐部-RH134知识点总结(2)
  • mediamtx v1.14.0版本全面解析:RTP流接收、IPv6支持与性能监控体系升级​
  • 如何做HTTP优化
  • Python 项目里的数据清理工作(数据清洗步骤应用)
  • 芯片行业主要厂商
  • Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害预警与应急响应中的应用
  • LeetCode 837.新 21 点:动态规划+滑动窗口
  • 动态规划法 - 53. 最大子数组和
  • MySQL数据库基础操作指南:从创建到管理的完整流程
  • Linux系统中6种替代top的工具
  • SparkSQL性能优化实践指南
  • ubuntu 24.04 安装
  • RAC环境redo在各节点本地导致数据库故障恢复---惜分飞
  • 云智智慧停充一体云-allnew全新体验-路内停车源码+路外停车源码+充电桩源码解决方案
  • 从零配置YOLOv8环境:RTX 3060显卡完整指南
  • 43.安卓逆向2-补环境-使用unidbg(使用Smali语法调用方法和使用方法地址调用方法)
  • n2n局域网搭建
  • 0-12岁幼儿启蒙与教育
  • Linux操作系统远程连接
  • 代码管理系统简介与部署
  • 《告别 if-else 迷宫:Python 策略模式 (Strategy Pattern) 的优雅之道》
  • Honor of Kings 101star (S40) 2025.08.17
  • Spring Bean 的生命周期:从创建到销毁的完整旅程​
  • Gemini 学习记录:实践与反思
  • 深度解析 Spring Bean 生命周期