Python笔记

1. Python概述

1)对象

数据表示为对象:对象本质上是一个内存块,拥有特定的值,支持特定类型的运算操作

Python 3中,一切皆为对象。

每个对象由标识(identity)、类型(type)和值(value)标识

  • 标识(identity)用于唯一标识一个对象,通常对应于对象在计算机内存中的位置。使用内置函数id(obj1)可返回对象obj1的标识 通过内置的id()函数,可以获取一个对象唯一的id标识(CPython的实现为内存存放位置)
  • 类型(type)用于表示对象所属的数据类型(类),数据类型(类)用于限定对象的取值范围,以及允许执行的处理操作。使用内置函数type(obj1)可以返回对象obj1所属的数据类型 通过内置的type()函数,可以判断一个对象的类型
  • 值(value)用于表示对象的数据类型的值。使用内置函数print(obj1)可返回对象obj1的值
2)标识符

标识符的第一个字符必须是字母、下划线(“_”),其后的字符可以是字母、下划线或数字 一些特殊的名称,如if、for等保留关键字,不能作为标识符

注意事项:

        (1)Python标识符区分大小写。例如,ABC和abc视为不同的名称

        (2)以双下划线开始和结束的名称通常具有特殊的含义。例如,__init__为类的构造函数,一般应避免使用

        (3)避免使用Python预定义标识符名作为自定义标识符名。例如:NotImplemented、Ellipsis、int、float、list、str、tuple等

3)关键字

关键字即预定义保留标识符。关键字不能在程序中用作标识符,否则会产生编译错误

4)常量

Python语言不支持常量,即没有语法规则限制改变一个常量的值

Python语言使用约定,声明在程序运行过程中不会改变的变量为常量,通常使用全大写字母(可以使用下划线增加可阅读性)表示常量名

5)Python运算符及其优先级

表达式的组成:操作数、运算符和圆括号按一定规则组成表达式

2. print中的f表示什么?

示例:

字符串格式化

在Python中,代表着格式化字符串(Formatted String)

格式化字符串以字母"f"或"F"作为前缀,后跟一对大括号{},其中可以包含变量名称、表达式或函数调用。

3. 大写字母表示常量

>>> PI = 3.14     #浮点类型常量
Python 语言使用约定,声明在程序运行过程中不会改变的变量为常量,通常使用 全大写字母 (可以使用下划线增加可阅读性)表示常量名

4.不可变对象和可变对象

不可变对象一旦创建,其值就不能被修改,例如:int、str、complex等

Python对象的可变性取决于其数据类型的设计,即是否允许改变其值

5.可变参数(单星参数和双星参数)

在声明函数时,通过 带星的参数 ,如 *param1 ,允许向函数传递 可变数量的实参
 调用函数时,从那一点后所有的参数被收集为一个 元组
在声明函数时,也可以通过 带双星的参数 ,如 **param2 ,允许向函数传递 可变数量的实参
 调用函数时,从那一点后所有的参数被收集为一个 字典
带星或双星的参数 必须位于形参列表的最后位置

例子:

def my_function(*args, **kwargs):  
    print("单星参数:", args)  # 输出为一个元组  
    print("双星参数:", kwargs)  # 输出为一个字典  
  
# 调用函数  
my_function(1, 2, 3, name="Alice", age=30)

输出:

单星参数: (1, 2, 3)  #元组形式

双星参数: {'name': 'Alice', 'age': 30} #字典形式:key:value

6.循环结构

1)可迭代对象(iterable)

可迭代对象:一次返回一个元素,适合于循环

2)range对象

range(start, stop[, step])

从start开始,到stop结束(不包含stop)。如果指定了可选的步长step,则序列按步长增长

3)九九乘法表

注意:

str.format("{0:1}*{1:1}={2:<2} ", i, j, i * j)

