python学习笔记(2.进阶知识)

1.语句

1.判断语句
1.单IF语句
if 条件:
  内容 
else:
  内容
2.多IF语句

None同False

if 条件:
  内容  
elif 条件:
  内容  
......   
else:内容

2.循环语句
1.while语句

只要条件为真,就能一直执行

 
while 条件:
  循环体

2.for语句

待处理集(序列类型)可以是字符串,集合,元组等内容

for 临时变量 in 待处理集: 
    循环体
range(起点(默认为0),终点(不含),步长)
countinue 跳过本次
break 跳出循环

2.函数

1.函数的定义

在Class中定义时叫方法,使用"."调用

局部变量: 函数内的临时变量

全局变量: 函数外的变量

def 函数名(传入参数1,参数2,....):
  """
  文档注释 可以通过鼠标悬停函数查看
  """
  内容
  return 返回值
  # 多返回值 # 接受 变量1,变量2=函数
  # return 返回值1,返回值2

2.多参数
1.位置参数
def 函数名(name, age, gender):
  内容
# 使用
函数('TOM', 20, '男')

2.关键字参数

可以和位置参数混用, 位置参数要在前且匹配位置

 
def 函数名(name, age, gender):
  内容
# 使用
函数(name='TOM', gender= '男', age=20)
函数('TOM', gender= '男', age=20)

3.缺省参数
def 函数名(name, age=20, gender='男'):
  内容
# 使用
函数('TOM')

4.不定长参数(元组--位置传递)

传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递

def 函数名(*args):
   print(args) # 元组
函数(12, 'aaa', ....)

5.不定长参数(字典--关键字传递)

数是“键=值”形式的形式的情况下, 所有的“键=值”都会被kwargs接受, 同时会根据“键=值”组成字典.

def 函数名(**kwargs):
   print(kwargs) #字典
函数(age=12, name='aaa', ....)

3.函数传递

注:是逻辑的传递,而不是数据的传递

定义

def 函数名(函数)

使用

函数(函数名)

4.匿名函数

可用于传递 函数(匿名函数)

lambda 传入参数:函数体(一行)

3.数据容器

1.列表
1.定义

定义

变量=[元素1,元素2.......]

空列表

1.变量=[] 2.变量=list()

元素类型

1.不受限制 2.可以异构,可以嵌套

索引

1.正向(从0开始),反向(从-1开始) 2.嵌套索引,变量[][]

遍历

1.while 需要先统计元素数 2.for 直接使用in

2.使用函数

列表.index(元素)

查找下标

列表[下标]=值

修改指定位置值

列表.insert(下标,元素)

插入元素(指定位置)

列表.append(元素)

追加元素

列表.extend(其他数据容器)

追加多个元素

del 列表[]

删除元素

返回值=列表.pop(下标)

删除元素

列表.remove(元素)

删除匹配的第一个

列表.clear()

清空列表

列表.count(元素)

统计数量

2.元组
1.定义

定义

变量=(元素1,元素2.....)

空元组

1.变量=() 2.变量=tuple()

元素类型

1.不可修改(嵌套其他数据容器后可改其他) 2.可以异构,可以嵌套

遍历

1.while 需要先统计元素数 2.for 直接使用in

2.使用函数

列表.index(元素)

查找下标

列表.count(元素)

统计某种元素的数量

3.集合
1.定义

定义

变量={元素1,元素2.....}

空集合

变量=set()

元素类型

不重复,无序(无下标)

遍历

for 直接使用in

2.使用函数

集合.add(元素)

添加

集合.remove(元素)

移除

变量=集合.pop()

随机取元素,取出后元素消失(因为无序)

集合.clear()

清空

集合3=集合1.difference(集合2)

取差集

集合1.difference_update(集合2)

消除差集,改集合1

集合3=集合1.union(集合2)

合并集合

4.字典
1.定义

定义

变量={key1:value1,key2:value2,......}

空字典

1.字典={} 2.字典=dict{}

元素类型

不重复,无下标

嵌套

key不可为字典,value可为字典

获取嵌套

value=字典[key1][key2]

遍历

1.for 直接使用in 2.for+keys

