业务代码应用:
class Base:
def findele(self, *args): # 方法中的*args,是将多余的参数,打包成元组。
return self.driver.find_element(*args) # 返回中的*args,是将打的包解开。
# 点击
def click(self, *args):
return self.findele(*args).click()
# 调用后是self.click(By.XPATH,"//*[text()='新闻']"),传入的参数打包成元组发送给findele最终拆包,才能用
# 你问click里面为什么要打包,不打包的话你传入是多个参数呀
# 发送内容
def sendkey(self, args, value):
self.findele(*args).send_keys(value)
# 调用send((By.XPATH,"//*[text()='新闻']"),'发送'),元组一个参数、value一个参数,findele的*args拆包。
非业务验证:
def myprint(name,*args, **kwargs):
print(args)
print(args) # 未拆包,除了第一个和关键字参数,其他输出是元组类型
print(*args) # 进行拆包,不拆包怎么用,看上面的业务代码。
print(kwargs)
print(kwargs)# 未拆包,输出是字典类型
print(*kwargs)# 进行拆包(**kwargs无法打印)
# 1、*args:元组类型的可变形参;
# 2、 ** kwargs:字典类型的可变形参;
myprint(1, 2, 3, 4, 8, a= 5, c=7)
'''
args
(1, 2, 3, 4, 8)
1 2 3 4 8
kwargs
{'a': 5, 'c': 7}
a c
'''
涉及python中的参数知识:
# 位置实参:普通的实参 按照参数的顺序把数据传递给形参
def sum_fun(num1,num2=666,*args,):
plus = num1*num2
print("两个数字的乘积=%s" % plus)
sum_fun(2, 3)
test_fun(num1=3,num2=4)
# 位置实参:2和3
# 关键字实参:num1=3,num2=4
def test_fun(num1,num2=10):
print(num1)
print(num2)
test_fun(2)
# 默认形参:num2=666 (如果设置实参,就会使用实参.如果不设置实参,就会使用默认形参)
def args_fun(*args):
sum_plus = 0
for i in args:
sum_plus += i
print(sum_plus)
args_fun(1, 2, 3, 4,)
# 元组型可变形参:*args(传进来的任意位置参数会被包装成为元组,随后赋值给args)
def stu_info_fun(**kwargs):
name = kwargs.get("name", "暂无")
age = kwargs.get("age", "暂无")
weight = kwargs.get("weight", "暂无")
print("姓名:%s,年龄:%s,体重:%s" % (name,age,weight))
stu_info_fun(name='王', age=19, weight=140)
# 字典型可变形参:**kwargs(给形参前面添加**,标志其为字典型可变形参,传进来的任意位置参数会被包装成为字典,随后赋值给kwargs)