Python语法易混淆

这一篇负责记录学习python基础语法时遇到的一些易混淆点,以及与C++语法不同的表达。

字符串

  • Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:
变量[m:n]
# m为截取开始位置的字符编号
# n为从第一个字符开始数需要截取到第n个字符(包括第n个字符)
'''
str = "abcde"
str[0:3]  输出:abc
str[1:3]  输出:bc
'''

列表List

lt = [];

元组tuple

  • 列表使用方括号[],元组使用圆括号()
  • 元组中只包含一个元素时,需要在元素后面添加逗号 “,”,否则括号会被当作运算符使用。
tup = (50,)
  • 元组内部元素不能修改,列表内部元素可以修改
  • 元组不可变指的是元组所指向的内存中的内容不可变。
tup = (1,2,3)
print(id(tup)) # 输出1442507590592
tup = ('a','b','c')
print(id(tup)) # 输出1442507590784
# 从以上实例可以看出,重新赋值的tup,被绑定到新的对象了,而不是说修改了原来的对象

字典dict

  • 字典创建方式:
d = {key1:val1, key2:val2}
emptyd1 = {} # 创建空字典
emptyd2 = dict() #内置dict()函数也可创建空字典
  • 字典value可以是任何python对象,包括用户定义的
  • key必须不可变,所以可以用数字,字符串或者元组充当,但是列表不行,因为列表可变
  • 同一个key只能出现一次,如果同一个key被赋值两次,那么只记住后一个值

集合set

  • 集合set是一个无序不重复元素序列
st1 = {val1,val2,val3}
st2 = set(val)
  • 创建一个空集合必须有set()而不是{},因为{}是创建一个空字典

循环语句

while循环使用else语句

当while后面的condition为FALSE时,执行else里面的additional_statement。

while (condition):statement
else:additional_statement

循环中的else语句

循环语句中可以有else子句,它在for循环穷尽 或 while循环为FALSE时 ,导致循环终止时,执行else语句。但当循环被break终止时不执行else。

range()函数

如果需要遍历数字序列,可以使用内置range()函数生成数列。

for i in range(3):print(i)
'''
输出:
0
1
2
'''#也可以使用range指定区间的值
for i in range(1,3):print(i)
'''
输出:
1
2
'''# 使用range指定数字和不同的步长
for i in range(0,10,3)print(i)
'''
输出:
0
3
6
9
'''# 使用rang()和len()遍历一个序列的索引
l = ['a','b','c','d']
for i in range(len(l)):print(i,l[i])
'''
输出:
0 a
1 b
2 c
3 d
''' 

迭代器

  • 迭代器有两个基本方法:iter()和next()
  • 迭代器对象可以使用for进行遍历
lt = [1,2,3,4]
it = iter(lt)
for i in it:print(i,end = " ")
# 输出“1 2 3 4#也可以使用next()函数
ir = iter(lt)
while True:try:print(next(ir)) # next()方法初始值为1,逐步递增1,返回下一个迭代器对象except StopIteration:sys.exit()

函数

定义函数语法

def 函数名(参数列表):函数体

参数传递

可变和不可变对象

python函数的参数传递:

  • 不可变类型:类似于CPP的值传递,如不可变的对象(整数,字符串,元组)。如fun(a),传递的只是a的值,没有影响a本身,如果在函数内部修改a的值,则是生成一个新的a的对象。
# 传不可变对象实例
def change(a):print(id(a))a = 2print(id(a))a = 1
print(id(a))
change(a) '''
输出
2325841838320
2325841838320  调用函数前后,形参和实参指向的是同一个对象,id相同
2325841838352  在函数内部修改形参以后,形参指向了不同的id
'''
  • 可变类型:类似于CPP中的引用传递,如列表,字典。fun(la),则是将真正的la传递过去,如果函数内部修改了la,外部的la也会变化。
# 传可变对象实例
def change(lt):lt.append([1,2,3])print("函数内取值:",lt)lt = ['a','b','c']
change(lt)
print("函数外取值:",lt)
'''
output:
函数内取值: ['a', 'b', 'c', [1, 2, 3]]
函数外取值: ['a', 'b', 'c', [1, 2, 3]]
传入函数的形参在末尾添加新内容的对象 和 外部的实参是同一个引用,所以内部修改了外面也变化了
'''

遍历技巧

  • 字典遍历时,key和val可以使用items()方法同时解读出来
