Python基础语法

  1. 语法规则
    1. 基础语法
    2. List和Tuple
      1. List
      2. Tuple
    3. 条件判断
      1. 模式匹配
    4. 循环
    5. Dict和Set

  其实Python在本科的时候就有学习过,那会儿还用的是Python 2,毕业以后一直接触的是Java,很少有机会用到Python。但是Python在使用,尤其是写脚本、做算法题的时候,特别好用。所以,这次专门写一个博客,来记录一下Python的基础语法,以免每次使用都去找教程😭

语法规则

基础语法

  1. Python代码不使用分号结尾,采用缩进来表示代码块
  2. Python中使用整数时,如果位数过多,可以在数字中间使用_来分隔,如10_00010000表示的意义相同
  3. 对于很大或者很小的浮点数,需要用科学计数法表示,如5乘10的9次方,可以表示成5e9

    因为整数和浮点数在计算机内部的存储方式不同,运算方式也不一样,整数的运算是精准的(除法也是),而浮点数的运算存在四舍五入的误差。

  4. 字符串是用'"括起来的,如果字符串中也有',那么可以用"括起来,例如:"i'm headsome",如果字符串中本身就有'",那就需要\来进行转义。
  5. 如果字符串中有\,那么就可以使用r来表示该字符串不转义,例如:r"hello\a\b"
  6. 如果字符串中有多行,大量使用\n影响阅读,那么可以使用...来表示多行内容
  7. 布尔值是TrueFalse,空值是None,注意要首字母大写
  8. Python是动态语言,变量的数据类型并不固定,而Java是静态语言,声明变量必须明确其数据类型
  9. 除法是使用/,得到的结果是浮点数,哪怕是两个整数相除,如果想得到整数,需要使用地板除,就是//,而想得到余数,使用%
  10. 在计算机中,任何数据其实都可以看做是一个“对象”,变量的作用是指向这些对象,给变量赋值的过程,其实就是将这些“对象”的地址,和变量关联起来。例如,在Python中x = y,是把x指向y所关联的对象,那么之后,如果重新对y进行赋值,x的值是不变的。
  11. Python中的整数和浮点数,没有大小限制,但是超过一定范围,就会被表示为inf(无限大)
  12. 字符串格式化:%d(整数)、%f(浮点数)、%s(字符串);
    也可以使用 format ;或者在字符串前加上f前缀;例如:
    print('%2d-%02d' % (3, 1))    #指定是否补零
    print('%.2f' % 3.1415926)     #指定小数位数
    print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)) # 这一段的输出是"hello,小明,成绩提升了17.1%"
    
    a = "tom", b = "12"
    print(f'{a}, 今年{b}岁了')
    
  13. 可以使用 int()str()来转换数据类型。

List和Tuple

List

 Python中的List就是Java中的数组,是一个有序的集合。但不一样的是,Python的List可以随时添加或删除其中的元素;且List是变长的,不需要指定长度;List也不需要元素的数据类型一致。
 Python的List索引可以为负数,负数就是从最后一个元素开始倒数。

假设现在有一个List, a = ["apple", "orange"]
常用方法:
 - 追加数据: a.append("fruit")
 - 插入数据: a.insert(1, "eat")
 - 删除末尾元素: a.pop()
 - 删除指定元素: a.pop(1)
 - 列表长度: len(a)

Tuple

 Tuple和List非常类似,但是Tuple一旦初始化之后就不能修改,所以它没有append()、insert()这类方法,但是获取元素的方式和List是一样的;

 不可变的Tuple的意义在于,更安全,当定义Tuple的时候,就需要确定下来它的元素
 注意:只有一个元素的Tuple在定义的时候,需要加上,来消除歧义,比如:a = (1, ),如果不加上这个逗号的话,(1)可以理解为数学意义上的括号。因此,Python在显示只有1个元素的tuple时,也会加一个逗号,防止误解。

 这里说的不变,指的是Tuple元素的索引不变,比如说,如果a = ('aaa', 'bbb', ['ccc', 'ddd']),那么这个时候,a[3]这个元素是一个List,这个List是可变的。

条件判断

  1. ifelseelif

模式匹配

  1. 简单匹配
     举例说明:
score = 'B'

match score:
    case 'A':
        print('score is A.')
    case 'B':
        print('score is B.')
    case 'C':
        print('score is C.')
    case _: # _表示匹配到其他任何情况
        print('score is ???.')
  1. 复杂匹配。
     match语句除了可以匹配简单的单个值外,还可以匹配多个值、匹配一定范围,并且把匹配后的值绑定到变量,如:
age = 15

match age:
    case x if x < 10:
        print(f'< 10 years old: {x}')
    case 10:
        print('10 years old.')
    case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18:
        print('11~18 years old.')
    case 19:
        print('19 years old.')
    case _:
        print('not sure.')
  1. 匹配列表
     match语句还可以匹配列表,功能非常强大。

 我们假设用户输入了一个命令,用args = [‘gcc’, ‘hello.c’]存储,下面的代码演示了如何用match匹配来解析这个列表:

args = ['gcc', 'hello.c', 'world.c']
# args = ['clean']
# args = ['gcc']

match args:
    # 如果仅出现gcc,报错:
    case ['gcc']:
        print('gcc: missing source file(s).')
    # 出现gcc,且至少指定了一个文件:
    case ['gcc', file1, *files]:
        print('gcc compile: ' + file1 + ', ' + ', '.join(files))
    # 仅出现clean:
    case ['clean']:
        print('clean')
    case _:
        print('invalid command.')

循环

 用法和Java基本一致

  1. for in循环
  2. while循环

Dict和Set

 dict,在Python中称呼为字典,在Java中叫做Map,保存的是kv对。

 判断dict中是否存在某元素,用两种办法:

d = {'a': 1, 'b': 2}
print('a' in d)
d.get(b)    # 如果key不存在,则返回None
d.get(b, -1)    # 如果key不存在,返回指定的-1$$

转载请注明来源,欢迎指出错误或表达不够清晰之处。可以在评论区留言,也可以邮件至 hellozhugj@gmail.com