个人用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'

序列连接&序列重复

用"+"号和"*"号

python 复制代码
s1='abc'
s2='xyz'
s1+s2 # 'abcxyz'
s1*3 #'abcabcabc'
s2*=2 #'xyzxyz'

序列成员操作

python 复制代码
s='good'
'o' in s# 是否在序列中出现,为True
s.count('o')# 统计出现次数,为2
s.index('d')# 字符在序列中第一次出现的下标,为3

序列比较

逐个字符比较,其次短的比长的小。

序列排序

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

管道

将一个程序的输出作为下一个程序的输入

过滤器

将某种输入流转化为输出流

相关推荐
一个会的不多的人9 分钟前
C# Solidworks二次开发:宏录制实战讲解(第二讲)
开发语言·c#
神奇夜光杯19 分钟前
Python酷库之旅-第三方库Pandas(181)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
光明中黑暗19 分钟前
Python 学习笔记
笔记·python·学习
tang138976429 分钟前
Python(包和模块)
开发语言·python
夜雨翦春韭41 分钟前
【代码随想录Day58】图论Part09
java·开发语言·数据结构·算法·leetcode·图论
正义的彬彬侠42 分钟前
绘制近似线性可分支持向量机的分类边界和支持向量
人工智能·python·机器学习·支持向量机·分类·svm
纪怽ぅ1 小时前
LSTM——长短期记忆神经网络
python·深度学习·神经网络·算法·机器学习·lstm
Justinc.1 小时前
Flutter图片控件(七)
开发语言·flutter
yannan201903131 小时前
【算法】(Python)回溯算法
python·算法
心软且酷丶1 小时前
leetcode:面试题 05.07. 配对交换(python3解法)
python·算法·leetcode