其实Python在本科的时候就有学习过,那会儿还用的是Python 2,毕业以后一直接触的是Java,很少有机会用到Python。但是Python在使用,尤其是写脚本、做算法题的时候,特别好用。所以,这次专门写一个博客,来记录一下Python的基础语法,以免每次使用都去找教程😭
语法规则
基础语法
- Python代码不使用分号结尾,采用缩进来表示代码块
- Python中使用整数时,如果位数过多,可以在数字中间使用
_
来分隔,如10_000
和10000
表示的意义相同 - 对于很大或者很小的浮点数,需要用科学计数法表示,如5乘10的9次方,可以表示成
5e9
因为整数和浮点数在计算机内部的存储方式不同,运算方式也不一样,整数的运算是精准的(除法也是),而浮点数的运算存在四舍五入的误差。
- 字符串是用
'
或"
括起来的,如果字符串中也有'
,那么可以用"
括起来,例如:"i'm headsome"
,如果字符串中本身就有'
和"
,那就需要\
来进行转义。 - 如果字符串中有
\
,那么就可以使用r来表示该字符串不转义,例如:r"hello\a\b"
- 如果字符串中有多行,大量使用
\n
影响阅读,那么可以使用...
来表示多行内容 - 布尔值是
True
和False
,空值是None
,注意要首字母大写 - Python是动态语言,变量的数据类型并不固定,而Java是静态语言,声明变量必须明确其数据类型
- 除法是使用
/
,得到的结果是浮点数,哪怕是两个整数相除,如果想得到整数,需要使用地板除,就是//
,而想得到余数,使用%
- 在计算机中,任何数据其实都可以看做是一个“对象”,变量的作用是指向这些对象,给变量赋值的过程,其实就是将这些“对象”的地址,和变量关联起来。例如,在Python中
x = y
,是把x指向y所关联的对象,那么之后,如果重新对y进行赋值,x的值是不变的。 - Python中的整数和浮点数,没有大小限制,但是超过一定范围,就会被表示为
inf
(无限大) - 字符串格式化:
%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}岁了')
- 可以使用
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是可变的。
条件判断
if
、else
、elif
模式匹配
- 简单匹配
举例说明:
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 ???.')
- 复杂匹配。
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.')
- 匹配列表
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基本一致
for in
循环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