这里有几个关键点:

  1. {0}{1}{2}:这些是占位符,用于插入参数到字符串中。数字 012 分别对应传递给 format 方法的参数列表中的第一个、第二个和第三个参数。

  2. :1:这是一个格式说明符,它指定了字段的最小宽度为1个字符。如果字段的值少于这个宽度,它不会进行任何填充(因为这里没有指定填充字符)。在这个例子中,它确保 i 和 j 至少占用一个字符的宽度。

  3. :<2:这又是另一个格式说明符。< 表示左对齐,2 表示字段的最小宽度为2个字符。如果字段的值少于这个宽度,它会在右侧(因为是对齐到左侧)用空格填充。在这个例子中,它确保 i * j 的结果和等号 = 至少占用两个字符的宽度,并且等号总是靠左对齐。

7.内置数据类型

  • 数值数据类型:int、bool、float、complex
  • 序列数据类型:不可变(str、tuple、bytes)和可变(list、bytearray)
  • 集合数据类型:set、frozenset
  • 字典数据类型:dict。例如:{1: "one", 2: "two"}
1)数值类型
① int

>>> int(), int(123), int('456'), int(1.23)  #输出:(0, 123, 456, 1)
>>> int('FF', 16), int('100', 2)                 #输出:(255, 4)
② float

③ complex
>>> c = complex(4, 5)
>>> c                              #输出:(4+5j)

属性/方法

说明

示例

real

复数的实部

>>> (1+2j).real                #结果:1.0

imag

复数的

>>> (1+2j).imag              #结果:2.0

conjugate()

共轭复数

>>> (1+2j).conjugate()   #结果:(1-2j)

2)算术运算符 

3)位运算符

4)数制转换函数

5)random模块

8.Python序列数据

  • 数组:将数据存储在一个或多个数组中,通过索引下标访问并处理数组的元素
  • 序列数据类型:元组(tuple)、列表(list)、字符串(str)和字节数据(bytes和bytearray)
1)元组也称之为定值表,用于存储值固定不变的值表

2)列表也称之为表,用于存储其值可变的表

3)字符串是包括若干字符的序列数据,支持序列数据的基本操作

4)字节序列数据是包括若干字节的序列

5)序列的索引访问操作

6)序列的切片操作

s [ i : j ] 表示取下标 [ i , j )的数

s [ : ] 表示取所有的数

s [ : j ] 表示取前 j 的数

s [ :: j ] 表示输出所有间隔 j 的数

s [ :: -1 ] 表示反转

del s[3] 表示删除下标为3的数

7)list对象的方法

假设表中的示例基于 a = [1,3,2]

8)tuple对象创建元组

9)str数据类型(字符串)

Python中没有独立的字符数据类型,字符即长度为1的字符串

Python内置数据类型str,用于字符串处理

  • str对象的值为字符系列
  • str对象(字符串)是不可变对象
  • 使用单引号或双引号括起来的内容,是字符串字面量
10)字节序列 
  • 字节序列(bytes和bytearray)是由8位字节数据组成的序列数据类型,即0<=x<256的整数序列
  • Python内置的字节序列数据类型包括:bytes(不可变对象)、bytearray(可变对象)和memoryview
11)字典(映射) 
  • 字典(dict,或映射map)是一组键/值对的数据结构。每个键对应于一个值。
  • 在字典中,键不能重复。根据键可以查询到值
  • 字典的键只能使用不可变的对象,但字典的值可以使用不可变或可变的对象

9.输入输出和文件

1)命令行参数 
  • 通过列表sys.argv访问命令行参数
  • argv[0]为Python脚本名,argv[1]为第1个参数,argv[2]为第2个参数
2)标准输入和标准输出函数
  • input函数的格式:input()
  • print函数的格式

3)文件和文件对象

  • 通过内置函数open创建或打开文件对象
  • 通过文件对象的实例方法write/writelines,可以写入字符串到文本文件
  • 通过文件对象的实例方法read/readline,可以读取文本文件的内容
  • 文件读写完成后,应该使用close方法关闭文件
