个人用Python复习笔记(待补充)

文章目录

一、概述

Python是解释性面向编程 语言,主要有两个版本:Python2Python3 。(Python3设计时没有考虑向下兼容!

命令行形式执行py文件:python xxx.py

二、基础语法

Python3中,一切皆为对象 ,拥有三个属性:
标识:id(变量名)
类型:type(变量名)
值:print(变量名)

Python是动态类型语言,变量不需要显式声明数据类型 !(会根据赋值自动确定其类型)

自动垃圾回收机制 ,不被引用的变量会被回收,也可以用del()删除
==判断两个变量指向的对象值是否相同
is 判断两个变量指向的对象是否相同
不可变对象 创建后不可修改值,如int,str,complex等
(注:是对象不可变,不是变量不可变!)

标识符

第一个字母必须是字母/下划线 ,其他的可以是字母/下划线/数字区分大小写!

双下划线开始与结束 的名称通常有特殊含义,尽量避免使用,如__init__,也不要用预定义的标识符/关键字 ,如int,str等)

标识符命名规则:

1.模块/包:全小写+下划线

2.函数名:全小写+下划线

3.变量名:全小写+下划线

4.类名:大写驼峰

5.常量:全大写+下划线

(python其实不支持常量,因此只用后续不修改值的变量当做常量。)

变量

python支持对变量链式赋值系列解包赋值

python 复制代码
x=y=123 # 表示x=123,y=123
x,y=1,2 # 表示x=1,y=2

python的整除是//,普通除法是/

运算符及其优先级序


简单语句&复杂语句

python语句分为简单语句和复杂语句

复杂语句:循环(for/while)、判断(if)、try、with、函数/类的定义

空语句pass,什么都不执行

注释:以**#**开头,一整行

自定义函数

自定义函数:

python 复制代码
def 函数名(参数表):

函数内置函数:

dir():函数内的所有属性与方法

type():<class '__ main __.函数名'>

id():标识符

help():

len():对象长度/个数

类和对象

python 复制代码
class XXX:
    def yyy(self):

模块导入

import XXX:可以调用XXX.YY()方法
from XXX import YY:可以调用YY()方法

if语句

在python中 if语句中最外面的括号不是必须的

python 复制代码
if(x>0):
if x>0:# 二者是一样的

循环语句

breakcontinue来中断或跳过循环。

可迭代对象(适用于循环的)

序列(如字符串),列表,元组,字典,文件对象,迭代器(iterator),生成器函数(generator)。

for语句

python 复制代码
for 变量 in range(begin,end,step) #(范围是 [begin,end) !step可不写,默认为1)

while语句

python 复制代码
while(条件表达式):

enumrate函数

用于在循环中用下标访问元素

python 复制代码
for index,value in enumerate(array,start=0):# start表示起始位置,默认从0开始
    print(index,value)

zip函数

用于将多个可迭代的对象打包成一个个元组

python 复制代码
x=[1,2,3]
y=[4,5,6]
list(zip(x,y)) # 输出[(1,4),(2,5),(3,6)]
for i,j in zip(x,y):
    print(i,j)

map函数

