(六)字符串的比较
- is 是通过比较两个对象的内存地址,查看内存地址的方法是id()
- in 是包含
- == 是类型和内容一致
a=1
b=1
print(id(a))
print(id(b))
if a is b:
print('a和b的内存地质一样')
str1='aa,bb,c'
str2='aa'
if str2 in str1:
print('str1包含了str2')
else:
print('str1不包含str2')
a=1
b='1'
if a==b:
print('ok')
else:
print('no')
if a==int(b):
print('ok')
else:
print('no')
(七)多个元素的分离
两种方式,第一种是切片方法,第二种的分离
#分离
list1=['python','华为','淘宝','百度']
#第一种切片方式
print(list1[1:])
#第二种
language,*company=list1
print(language)
print(company)
六.函数
所谓函数,就是把重复的代码单独的分离出来,放在⼀个公共的地⽅,以后可以⼀直的进⾏调⽤,这样就可以解决多次重复来编写。
1.定义函数
def sum(a,b): print(a+b)
2.调用函数以后函数才有用
sum(a=1,b=2)sum(1,2))
#定义函数
def sum(a,b):
print(a+b)
#调用函数才有用
sum(a=1,b=2)
sum(3,4)
3.定义函数的时候备注变量
比如定义登录函数
#定义登录函数,并且备注定义参数
def login(username,password):
'''
:param username: 登录用户名
:param password: 登录密码
:return:
'''
if username=='zx' and password==123456:
print('login sucess')
else:
print('login fail')
#调用函数
login('zx',123456)
1.形式参数,函数的参数
2.实际参数,赋的值
3.默认参数
比如只默认了username,必须放在没有默认的参数后边
# 默认参数
# def login(username='zx',password): 默认参数只能在后边,否则出错
def login(password,username='zx'):
'''
:param username: 登录用户名
:param password: 登录密码
:return:
'''
if username=='zx' and password==123456:
print('login sucess')
else:
print('login fail')
login(123456)
4.动态参数:当一个函数形式和个数都不确定的时候使用
加一个星号是给到元组,加两个星号是给到字典
1.定义动态参数
def func(*args,**kwargs): print(type(args),type(kwargs))
- 不是字典的格式默认都会变成元组内部的一个元素
- 列表都会给元组的
2.将数据里边的字典给字典,其他给元组的方法
1.在定义输出动态参数的时候加好星号
def func(*args,**kwargs):【在这里加好星号】 print(type(args),type(kwargs))
2.在调用函数的时候各自加好星号
func([1,2,3],('a','b'),**{'name':'zx'})
加一个*是给到元组,加**是给到字典
def func(*args,**kwargs):
print(args,kwargs)
print(type(args),type(kwargs))
#不是字典的格式默认都会变成元组内部的一个元素
func(1,2,3)
func([1,2,3])
func([1,2,3],('a','b'),{'name':'zx'})
#以字典形式出现会给到字典
func(a='1',b='2')
#想把某个数据给到元组加**
func([1,2,3],('a','b'),**{'name':'zx'})
案例:
接口测试中需要测包含姓名年龄的数据、测只有姓名、年龄等的数据。动态参数需要什么上传什么即可
def func(**kwargs):
print(kwargs)
func(name='zz',age=18,)
func(name='zz',age=18,sex='girl')
5.函数的返回值
在单个函数而言,有没有返回值其实没有多大意义,函数的返回值核心思想是通过函数的返回值可以把函数与函数关联起来,比如登录成功返回token,带上token可以访问个人主页。
关于返回值的几点:1、函数的返回值是在函数的表达式中,return关键字后面, return关键字后面就是函数的返回值2、一个函数可以有多个返回值3、单一个函数没有写return的时候,不代表函数没有返回值,其实它的返回值是None
要拿到函数的返回值,单独的调用不行,需要输出或者把函数的返回值赋予一个变量,变量的返回就是所需返回值
多个返回值
#一个函数有多个返回值
def login2(username,password):
return username,password
a,b=login2(username='zx',password=123)
print(a)
print(b)
返回值的上下关联
#返回值的关联
def login(username='zx',password=123):
if username=='zx' and password==123:
return 'asertdf'
else:
return '登录账户错误'
print(login())
def profile(token):
if token=='asertdf':
print('欢迎访问个人主页')
else:
print('重定向到登录页面')
profile(token=login())
profile(token=login(password=234))
函数没有返回值
#当一个函数没有return的时候返回是None,不代表没有返回值
def sum(a,b):
print(a+b)
print(sum(1,2))
6.全局变量、局部变量
全局变量:在一个python文件里边定义的变量叫全局变量
局部变量:在一个函数的内部定义的变量叫局部变量
优先级:
1.在Python文件内,当全局变量和局部变量一致时,全局变量优先级高
2.在函数内部,局部变量优先级高
name='aa'
def func():
name='bb'
print(name)
print(name) ——输出的优先aa
7.匿名函数
1、lambda():匿名函数
匿名函数,左边是形式参数右边是实质参数
8.内部函数
- 创造数据0-4,强制转换为列表类型
- 如何实现列表大于2的结果3种方式
- filter过滤函数,list强制转换为列表的形式
- map函数对所有元素做相同的操作,list强制转换数据类型
#内部函数
#匿名函数,左边是形式参数右边是实质参数
求和=lambda a,b:a+b
print(求和(3,4))
#range 范围
for item in range(2,10):
print(item)
#创造数据0-4,强制转换为列表类型
print(list(range(5)))
#如何实现列表大于2的结果3种方式
#1.列表推导式
lists=[x for x in range(10) if x>2]
# print(lists)
#2.传统推倒
lists=[x for x in range(10) ]
list1=[]
for item in lists:
if item>2:
list1.append(item)
print(list1)
#3.filter过滤函数,list强制转换为列表的形式
# list7=[x for x in range(10)]
# print(filter(lambda x:x>2,list7))
# print(list(filter(lambda x:x>2,list7)))
# #map函数对所有元素做相同的操作,list强制转换数据类型
list0=[x for x in range(10)]
# # print(map(lambda x:x+10,list0))
# # print(list(map(lambda x:x+10,list0)))
#传统操作为每个元素赋值
list0=[x for x in range(10)]
listz=[]
for item in list0:
listz.append(item+10)
print(listz)
1、filter():过滤某些元素。
如下图所示:
2、map():对所有的元素做同样的操作。
如下图所示:
3、sorted排序
sorted(x, key=None, reverse=False):对可迭代对象x进行排序,并返回一个排序后的新的对象,key参数可以规定按照何种方式进行比较,而reverse为True时,表示按照递减的方式进行排序。如下图所示:
4.range :输出元素某范围
5.eval把字符串变成表达式并获取结果
str1='2+3'
print(eval(str1)