4)with语句
  • 实现上下文管理协议的对象
  • 文件对象支持使用with语句,确保打开的文件自动关闭 
5)文本文件的写入和读取

6)二进制文件的读取和写入

7)CSV文件格式的读取和写入

import csv
def writecsv1(csvfilepath): #使用writer对象将数据写入csv文件
    headers = ['学号', '姓名', '性别', '班级', '数据库应用课程设计', '移动互联网应用开发实践', '计算机组成原理', '科技金融概论', '多媒体技术', '人工智能基础及应用']
    rows = [('1111111', '张三', '男', '软件工程', '88', '90', '97', '84', '90', '89'),
            ('1111112', '李四', '男', '软件工程, '88', '90', '97', '84', '90', '89'),
           ('1111113', '王五', '男', '软件工程', '88', '90', '97', '84', '90', '89'),
           ('1111114', '李明', '男', '软件工程', '88', '90', '97', '84', '90', '89'),
           ('1111115', '小亮', '男', '软件工程', '88', '90', '97', '84', '90', '89'),
           ('1111116', '丽丽', '女', '软件工程', '88', '90', '97', '84', '90', '89'),]
    with open(csvfilepath,'w', newline='') as f:  #打开文件
        f_csv = csv.writer(f)       #创建csv.writer对象
        f_csv.writerow(headers)    #写入1行(标题)
        f_csv.writerows(rows)     #写入多行(数据)
def readcsv1(csvfilepath): #使用reader对象读取csv文件数据
    with open(csvfilepath,'r' ,newline='') as f:  #打开文件
        f_csv = csv.reader(f)    #创建csv.reader对象
        headers = next(f_csv)   #标题
        print(headers)         #打印标题(列表)
        for row in f_csv:      #循环打印各行(列表)
            print(row)

csvfilepath = './data/course.csv' #csv文件存放路径
writecsv1(csvfilepath) #调用写入函数
readcsv1(csvfilepath) #调用读取函数

 10.程序的错误

1)语法错误

语法错误是指其源代码中拼写语法错误,这些错误导致Python编译器无法把Python源代码转换为字节码,故也称之为编译错误

2)运行时错误

运行时错误是在:

  • 程序中没有导入相关的模块(例如,import random)时,解释器将在运行时抛出NameError错误信息
  • 程序中包括零除运算,解释器将在运行时抛出ZeroDivisionError错误信息
  • 程序中试图打开不存在的文件,解释器将在运行时抛出FileNotFoundError错误信息
3)逻辑错误

逻辑错误是程序可以执行(程序运行本身不报错),但执行结果不正确。对于逻辑错误,Python解释器无能为力,需要读者根据结果来调试判断

4)异常处理
  • 通过try语句来定义代码块,以运行可能抛出异常的代码;
  • 通过except语句,可以捕获特定的异常并执行相应的处理;
  • 通过finally语句,可以保证即使产生异常(处理失败),也可以在事后清理资源等

 

  • finally块 始终在执行完 try和except块 之后执行,而与是否引发异常或者是否找到与异常类型匹配的except块无关
  • finally块用于清理在try块中执行的操作,如释放其占有的资源(如文件流、数据库连接和图形句柄),而不用等待由运行库中的垃圾回收器来完成对象

11.Python函数分类 

(1)内置函数。Python语言内置了若干常用的函数,例如abs()、len()等等,在程序中可以直接使用

(2)标准库函数。Python语言安装程序同时会安装若干标准库,例如math、random等等。通过import语句,可以导入标准库,然后使用其中定义的函数

(3)第三方库函数。Python社区提供了许多其他高质量的库,如Python图像库等等。下载安装这些库后,通过import语句,可以导入库,然后使用其中定义的函数

(4)用户自定义函数。本章将详细讨论函数的定义和调用方法

1)Lamda表达式/匿名函数

Lambda是一种简便的、在同一行中定义函数的方法。lambda实际上生成一个函数对象,即匿名函数