2.使用函数

字典[key]=vlaue

新增,更新

字典.pop(key)

移除

字典.clear()

清空

列表=字典.keys()

获取全部key

5.字符串(字符的容器)
1.定义

定义

变量=' '

通过\可以解除引号定义作用

拼接

变量+变量

字符串和字符串才行

格式化(占位)

"%d"(变量)

%d int,%s str,%f float

快速格式化

f"内容{变量}内容{变量}"

不关注类型和精度

精度控制

%m.nf

1 m为宽度

2 .n为精度即小数点后n位

3 四舍五入

索引

下标[]

无法修改

字符大小

ASCll码表

1. A-Z 65-90 2. a-z 97-122

2.使用函数

列表.index(元素)

查找下标

变量=字符串.replace(被替换str,替换str)

字符串的替换

列表=字符串.split(分隔符)

分割

字符串.strip()

去除前后空格和换行符

字符串.strip(字符串)

去除前后字符串(后是倒叙)

列表.count(元素)

统计数量

6.通用操作
1.属性

有序

字符串,元组,列表

无序

集合, 字典

有序切片

序列[起始下标:结束下标(不含):步长]

2.函数

遍历

for遍历

len()

元素个数

max()

最大

min()

最小

排序

sorted(容器,reverse=True) T反,F正

set(容器)

转集合

tuple(容器)

转元组

str(容器)

转字符串

list(容器)

转列表

4.文件操作

1.文件编码

计算机中有许多可用编码:UTF-8/GBK/Big5等

UTF-8是目前全球通用的编码格式除非有特殊需求,否则,一律以UTF-8格式进行文件编码即可。

2.文件的读取
1.打开
对象 = open('路径', '打开方式', encoding="UTF-8")
# 打开方式
# r 只读。文件的指针将会放在文件的开头。这是默认模式。
# w 写入。如果该文件已存在则打开文件,从开头开始编辑原有内容
# 删除。文件不存在创建新文件。
# a 追加。如果该文件已存在,新的内容将会被写入到已有内容之后。
# 文件不存在创建新文件。

2.读取
变量 = 对象.read(num)
# num表示字节,读取数量,默认全部
变量 = 对象.readlines()
# readlines可以按照行的方式把整个文件读取,返回的是一个列表,
# 每一行的数据为一个元素。
# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 
# 'ccc']
变量 = 对象.readline()
# 只读第一行
# for
for line in open("python.txt", "r"):
    print(line) # 一行
# 关闭
对象.close()
# 通过在with open的语句块中对文件进行操作
with open("python.txt", "r") as f:
    f.readlines()
# 可以在操作完成后自动关闭close文件,避免遗忘掉close方法

3.写入
# 1. 打开文件
f = open('python.txt', 'w') # 注意写入模式w:重写 a:追加
# 2.文件写入
f.write('hello world')
# 3. 内容刷新
f.flush()
# 当调用flush的时候,内容会真正写入文件
# 这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)

5.异常

1.异常是什么?

异常: 就是程序运行的过程中出现了错误

bug: 就是指异常的意思,因为历史因为小虫子导致计算机失灵的案例,所以延续至今,bug就代表软件出现错误。

2.异常的捕获方法
1.全部异常
try: 
    可能发生错误的代码
except:
    如果出现异常执行的代码

2.指定异常

except Exception : 全部异常

try: #一般try下方只放一行尝试执行的代码。
    print(name)
except NameError as e:
    print('name变量名称未定义错误')
    print(e) # 捕获异常并输出描述信息

3.捕获多个异常
try:
    print(1/0)
except (NameError, ZeroDivisionError):
    print('ZeroDivision错误...')

4.else表示的是如果没有异常要执行的代码。
try:
except Exception as e:
else:
    print('我是else,是没有异常的时候执行的代码')

5.finally表示的是无论是否异常都要执行的代码
try:
except Exception as e:
else:
finally:
    f.close()

3.异常的传递
def f01():
  num = 1/0
def f02():
  f01()
def main():
  try:
    f02()
  except Excetion as e:
    print(e)
main() # main会捕获异常
# 当所有函数都没有捕获异常的时候, 程序就会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值