将某个操作作用于可迭代对象中的所有元素(即对内部元素批处理某个操作

python 复制代码
list(map(abs,[-1,0,7,8]))# 输出[1,0,7,8]
list(map(pow,range(5),range(5)))# 表示0**0,1**1,...4**4,输出[1,1,4,27,256]

三、内置数据类型

数值:int,bool,float,complexpython没有double

序列:不可变(str,tuple ,bytes)、可变(list,bytearray)

集合:set,frozenset

字典:dict({1:"xxx",2:"yyy"})
NoneType

int对象

python 复制代码
int(x,base=10)# 默认进制是10
int('100',2)# 即十进制下的4

float对象

python 复制代码
float('Infinity'),float('-Infinity'),float('3.14'),float('NaN')
# 支持定义inf,-inf,NaN

as_integer_ratio():转化为分数

hex():化为十六进制串

float.fromhex(str):十六进制串化为浮点数

is_integer():是否是整数

complex对象

部分运算需要

python 复制代码
import cmath # 部分运算需要cmath
x=complex(a,b)# 定义一个复数(a+bj)
x.real()# 实部
x.imag()# 虚部
x.conjugate()# 共轭虚数

bool对象

python 复制代码
bool(0) # false
bool(1) # true
bool('xxx') # 非空串会被转化为true,否则为false

str对象

python中没有独立的字符对象(即没有char ),将字符视为长度为1的字符串
不可变对象

python 复制代码
# 单引号'111'
# 双引号"123"
# 三单引号'''123'''(可以跨行)
# 三双引号"""123"""(可以跨行)
str(123) # '123'
str(True) # 'True'
str(3.14) # '3.14'
str(sample,encoding='utf-8',)

Python3字符默认为16为unicode编码,可以用**ord()进行转化(ascii字符会被转化为ascii编码),用chr()**可以把对应的编码转化为字符。

转义字符

字符串格式化(兼容Python2的用法)

python 复制代码
"{0},{1}".format(51,81.2)
str.format("{0},{1}",15,81.2)
format(81.2,"0.5f") # 81.20000
"%d%.2f"%(15,81.2)

bytes对象

byte与bytearray不接受字符串参数,只接受bytes和bytearray参数。

操作与字符串类似。

bytearray对象

类型混合运算与数字转换

int,float,complex可以混合运算,也可以强制转换

内置数学函数


四、序列数据

内置序列数据:tuple,list,str,bytes,bytearray

python 复制代码
x=(1,2,3)# 元组,数据不可变
x=[1,2,3]# 列表
x="123"# 字符串
x="x22"
x.encode("utf-8")

序列数据基本操作

len():序列长度

min()/max():序列最大/最小值

sum():序列中元素之和(字符串不可以用sum

all():如果全体数值为True则为True

any():如果存在数值为True则为True

序列切片

start: end :step\]:表示\*\*\[start,end)**区间的子序列,**step默认为1**,step为-1时表示** 倒序\*\* 当end为空时**默认为末尾** ,表示从start开始**向后取** 当start为空时**默认为开头** ,表示从end开始**向前取** 当start/end为负数时,表示**倒着取下标**。 ```python s='abcdef' s[1:3]# 从下标为1开始,到3为止(不包括3),即'bc' s[3:10]# 同上,为'def' s[8:2]# 同上,为'' s[:]# 全选,即'abcdef' s[:2]# 从下标2开始倒着取(不包括2),即'ab' s[::2]# 全体中两个两个取,即'ace' s[::-1]# 全体倒着取,即'fedcba' ``` ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a063d49fc30e4fdea74a8da9dc0ff593.png) ### 序列连接\&序列重复 **用"+"号和"\*"号**。 ```python s1='abc' s2='xyz' s1+s2 # 'abcxyz' s1*3 #'abcabcabc' s2*=2 #'xyzxyz' ``` ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/01d9e9624ce346dab0c3951b919d5260.png) #### 序列成员操作 ```python s='good' 'o' in s# 是否在序列中出现,为True s.count('o')# 统计出现次数,为2 s.index('d')# 字符在序列中第一次出现的下标,为3 ``` ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5d000b25872e446ea95239d74de75582.png) #### 序列比较 **逐个字符比较,其次短的比长的小。** ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c27557bef3fc405e807d3f2c065358d3.png) #### 序列排序 ```python sorted(s1,reverse=True,key=str.lower)# 是否翻转序列,是否降序排序 ``` #### 序列拆分 ```python first,*middle,last=range(10) # 第一个和最后一个是变量,中间的是元组变量,值为[1,2,3,4,5,6,7,8] ``` ### 元组基本操作 ```python tuple(iterable) ``` ### 列表基本操作 ```python list(iterable) s[i]=xxx# 设置下标的元素 del s[i]/s[i:j]# 删除第i/[i:j]个,后面的向前覆盖 [表达式 for i in range(10)]# 创建10个元素构造的数组(常用于构建一维数组) [i**2 for i in range(5)]# [0,1,4,9,16] ``` ## 五、输入输出 ### 访问命令行参数 #### sys.argv sys.argv\[0\]表示Python脚本名 sys.argv\[1\]表示第一个参数,sys.argv\[2\]表示第二个参数,以此类推。 #### argparse 解析命令行参数并转化 ```python # 假设输入python xxx.py --length 5 --width 3 import argparse parser=argparse.ArgumentParser() parser.add_argument('--length',default=10,type=int,help='长度') parser.add_argument('--width',default=10,type=int,help='宽度') args=parser.parse_args() args.length,args.width # 从参数中获取的属性,分别是5和3 ``` ### 输入输出 ```python input() print(value,sep=' ',end='\n',file=sys.stdout,flush=False) # sep表示分隔符,end表示换行符,file表示写入的文件流,默认为控制台sys.stdout,flush表示是否强制写入流 ``` #### 密码式输入 ```python import getpass passwd=getpass.getpass("请输入密码") ``` ## 六、文件操作 ### 文件基本操作 ```python f=open(file,mode='r',buffering=-1,encoding=None) # mode:r只读,w写入(会清空之前内容),x创建新文件, # a(末尾追加),b(二进制文件),t(文本文件,默认值),+(可读写) while(f.readline()):# 逐行读取 xxx f.close() ``` ```python with open(file,mode='r',buffering=-1,encoding=None) as f: while(f.readline()): xxx f.close() ``` ### 文件流 **输入流:sys.stdin 输出流:sys.stdout 错误流:sys.stderr** #### 重定向 ```python f=open('test.log','w') sys.stdout=f# 将标准输出流重定向到文件test.log内 print(xxxx) ``` 命令行重定向: ```python python xxx.py > test.out python xxx.py < test.in ``` ### 管道 **将一个程序的输出作为下一个程序的输入** ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9fb334918fa04fdd9b4317afa3fb2976.png) ### 过滤器 **将某种输入流转化为输出流** ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/79d44d6c877c4dad89113050d4bc38d1.png)

相关推荐
不想写bug呀1 小时前
多线程案例——单例模式
java·开发语言·单例模式
我不会写代码njdjnssj2 小时前
网络编程 TCP UDP
java·开发语言·jvm
费弗里2 小时前
Python全栈应用开发利器Dash 3.x新版本介绍(1)
python·dash
李少兄9 天前
解决OSS存储桶未创建导致的XML错误
xml·开发语言·python
阿蒙Amon9 天前
《C#图解教程 第5版》深度推荐
开发语言·c#
就叫飞六吧9 天前
基于keepalived、vip实现高可用nginx (centos)
python·nginx·centos
Vertira9 天前
PyTorch中的permute, transpose, view, reshape和flatten函数详解(已解决)
人工智能·pytorch·python
学Linux的语莫9 天前
python基础语法
开发语言·python
匿名的魔术师9 天前
实验问题记录:PyTorch Tensor 也会出现 a = b 赋值后,修改 a 会影响 b 的情况
人工智能·pytorch·python
Ven%9 天前
PyTorch 张量(Tensors)全面指南:从基础到实战
人工智能·pytorch·python