2)位置参数和命名参数 
  • 函数调用时,实参默认按位置顺序传递形参。按位置传递的参数称之为位置参数
  • 函数调用时,也可以通过名称(关键字)指定传入的参数,例如:my_max1(a=1, b=2); my_max1(b=2, a=1)
  • 按名称指定传入的参数称为命名参数,也称之为关键字参数
  • 使用关键字参数具有三个优点:
    • 参数按名称意义明确;
    • 传递的参数与顺序无关;
    • 如果有多个可选参数,则可以选择指定某个参数值
  • 带星号的参数后面声明的参数强制为命名参数,如果这些参数没有默认值,且调用时必须使用命名参数赋值,则会引发错误
  • 如果不需要带星号的参数,只需要强制命名参数,则可以简单地使用一个星号,如def total(initial=5, *, vegetables)
3)可变参数(单星参数和双星参数)

在声明函数时,通过 带星的参数 ,如 *param1 ,允许向函数传递 可变数量的实参
 调用函数时,从那一点后所有的参数被收集为一个 元组
在声明函数时,也可以通过 带双星的参数 ,如 **param2 ,允许向函数传递 可变数量的实参
 调用函数时,从那一点后所有的参数被收集为一个 字典
带星或双星的参数 必须位于形参列表的最后位置

例子:

def my_function(*args, **kwargs):  
    print("单星参数:", args)  # 输出为一个元组  
    print("双星参数:", kwargs)  # 输出为一个字典  
  
# 调用函数  
my_function(1, 2, 3, name="Alice", age=30)

输出:

单星参数: (1, 2, 3)  #元组形式

双星参数: {'name': 'Alice', 'age': 30} #字典形式:key:value

12.类和对象

 1)类、对象

2)属性
  • 通过 self.变量名 定义的属性

  • 类属性:类本身的变量

  • 私有属性和公有属性

两个下划线开头,但是不以两个下划线结束的属性是私有的(private),其他为公共的(public)

  • @property装饰器 

 

3)静态方法(@staticmethod)
  • 声明属于与类的对象实例无关的方法
  • 静态方法不对特定实例进行操作,在静态方法中访问对象实例会导致错误
  • 静态方法通过装饰器@staticmethod来定义
  • 静态方法一般通过类名来访问,也可以通过对象实例来调用
4)类方法(@classmethod)
  • 允许声明属于类本身的方法,即类方法
  • 类方法不对特定实例进行操作,在类方法中访问对象实例属性会导致错误
  • 类方法通过装饰器@classmethod来定义,第一个形式参数必须为类对象本身,通常为cls 
  • 类方法一般通过类名来访问,也可通过对象实例来调用
5)__init__方法(构造函数)

__init__方法即构造函数(构造方法),用于执行类的实例的初始化工作。创建完对象后调用,初始化当前对象的实例,无返回值

6)__new__方法

__new__方法是一个类方法,创建对象时调用,返回当前对象的一个实例,一般无需重载该方法

7)__del__方法(析构函数) 
  • __del__方法即析构函数(析构方法),用于实现销毁类的实例所需的操作,如释放对象占用的非托管资源(例如:打开的文件、网络连接等)
  • 默认情况下,当对象不再被使用时,__del__方法运行,由于Python解释器实现自动垃圾回收,即无法保证这个方法究竟在什么时候运行
  • 通过del语句,可以强制销毁一个对象实例,从而保证调用对象实例的__del__方法

8)私有方法与公有方法 
  • 两个下划线开头,但不以两个下划线结束的方法是私有的(private),其他为公共的(public)
  • 以双下划线开始和结束的方法是Python的专有特殊方法。不能直接访问私有方法,但可以在其他方法中访问

9)继承

13.模块化编程

1)概念
  • 如果程序中包含多个可以复用的函数或类,则通常把相关的函数和类分组包含在单独的模块(module)中。这些提供计算功能的模块称之为模块(或函数模块),导入并使用这些模块的程序,则称之为客户端程序
  • 把计算任务分离成不同模块的程序设计方法,称之为模块化编程(modular programming)。使用模块,可以将计算任务分解为大小合理的子任务,并实现代码的重用功能
