1、变量
用一行代码交换a、b变量的值
# 1
a = 1
b = 2
tmp = a
a = b
b = tmp
print(a, b)
# 2
c = 1
d = 2
c, d = d, c
print(c ,d)
2、如何用多个变量接受列表和元组的值
li = [1, 2, 3]
# 三个变量接受
val1, val2, val3 = li
print(val1, val2, val3) # 1 2 3
# 两个变量接受
val4, *val5 = li
print(val4, val5) # 1 [2, 3]
3、一切皆对象
"""
创建字符串,整型、浮点型、列表、元组、字典、集合、None, 布尔类型
"""
s1 = 'abc'
s2 = str('abc')
print(s2, type(s2))
# str是一个类,通过str实例化一个对象s2,s2可以调用str类中的实例方法,
# s1 = 'abc'只是s2 = str('abc')的简写法,s1也是str的实例化对象
# 下面即相同的概念
f1 = 0.01
f2 = float(0.01)
print(f2, type(f2))
li1 = [1, 2, 3]
li2 = list([1, 2, 3])
print(li2, type(li2))
# tuple(), set(), dict(), bool()
4、字符串相关操作
# 1、切片
print(s[::]) # s[0]-s[len(s)-1]--hello world
print(s[0:]) # s[0]-s[len(s)-1]--hello world
print(s[0:2]) # s[0]-s[1]--he
print(s[:-1]) # s[0]-s[len(s)-2]--hello worl
print(s[::2]) # s[0]、s[2]、s[4]、s[6]、s[8]、s[10]----hlowrd
print(s[::-1]) # s[len(s)-1]-s[0] ----dlrow olleh
# 2、字符串倒序
s1 = 'abcdef'
print(s1[::-1])
def Reverse1(s: str):
new_s = ''
for i in range(len(s) - 1, -1, -1):
new_s += s[i]
return new_s
def Reverse2(s: str):
new_s = ''
for i in range(len(s) - 1, -1, -1):
new_s += new_s.join(s[i])
return new_s
print(Reverse1(s1)) # fedcba
print(Reverse2(s1)) # fedcba
# 3、分割 :将北京 上海 广州 深圳 转换为 北京、上海、广州、深圳
s2 = '北京 上海 广州 深圳'
split_list = s2.split(' ')
print(split_list)
print(','.join(split_list)) # 北京,上海,广州,深圳
5、零值概念
每一个数据类型都有且只有一个布尔值为False的对象
# 零值概念
# 每一个数据类型都有且只有一个布尔值为False的对象
# 整型:0
print(bool(0))
print(bool(1))
print(bool(-1))
if 1:
print(1)
# 字符类型:空字符串
print(bool(''))
print(bool('1'))
print(bool(','))
if '1':
print('1')
# 列表类型:空列表
print(bool([]))
print(bool([1, 2]))
print(bool(['.']))
if [1]:
print([1])
# 字典:空字典
print(bool(dict({})))
# 结果
False
True
True
1
--------------------
False
True
True
1
--------------------
False
True
True
[1]
--------------------
False
6、短路运算
1)与运算:
前后同为True,整体返回True、否则整体返回False
前面为False,不往后判断直接返回前面,整体返回False
前面为True,往后判断,整体是True还是False取决于后面,但不管后面为True或False都返回后面
"""
1、与运算: 前后同为True,整体返回True、否则整体返回False
前面为False,不往后判断直接返回前面,整体返回False
前面为True,往后判断,整体是True还是False取决于后面,但不管后面为True或False都返回后面
"""
print(True and True)
print(True and False)
print(0 and 2)
print(1 and 2)
print(2 and 0)
print('-' * 20)
# 结果
True
False
0
2
0
2)或运算
前面为True,不再往后判断,整体返回True, 返回前面
前面为False, 往后判断:
如果后面为True,整体返回True,返回后面
如果后面为False, 整体返回False, 返回后面
print(True or False)
print(False or True)
print(1 or 2)
print(0 or 2)
print(0 or [])
# 结果
True
True
1
2
[]
3)非运算
# 3、非运算(返回True,False)
print(0 != True)
print(0 != False)
print(0 != 2)
print(0 == 2)
# 结果
True
False
True
False
4)运算等级
非>与>或
print(0 or 1 and 5 != 3)
print(0 or 1 and 5) # 1 and 5 >> 5 , 0 or 5 >>> 5
print(1 or 0 and 5) # 0 and 5 >> 0 , 1 or 0 >>> 1
# 结果
True
5
1
5)短路运算应用
需求:后端从数据库中获取用户,如果存在返回用户名,不存在返回匿名用户
# 5、短路运算应用
def get_user():
"""后端从数据库中获取用户,如果存在返回用户名,不存在返回匿名用户"""
user = None
# if user:
# return user
# else:
# return '匿名用户'
return user or '匿名用户'
print(get_user())
# 结果
匿名用户