Giter Site home page Giter Site logo

python_study_code's Introduction

python_study_code

看漫画学python笔记和代码

1、基础

1.1、标识符

标识符就是变量、函数、属性、类、模块等可以由程序员指定名称的代码元素

python里的标识符遵循一定的命名规则 1.区分大小写 2.首字母可以是下划线和字母,不能是数字 3.除首字符外的其他字符必须是下划线、字母和数字 4.关键字不能作为标识符 5.不使用Python的内置函数作为自己的标识符

1.2、关键字

关键字由语言本身定义好的有特殊含义的代码元素 python中有33个关键字 其中False、True、None首字母大写,其他关键字首字母小写

image-20230110153913477

1.3、变量

python和go声明变量的不同在于: python给变量赋值的同时就声明了该变量,该变量的数据类型就是赋值数据所属的数据类型 python 是动态语言,所以即使一个变量已经赋值过,依然可以接受其他类型的数据

1.4、语句

python代码由关键字、标识符、表达式和语句等构成,语句是代码的重要组成部分 python中一行代码表示一条语句,一般语句结束的时候是不加分号的,当然也可以加分号 go语句结束的时候也是不加分号的,当然也可以加,加了在保存代码的时候也会被格式化去掉

1.5、注释

python 注释 使用 # go/java 注释使用 // /**/ 分别代表单行和多行注释 将 #coding=utf-8 放在第一行和第二行可以告诉python解释器该文件的编码集使用的是UTF-8,避免中文等文字乱码

1.6、模块

python中一个模块代表一个文件,模块是保存代码的最小单位 模块类似于go的package用来管理代码 一个模块可以导入另一个模块

1.7、运行python程序

使用python 命令运行 例如:python hello.py

2、数字类型

2.1、python中的数据类型

python中的所有数据类型都是类,每个数据值都是类的实例 python中有六种内置数据类型: 数字、字符串、列表、元组、集合和字典。 其中列表、元组、集合、字典可以容纳多项数据。 python中的数字类型有四种: 整数类型、浮点类型、复数类型和布尔类型。

2.2、整数类型

python中整数类型为int类,整数类型的范围可以很大,表示很大的数,只受计算机硬件的限制

2.3、浮点类型

浮点类型主要用来存储小数数值,python的浮点类型为float,python只支持双精度浮点类型,而且与本机相关

3.3、复数类型

整数、浮点数都是实数,与实数相对的是复数:a+bi,其中a为实部,b为虚部,i为虚数单位。

3.4、布尔类型

在python中布尔类型也是数字类型 是int类型的子类,只有两个值:True和False(这里注意这两个值是大写的)

bool(0) #整数0被转换成false
# 非零整数比如2会被转换成true
# 空字符串被转换为false
# 非空字符串转换成true
# 空列表和空字典都被转换成false

3.5、数字类型的相互转换

转换主要分为隐式转换和显示转换 隐式转换: 布尔型和整数计算会转换成整数 布尔整数和浮点数计算会被转换成浮点数

4、运算符

4.1、算术运算符

这里和别的语言有些区别的: a**b 求a的b次幂 a//b 求小于a与b的商的最大整数

4.2、比较运算符

比较运算符用来表达两个数据的大小,结果是布尔类型 值为True或者False 比较运算符能进行任何类型数据的比较,但是需要注意的是,比较运算符比较的数据需要相互兼容,也就是可以进行隐式转换的数据

4.3、逻辑运算符

逻辑运算符用于对布尔型变量进行运算,其结果也是布尔型

4.4、位运算符

位运算是以二进制为单位进行运算的,操作数和结果都是整数类型的数据

image-20230111203412384 这里要注意的是位或运算,只要有一位为1,就为1,否则为0 位与运算,只有两位全部为1,这一位才为1,否则为0 按位异或,两位相反为1,否则为0 还有按位取反操作,有这样一个公式: ~a=(a+1)x-1

4.5、赋值运算符

image-20230111204256991

4.6、运算符的优先级

image-20230111204744927

5、流程控制

5.1、分支语句

5.1.1、if条件语句