2)模块的API 

模块和客户端之间遵循的契约称之为API((Application Programming Interface,应用程序编程接口)

API用于描述模块中提供的函数的功能和调用方法

  • 18
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python笔记.md 是一个用于记录Python编程相关内容的markdown文档。 在Python学习过程中,学习者通常会遇到各种问题和疑惑,需要有一个地方来记录学习笔记和重要概念,以方便日后复习和查阅。Python笔记.md 就是一个很好的选择。 Python笔记.md 可以按照自己的需要来组织内容,比如可以分为不同的章节或主题,并使用markdown语法来格式化文档,使其更加清晰易读。 在Python笔记.md中,可以记录Python的基础语法、常用数据结构、函数、类、模块等内容。此外,还可以记录一些常见的错误和解决方法,以便日后遇到类似问题时能够快速找到解决方案。 Python笔记.md 还可以用来记录自己的思考和理解。在学习过程中,我们常常会思考某个概念或代码背后的原理,这时候可以将自己的思考记录在笔记中,以便后续复习和回顾。 使用Python笔记.md 还可以方便与他人分享学习心得。可以在文档中加入注释或标题,使得文档更加易读和友好。同时,也可以将Python笔记.md 推送到版本控制系统中,与他人共享和共同编辑。 总之,Python笔记.md 是一个非常有用的工具,可以帮助学习者系统地记录、整理和复习Python编程相关的知识和经验。无论是初学者还是有经验的开发者,都可以从中受益,并提高自己的编程技能。 ### 回答2: Python笔记.md是一个使用Markdown语法编写的Python笔记文档。Markdown语法是一种轻量级的标记语言,可以快速地编辑和排版文档。 在Python笔记.md中,可以记录Python程序设计的相关知识、概念和技巧。通过使用Markdown语法,可以方便地插入代码块、链接、图片以及其他强调和排版格式,使得笔记更加直观和易读。 Python笔记.md可以按照不同的章节和主题组织内容,方便快速查找和阅读。在每个章节中,可以记录不同的Python编程概念,如数据类型、控制结构、函数、类等。可以通过示例代码和解释说明来详细解释这些概念的用法和特点。 在笔记中,还可以记录一些Python的常见问题和解决方案,例如常见错误、调试技巧等。这些内容可以帮助初学者更好地理解和掌握Python语言。 此外,Python笔记.md还可以连接到其他的Python资源,如官方文档、教程、在线代码编辑器等。这样可以提供更多的学习和参考资料。 总之,Python笔记.md是一个有条理、易读和方便编辑的Python学习笔记文档,可以帮助人们更好地学习和理解Python编程语言。 ### 回答3: Python笔记md是一种用来记录Python编程语言相关内容的文本文件格式。它使用Markdown语法来快速、简洁地编写和格式化笔记Python笔记md的优点是: 1. 简单易懂:Markdown语法简洁明了,使用起来非常简单,即便没有编程背景的人也能快速上手。 2. 跨平台兼容:无论是在Windows、Mac还是Linux系统中,Python笔记md都可以轻松使用。 3. 可读性强:Python笔记md的文本格式使得代码和说明可以同时显示,方便读者理解和学习。 4. 方便分享和发布:Python笔记md可以导出为HTML或PDF格式,方便分享给其他人或者发布到网络上。 5. 与开发工具兼容:大多数集成开发环境(IDE)和文本编辑器都支持Markdown语法,可以实时预览和编辑笔记。 使用Python笔记md可以帮助程序员记录代码和相关的解释和说明,方便复习和查看。它还可以用于编写技术博客、文档和教育材料等。而且由于其文本格式的特点,Python笔记md也非常适合使用版本控制系统进行版本管理。 总而言之,Python笔记md是一种简单、灵活且易于分享的笔记格式,可以有效提高编程学习和开发的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值