dc = {'name':'wolai','age':25}
for k,v in dc.items():print(k,v)
  • 序列遍历是,索引位置和对应的值可以使用enumerate()函数同时得到

异常处理

try/except

try/except…else

try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。else 子句将在 try 子句没有发生任何异常的时候执行。

try-finally 语句

try-finally 语句无论是否发生异常都将执行最后的代码。

抛出异常

Python 使用 raise 语句抛出一个指定的异常。

x = 10
if x > 5:raise Exception('x 不能大于 5。x 的值为: {}'.format(x))

Python语法易混淆相关推荐

  1. 记录在学习python中易混淆的知识点

    这里写目录标题 列表 元组 Python中的*args和**kwargs 具有两个以上维度的数据帧切片 列表 访问列表中的列表元素: list = [123,['hello','world'],456 ...

  2. python语法教程-Python语法教程总结规范

    Python语法易错点记录 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar-- 心分享.心 ...

  3. Python+Pycharm和 VisualStudio C++社区版使用PK及易混淆的语法问题

    这2年都是在用Python,使用环境要么是Python的IDLE+UE,要么使用Pycharm,近年来基本上都是使用的Pycharm.期间偶尔阅读一下C++的代码,但一直没安装相关编译器. 近来为了研 ...

  4. python编程基础(四):编程习惯、代码规范、易混淆之处

    目录 编程习惯 代码规范 python中self的作用 易混淆之处 编程习惯 1. 添加主函数if __name__ == 'main': 2. 使用project_path = os.getcwd( ...

  5. python语法详解大全_笔记:Python 语法要点汇总

    Python 是一门解释型语言,无需编译和链接 Python 解释器 交互模式 脚本模式 源码编码 默认情况下,Python 源文件是 UTF-8 编码 指定源文件的字符编码 # -*- coding ...

  6. python语法错误概述_python语法错误

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我是python中的新手,当我想在模块中编译代码时,我遇到语法错误:invail ...

  7. python编程语法大全-python语法汇总

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. splitstriplen()for variable in range ...

  8. JAVA WEB部分易混淆问题总结

    2019独角兽企业重金招聘Python工程师标准>>> 前言 最近在看了一些java基础问题,顺便将这段时间看到的容易混淆和已忘记的问题进行整理总结一下. 接下来会再写一些数据库方面 ...

  9. [Python+sklearn] 计算混淆矩阵 confusion_matrix()函数

    python sklearn 计算混淆矩阵 confusion_matrix()函数 参考sklearn官方文档:sklearn.metrics.confusion_matrix. 功能: 计算混淆矩 ...

最新文章

  1. Sql中的递归问题-思考与建议
  2. for循环 消耗时间计算
  3. hibernate之主键生成策略
  4. PL/pgSQL的anyelement例子
  5. VS2015 无法启动 IIS服务器
  6. 如何美化linux终端输出
  7. tensorflow的tf.transpose()简单使用
  8. C++ deque 底层原理及 queue、stack 容器的使用详解
  9. 语义分割深度学习方法集锦
  10. primefaces_懒惰的JSF Primefaces数据表分页–第2部分
  11. jeesite使用心得(一)
  12. php抽象类初始化方法,php – 抽象类方法声明
  13. JAVA总结实录01 : 异常处理 try-catch-finally
  14. java 获取jboss路径_java中获取文件路径的几种方式
  15. c语言怎么调用fork函数,C语言编程创建函数fork() 执行解析.pdf
  16. html中http502怎么解决,Http Error 502 解决方法
  17. linux centos7 docker 安装nginx 使用宿主机配置文件
  18. Surface Pro 6 黑苹果 CLOVER 配置文件,全球首发(转载)
  19. 使用Certbot配置SSL证书【ubuntu系统】
  20. 大数据工程师和数据分析师有什么区别

热门文章

  1. 影像变革之年 CP+2019展会五大看点
  2. VPS与云主机指南:了解五个主要区别
  3. node.js egg框架接入微信公总号
  4. Mac VSCode OpenGL环境搭建
  5. JAVA教程--书的
  6. 三十六计之借刀杀人(第三计)
  7. tsv文件 java_将选定的行从tsv文件导入neo4j
  8. 努力工作,却永不升职,是种怎样的体验?
  9. python立即关机_Python之电脑好帮手—自动定时关机
  10. 一招教你学会如何用excel求重复项最大值