由于最近有自动化测试的需要,对Python的语法不是很熟悉,Python的介绍就忽略了,下面开始Python基本语法的学习
下载安装Pycharm
:https://www.jetbrains.com/pycharm/download/#section=windows
创建工程比较简单,这边就直接开始撸码:
python中的main
函数使用if __name__ == '__main__':
开始
if __name__ == '__main__':
print("hello python")
运行结果:
在使用数据类型之前,先来了解下python中的注释:
单行注释:#内容
多行注释:'''内容'''
或"""内容"""
表示一个整数:
if __name__ == '__main__':
# 定义整数变量
i = 10
print(i)
# 输出变量类型
print(type(i))
运行结果:
表示一个小数:
if __name__ == '__main__':
# 定义小数变量
f = 8.8
print(f)
print(type(f))
运行结果:
Python中布尔类型使用True
和False
表示,这两位还可以表示1
和0
的整数。
if __name__ == '__main__':
# 定义布尔类型
b = True
print(b)
print(type(b))
# 将True和False转为为整形表示
print(int(True))
print(int(False))
运行结果:
字符串是我们使用的最常见的类型,python中字符串类型定义方式有三种:
定义方式 | 描述 |
---|---|
单引号:'内容' | 表示单行字符串 |
双引号:"内容" | 和单引号相同,表示单行字符串 |
三对单引号:'''内容''' | 表示多行字符串 |
三对双引号:"""内容""" | 表示多行字符串 |
if __name__ == '__main__':
info = '一对单引号'
print(info, type(info))
print("-------------")
info = "一对双引号"
print(info, type(info))
print("-------------")
info = '''三对单引号
三对单引号
三对单引号
'''
print(info, type(info))
print("-------------")
info = '''三对双引号
三对双引号
三对双引号
'''
print(info, type(info))
print("-------------")
运行结果:
两种方式:
len
函数: info = "abc"
print(len(info))
__len__
函数: info = "abc"
print(info.__len__())
python中,字符串拼接使用+
号,但数字型变量(整型和浮点型)和字符串相加会报错:
info = "abc"
print(info + 1)
运行结果:
可以调用内置函数str
,将之转为字符串类型:
print(info + str(1))
上面基本类型之间都可以相互转换,方式如下:
转换方法 | 描述 |
---|---|
str(var) | 将var转换为字符串 |
int(var) | 将var转换为整形 |
float(var) | 将var转换为浮点型 |
除了循环外,我把条件控制也放在这块了
用于判断表达式是否成立,语法:if 表达式:
if True:
print("真")
else:
print("假")
运行结果:
多分支使用elif
:
i = 10
if i > 10:
print("i大于10")
elif i < 10:
print("i小于10")
else:
print("i等于10")
运行结果:
python中的三目运算符是我见过的最奇葩的,语法:成立执行语句 if 条件 else 不成立执行语句
:
gender = 0
print("男") if gender == 1 else print("女")
运行结果:
学习for循环之前,先来了解下range
,range
也是python中一个容器类型,表示一个区间,定义语法为:range([开始],结束,[步长])
for循环可以遍历range
中的内容,for循环的语法为:for 变量名 in 容器:
for i in range(0, 10, 2):
print(i)
运行结果:
continue
可以直接进入循环的下一次 for i in range(10, 2):
if i == 4:
continue
print(i)
运行结果:
break
可以直接跳出循环: for i in range(10, 2):
if i == 4:
break
print(i)
运行结果:
python特有的特性,当循环正常执行完成(不使用break
跳出循环),使用else
可以追加执行一块代码:
for i in range(0, 10, 2):
if i == 4:
continue
print(i)
else:
print("循环执行结束啦")
运行结果:
while循环和for循环类似,只是结束条件需要自己指定,语法为:while 条件:
i = 0
while i < 10:
print(i)
i += 2
执行结果:
除此以外,while循环中也可以使用continue
、break
、else
这边只介绍python中一些特殊的运算符
python中一正一负的取余操作要采用新的公式:余数 = 被除数 - 除数 * 商
,其中商向上取整
print(8 % -3)
执行结果:
python使用//
进行取整操作,一正一负的情况向下取整:
print(12 // 5)
print(12 // -5)
执行结果:
python中可以直接使用**
来进行幂运算
print(2 ** 3)
执行结果:
python中不支持++
、--
操作,需要使用+=1
、-=1
python也支持多个变量赋值:
a, b, c = range(3)
print(a, b, c)
运行结果:
交换两个变量的值就可以使用解构了:
a, b = 10, 20
a, b = b, a
print(a, b)
运行结果:
python中的==
表示的是变量的值相等
,并不表示内存地址相同
由于编译器会优化以及常量池,所以使用列表进行测试,列表在后续容器中会介绍:
a = [10, 20, 30]
b = [10, 20, 30]
print(a == b)
运行结果:
python中使用is
对比两个变量是否是一个内存地址:
a = [10, 20, 30]
b = [10, 20, 30]
print(a == b)
print(a is b)
运行结果:
与is
相对应,is not
则表示两个变量内存地址不相等,返回True
符号 | 描述 |
---|---|
and | 并且 |
or | 或者 |
not | 非 |
Java中有很多类型的容器,像List
,Map
等,他们用于存放指定类型的数据,Python中也有对应的容器
和Java的List
对应,python中定义列表使用:[]
、list()
m_list = [1, 2]
print(m_list)
也可以使用list()
函数,将range
转换为list:
m_list = list(range(0, 2))
print(m_list)
获取列表元素使用:变量名[索引]
m_list = [1, 2]
print(m_list[0])
运行结果:
python中可以使用负数作为索引,表示倒着取元素:
m_list = [1, 2]
print(m_list[-1])
运行结果:
添加元素有三种方式:
append()
方法在列表尾添加一个元素,相当于Java的add()
: m_list = [1, 2]
m_list.append(3)
print(m_list)
运行结果:
extend()
方法在列表尾添加一个列表,相当于Java的addAll()
: m_list = [1, 2]
m_list.append(3)
m_list.extend([4, 5])
print(m_list)
运行结果:
insert()
方法在列表指定索引后添加一个元素: m_list = [1, 2]
m_list.append(3)
m_list.extend([4, 5])
m_list.insert(2, 10)
print(m_list)
运行结果:
使用index()
方法,查找元素的索引,并支持指定索引范围:
print(m_list.index(10))
print(m_list.index(10, 0, 4))
运行结果:
如果查找不到,抛出异常:
print(m_list.index(8))
运行结果:
修改列表元素很简单,只要赋值新的值即可:
m_list = [1, 2]
m_list[0] = 3
print(m_list)
运行结果:
元素删除可以通过值删除(remove()
方法),也可以通过索引删除(pop()
方法):
# 值删除
m_list.remove(2)
print(m_list)
# 索引删除
m_list.pop(0)
print(m_list)
运行结果:
列表清空使用del
关键字或clear()
方法,其中del
会将内存清空,变量不可使用:
clear()
方式:
m_list.clear()
print(m_list)
运行结果:
del
方式:
del m_list
print(m_list)
运行结果:
使用in
关键字,判断元素是否在列表中:
m_list = [1, 2]
# 判断3是否在列表中
print(3 in m_list)
运行结果:
元素遍历使用for
循环,语法为for 变量名 in 列表名
:
m_list = [1, 2]
for item in m_list:
print(item)
运行结果:
功能 | 方法 | 描述或例子 |
---|---|---|
定义列表 | 变量名=[] | 空列表:m_list=[] ;初始值列表:m_list=[1,2] |
list([range([开始],结束,[步长])]) | 空列表:m_list=list() ;初始值列表:m_list = list(range(0, 2)) | |
获取列表的元素 | 变量名[索引] | 索引支持负数,获取索引为1的元素:m_list[1] |
列表增加元素 | append(元素) | 增加一个元素:m_list.append(3) |
extend(列表) | 添加一个列表:m_list.extend([4,5]) | |
insert(索引,元素) | 指定索引后面追加一个元素:m_list.insert(2,10) | |
查找元素的索引 | index(元素,[开始],[结束]) | 如果元素存在,返回元素的索引,反之抛出异常:m_list.index(20) |
列表元素的修改 | 变量名[索引]=新元素 | 赋值一个新元素:m_list[0]=100 |
列表元素的删除 | remove(元素) | 删除指定元素:m_list.remove(100) |
pop(索引) | 删除指定索引下的元素:m_list.pop(1) | |
clear() | 清空列表元素:m_list.clear() | |
del | 删除变量内存:del m_list | |
元素是否存在于列表中 | in | 判断元素是否在列表中:2 in m_list |
元素遍历 | for 变量名 in 列表名 | 遍历列表:for item in m_list |
列表生成推导式 | [i for i in range([开始],结束,[步长])] | 快速生成一个列表:m_list = [i for i in range(0, 10,2)] |
字典对应Java中的HashMap
,存放的是键值对,定义字典使用:{}
、dict()
{}
用法:
d = {"name": "张三", "age": 18}
print(d)
运行结果:
dict()
用法:
d = dict(name="张三", age=19)
print(d)
运行结果:
字典元素都是通过键获取的,获取有两种方式:
[索引]
获取:
print(d["name"])
get()
方法获取:
print(d.get("name"))
还可以根据返回是否为None
,判断是否存在键值对:
print(d.get("name1"))
同样的可以使用in
关键字,判断是否存在键:
print("name1" in d)
运行结果:
字典增加和修改元素使用[key]
直接赋值即可:
d["gender"] = '女'
print(d["gender"])
删除元素可以使用del
:
del d["gender"]
print("gender" not in d)
运行结果:
清空元素可以使用clear()
:
d.clear()
print(list(d.keys()))
运行结果:
keys()
方法用于获取字典中所有的key,使用list()
将它转换为列表:
print(list(d.keys()))
values()
方法用于获取字典中所有的value:
print(list(d.values()))
items()
方法用于获取字典中所有的键值对,使用list()
将它转换为元表,元表后续会介绍:
print(list(d.items()))
运行结果:
遍历还是使用for循环即可,其中由于python的解构特性,for循环变量也支持多个:
for k, v in d.items():
print(k, v)
运行结果:
功能 | 方法 | 描述或例子 |
---|---|---|
定义字典 | 变量名={} | 空字典:d={} ;初始值字典:d = {"name": "张三", "age": 18} |
dict() | 空字典:d=dict() ;初始值字典:d= dict(name="张三", age=19) | |
获取字典的元素 | 变量名[key] | 获取key为name的元素:d["name"],不存在抛出异常 |
get(key) | 获取key为name的元素:d.get("name"),不存在返回None | |
字典增加元素 | 变量名[key]=value | 增加一个元素:d["gender"] = '女' |
字典元素的修改 | 变量名[key]=新value | 将key赋值一个新value:d["gender"] = '男' |
字典元素的删除 | del | 删除指定键值对:del d["gender"] |
clear() | 清空列表元素:d.clear() | |
元素是否存在于字典中 | in | 判断元素是否在字典中:"name1" in d |
元素遍历 | for 变量名 in 字典名 | 遍历字典:for k, v in d.items() |
字典生成推导式 | {k:v for k,v in zip(列表1, 列表2)} | 快速生成一个字典:d = {k: v for k, v in zip(keys, values)} |
python中元组是不可变的列表,一旦创建,内存就不可修改了,只能读取,对多线程下操作提升了性能
元组的定义使用:()
、tuple()
()
方式:
t = (1, 2)
print(t)
tuple()
方式,tuple的入参需要一个容器,其实就是将其他容器转换为元组:
t = tuple((1, 2))
print(t)
运行结果:
元组除了不能增加修改外,其他用法和列表相同
集合对应Java中的HashSet
,如果熟悉源码的就知道,HashSet
就是HashMap
,只是HashSet
存放的value
都是null
,所以集合的使用和字典差不多,定义集合使用:{}
、set()
{}
方式:
s = {1, 2}
print(s)
set()
方式,也元素一样需要一个容器:
s = set([1, 2])
print(s)
运行结果:
使用in
来判断:
print(3 in s)
两种方式:add()
、update()
add()
方法一次增加一个元素:
s.add(3)
print(s)
运行结果:
update()
方法传入一个容器,一次增加多个元素:
s.update([4, 5, 6])
print(s)
运行结果:
remove()
方法,删除指定的key
,如果不存在抛出异常:
s.remove(3)
print(s)
discard()
方法,删除指定的key
,如果不存在不抛出异常:
s.discard(3)
print(s)
pop()
方法,随机删除一个元素:
s.pop()
print(s)
clear()
方法,清空集合:
s.clear()
print(s)
运行结果:
集合除了使用==
对比两个集合中元素是否一样外,还支持以下比较操作:
issubset()
方法用于判断本集合是否是其他集合的子集:
s1 = {1, 2, 3}
s2 = {1, 2}
print(s2.issubset(s1))
与之相对的,issuperset()
方法用于判断本集合是否是其他集合的超集:
print(s1.issuperset(s2))
运行结果:
isdisjoint()
方法用于判断本集合和另一个集合是否没有交集:
s1 = {1, 2, 3}
s2 = {4, 5}
print(s1.isdisjoint(s2))
运行结果:
集合还支持以下的数学操作:
intersection()
方法,求交集:
s1 = {1, 2, 3, 4}
s2 = {4, 5}
print(s1.intersection(s2))
union()
方法,求并集:
print(s1.union(s2))
difference()
方法,求差集:
print(s1.difference(s2))
symmetric_difference()
方法,求对称差集:
print(s1.symmetric_difference(s2))
运行结果:
功能 | 方法 | 描述或例子 |
---|---|---|
定义集合 | 变量名={} | 空集合:s={} ;初始值集合:s = {1, 2} |
set() | 空集合:s = set() ;初始值集合:s = set([1, 2]) | |
集合增加元素 | add() | 增加一个元素:s.add(3) |
update() | 增加多个元素:s.update([4, 5, 6]) | |
字典元素的删除 | remove() | 删除指定元素,不存在抛异常:s.remove(3) |
discard() | 删除指定元素,不存在不抛异常:s.discard(3) | |
pop() | 删除随机元素:s.pop() | |
clear() | 清空集合:s.clear() | |
元素是否存在于集合中 | in | 判断元素是否在集合中:3 in s |
元素遍历 | for 变量名 in 集合名 | 遍历集合:for k in s1 |
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有