首页
登录 | 注册

Python传参数

在写自动化封装的过程中,暴露了很多Python基础薄弱的问题,于是去重读了一遍Python传参,先整理如下:

如果那里写的不对,希望大家可以多多指教,会继续完善。


1.位置参数



2.默认参数



3.可变参数:就是说传入函数的参数个数不确定,可能是n个,那么此时我们就需要用到可变参数

假如此时我们要写一个计算1到10 的平方和:

我们可以这么写:但是在调用的时间,必须要把传入的参数改为list 或者 tuple

# 计算5的三次方,需要循环三次,所以需要用到循环(此例子中用到了位置参数)
def factorial(n,x):
sum =1
while x > 0:
sum = sum * n
x = x - 1
# print (sum)
return sum

# factorial(2,5)
# 计算1-10 的平方和
def calc(a):
sum = 0
for x in a:
sum = sum + factorial(x,2)
return sum

a = list(range(1,11))

print(calc(a))

但是如果我们要用到可变参数,我们需要把传入函数的参数前面加上*,但是函数的代码完全不变化,不过是在调用的时间发生一些变化(此时可以传入0或者n个参数)

# 计算5的三次方,需要循环三次,所以需要用到循环
def factorial(n,x):
sum =1
while x > 0:
sum = sum * n
x = x - 1
# print (sum)
return sum

# factorial(2,5)

# 计算1-10 的平方和

def calc(a):
sum = 0
for x in a:
sum = sum + factorial(x,2)
return sum
print(calc(1,2,3,4,5,6,7,8,9,10))

但是这样写太复杂,而且如果此时本来已经存在一个list或者tuple那么我们就可以直接传入list或者tuple即可,此时的传入方法为在传入的list或者tuple前面加上*即可传入。

调用代码改写如下:

a = [1,2,3,4,5,6,7,8,9,10]

calc(*a)



4.关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:

def person(name,age,**kw):


print(name,age,kw)

person(1,2)
# 1 2 {}

person(1,2,a= 'a',b='b')
# 1 2 {'a': 'a', 'b': 'b'}

other = {"1":'a',"2":'b',"3":'c'}
person('3','4',**other)
# 3 4 {'1': 'a', '2': 'b', '3': 'c'}

notes:在我直接往person中传入字典other时间,我最初定义的other是{1:'a',2:'b',3:'c'},但是系统一直报错说 person() keywords must be strings,然后我就给other的key都变成了字符串,然后就可以了










2020 jeepxie.net webmaster#jeepxie.net
10 q. 0.008 s.
京ICP备10005923号