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

管道

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

过滤器

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

相关推荐
PieroPc26 分钟前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel
2401_857439693 小时前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
SoraLuna3 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
xlsw_4 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
梧桐树04294 小时前
python常用内建模块:collections
python
Dream_Snowar5 小时前
速通Python 第三节
开发语言·python
高山我梦口香糖5 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
冷眼看人间恩怨6 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
信号处理学渣6 小时前
matlab画图,选择性显示legend标签
开发语言·matlab
红龙创客6 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++