if语句的结构为: if 条件 :(以英文冒号结尾) (前面为缩进)语句组

5.1.2、if-else语句

if-else 语句的语法结构为: if 条件: 语句组 else: 语句组

5.1.3、if-elif-else语句

结构: if 条件1: 语句组1 elif 条件2: 语句组2 elif 条件3: 语句组3: else: 语句组4:

5.2、循环语句

python支持两种循环语句: while和for

5.2.1、while

while 语句 先判断循环条件,再执行循环体 while 条件为true 则执行 while 后面可以加 else 可以使用 break 跳出循环

5.2.2、for循环

python中只有for-in 语句 可以遍历任意的可迭代对象中的元素 for语句的一般格式: for 变量 in 可迭代对象: 循环语句组 else : 语句组

5.3、跳转语句

跳转语句能够改变程序的执行顺序 包括 break,continue和ruturn break 可以强行退出循环体,不再执行后面的语句 continue 跳过本次循环,执行下次循环 return 程序结束 后面的都不执行了

6、容器类型的数据

python内置的数据类型 如列表、元组、集合和字典等可以容纳多项数据,可以称为容器类型的数据

6.1、序列

序列时一种可迭代的、元素有序的容器类型的数据 序列包括列表、字符串、元组和字节序列

6.1.1、序列的索引操作

序列中的元素都是有序的,每个元素都带有序号,这个序号叫作索引。索引有正值索引和负值索引之分 比如 :Hello 第一个字母 H 索引下标为0 这是正向索引,负值索引从最后一个往前数 比如 o 索引为-1

6.1.2、加和乘操作

加(+) 和乘(*) 操作也可以用于序列中的元素操作。加运算符可以将两个序列连接起来,乘操作可以将两个序列重复多次

6.1.3、切片操作

序列的切片就是从序列中切分出小的子序列 切片运算符的语法形式为[start: end: step] 其中,start是开始索引,end是结束索引,step是步长 所谓的步长是切片时获取的元素间隔,可以为正整数,也可以为负整数 这里需要注意的是,切下的小切片包含开始位置,不包含结束位置 为左闭右开区间

6.1.4、成员测试

成员测试运算符有两个: in 和 not in in 用于测试是否包含某一个元素,not in用于测是否不包含某一个元素

6.2、列表

变量可以存储一个元素,列表是一个大的容器,可以存储N多个元素,程序可以方便的对这些数据进行整体的操作 python里的列表相当于其他语言的数组,但是它可以存储不同的类型的元素 变量存储的是一个对象的引用,列表存储的是多个变量的引用 列表是一种可变序列类型,可以追加、插入、删除和替换列表中的元素。 列表的特点: 列表元素按顺序有序排序 索引映射唯一一个数据 索引可以是正值索引,也可以是负值索引 列表可以存储重复的数据 任意数据类型可以混存 根据需要动态的分配或者回收内存

6.2.1、创建列表

方法1: list 函数:参数是可迭代的对象(字符串、列表、元组、集合和字典等) 方法2: [元素1,元素2,元素3,。。。]:指定具体的列表元素之间逗号分隔,列表元素需要中括号括起来 列表中的元素存储在连续的地址空间里,每个元素存储着值对象的引用,列表本身也是一个对象,由id,type,vaule组成,一个列表对象又赋值给一个对象存储,这个对象存储的列表的引用

6.2.2、追加元素

列表是可变的序列对象,列表可以追加元素 在列表中追加单个元素时,可以使用列表的append(x)方法 在列表中追加多个元素时,可以使用加(+)运算符或者列表的extend

6.2.3、插入元素

向列表插入元素,使用list.insert(i,x) i代表索引,x代表插入的值

6.2.4、替换元素

想要替换元素 list[index]=targetData

6.2.5、删除列表元素

列表元素的删除 方法有:remove() 一次删除一个元素,重复元素只删除第一个 删除的元素不存在会报错 pop():删除一个指定索引位置上的元素,指定索引不存在抛出错误 不指定索引会删除列表最后一个元素 切片,一次至少删除一个元素 clear():清空列表 del:删除列表

