Python语法易混淆

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 = 2
    print(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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AqSWedE4-1648176657277)(image/image.png "")]

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))

猜你喜欢

转载自blog.csdn.net/ClaireSy/article/details/123730120