6.2.5、列表的排序操作

sort()方法

6.2.6、列表生成式

使用for和range可以生成列表

6.3、字典

和列表一样是一个可变序列,以键值对的方式存储数据 字典是一个无序的序列 字典用{}表示,字典当中是用键值对的方式存储数据的 字典:{键:值} 字典是一个无序的序列 一个键放入字典中先经过哈希函数来确定它的位置 放入字典中的键必须是不可变序列 字典根据key查找位置 字典的实现原理:跟查字典的原理是一样的

6.3.1、字典的创建

使用{}来创建字典

6.4.2、元组

元组是不可变序列

元组为什么要设计成不可变序列 在多任务环境下,同时操作对象时不需要加锁 注意事项:元组中存储的是对象的引用 元组本身是不可以修改元素的 但是如果元组中有可变序列,可以修改这个可变对象

6.4.3、集合

集合与列表一样属于不可变类型的序列 集合是没有value的字典

集合的数学操作 交集、并集、差集

7、字符串

字符串是不可变类型 字符串的常用函数,字符串的比较操作 字符串切片,字符串的编解码

8、函数

函数就是执行特定任务和完成特定功能的一段代码 为什么需要函数 主要是起到复用代码,隐藏实现细节,提高代码可可维护性,提高可读性,便于调试

函数的参数传递 形式参数,位置在函数的定义处,实际参数,位置在函数的调用处 函数参数传递: 可变位置参数,位置参数,就是将传递进来的参数赋值给当前位置的变量 可变关键字参数,所谓关键字参数,传参数的时候用,a=, b=,

变量的作用域: 代码能够访问该变量的区域 根据变量的有效范围可分为: 局部变量: 在函数内定义并且使用的变量,只在函数内部有效 局部变量使用global声明一下,就会变成全局变量

全局变量: 函数体外定义的变量,可作用于函数内外

7、bug

常见的bug类型 语法错误 syntxError 索引越界的问题 python 提供异常处理机制 try except

7.1、常见异常类型

1、ZeroDivisionError 除(或取模)零 (所有数据类型) 2、indexError 序列中没有此索引 3、KeyError 映射中没有这个键 4、NameError 未声明/初始化对象(没有属性) 5、SyntaxError python的语法错误 6、ValueError 传入无效的参数

使用traceback.print_exc() 打印异常信息

8、python面向对象

python里一切皆对象

类的创建方式 类是多个类似事物组成的群体的总称 能够帮我么快速理解和判断事物的性质

类属性:类中方法外的变量称为类属性,被该类的所有对象所共享 类方法:使用@classmethod修饰的方法,使用类名直接访问的方法 静态方法:使用staticmethod修饰的方法,使用类名直接访问的方法

python类的深拷贝和浅拷贝问题

9、模块

一个模块可以包含多个函数 一个扩展名为.py的文件就是一个模块 模块的几种导入方式 import 模块名 这种导入方式导入的模块 会包含模块内的所有元素

第二种导入方式 form 模块名 import 元素名 这种导入方式 只使用某个元素

第三种导入方式 form 模块名 import 元素名 as 别名 导入并且起个别名,这种导入方式 适用元素名称冲突的2情况下

使用模块中的内容的时候,使用模块名.元素名

以主程序的形式去运行 每个模块的定义都包含一个记录模块名称的变量__name__,程序可以检查该变量,以确定它们是在哪个模块中执行,如果一个模块不是被导入到其他程序中执行,那么它有可能在解释器的顶级模块中执行。顶级模块的__name__变量的值为__main__

python中的包: 包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下 包与目录的区别: 包含__init__.py文件的目录称为包 目录里通常不包含__init__.py文件 包的导入:import 包名.模块名

python中常用的内置模块 sys 与python解释器及其环境操作相关的标准库 time 提供时间相关的各种函数的标准库 os 提供了访问操作系统服务功能的标准库 calcendar 提供日期相关的各种函数的标准库 urllib 用于读取来自网上(服务器)的数据标准库 json 用于使用JSON 序列化和反序列化操作 re 在字符串中执行正则表达式匹配和替换 math 提供标准算术运算函数的标准库 decimal 用于精确控制运算精度,有效数位和四舍五入操作的十进制运算 logging 提供灵活的记录事件、错误、警告和调试信息等日志信息功能

python 中第三方模块的安装 使用pip install 模块名来安装 导入 import 模块名

10、文件操作

文件读写俗称 I/O操作 I/O操作是一种队列结构,先进先出 使用内置函数open()创建文件对象 映射磁盘上的真实文件 open(filename,[,mode,encoding]) mode 打开文件的格式 encoding 默认的编码格式

10.1、常见的文件打开模式

r 只读打开,文件的指针将放在文件的开头 w 以只写模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖掉原有内容,文件指针在文件的开头 a 以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则在文件末尾 b 以二进制方式打开文件,不能单独使用,需要与其他模式一起使用 rb 或者 wb "+" 以读写方式打开文件,不能单独使用,需要与其他模式一起使用 a+

10.2、文件对象的常用方法

read(size) 从文件中读取size个字节或字符的内容返回,若省略[size] 则读取到文件末尾 readline() 从文本文件中读取一行内容 readlines() 从文本中每一行作为一个单独的字符串对象,并将这些对象放入列表返回 write(str) 将字符串str内容写入文件 writelines(s_list) 将字符串列表写入文件,不添加换行符

seek(offset[,whence]) 把文件移动到新的位置,offset 表示相对于whence的位置,offset: 正数则往结束方向移动,为负数则往开始方向移动 whence不同的值代表不同的含义 0:从文件头开始计算(默认值) 1:从当前位置开始计算 2:从文件尾开始计算

tell() 返回文件指针的当前位置 flush() 把缓冲区的内容写入文件,但是不关闭文件 close() 把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源

10.3、上下文管理器

with语句,上下文管理器 with 语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的

10.4、os模块的一些常用方法

getcwd() 返回当前的工作目录 listdir(path) 返回指定路径下的文件和目录信息 mkdir(path[,mode]) 创建目录 makedirs(path1/path2...[.mode]) 创建多级目录 rmdir(path) 删除目录 removedirs(path1/path2...) 删除多级目录 chdir(path) 将path设置为当前工作目录

10.5、os.path模块操作目录相关函数

abspath(path) 用于获取文件或目录的绝对路径 exists(path) 用于判断文件或目录是否存在 join(path,name) 将目录与目录或者文件名拼接起来 splitext() 分离文件和扩展名 basename(path) 从一个目录中提取文件名 dirname(path) 从一个路径中提取文件路径,不包括文件名 isdir(path) 用于判断是否为路径

11、lambda表达式

lambda函数也叫匿名函数,它直接接收参数的数量以及使用该参数执行的条件或操作,该参数以冒号分隔,并返回最终结果,主要用于在大型代码库中执行一段小任务 lambda argument_list:expersion argument_list是参数列表,它的结构与python中函数的参数列表是一样的

a,b
a=1,b=2
*args
**kwargs
a,b=1,*args

....

expression 是一个关于参数的表达式,表达式中出现的参数需要在 argument_list中有定义,并且表达式只能是单行的

1
None
a+b
sum(a)
1 if a >10 else 0
[i for i in range(10)]

lambda函数有这样一些特点: 1、没有名称 2、lambda函数没有返回值 3、函数在一行编写 4、不能重用代码

12、python socket编程

Python 提供了两种类型的 API 库,可用于socket编程。在底层,Python 利用“ socket ”library为无连接和面向连接的网络协议实现客户端和服务器模块。而在更高级别,您可以使用ftplib和httplib等库 与应用程序级网络协议(如 FTP 和 HTTP)交互。

python socket使用socket库 socket是双向通信链路的端点,端点是IP地址和端口号的组合 对于client-server通信,需要在两端配置socket来发起连接,监听传入的消息,然后在两端发送响应,从而建立双向通信 socket允许位于同一台机器之上的两个进程进行通信,或者是不同的机器或者不同大陆的机器

python_study_code's People

Contributors

hsiaocz avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.