python碎片

一个*传参:

  方式1:如果想传一个列表中的值,实参前加*。如: *[1,2,3]

  方式2:直接传入一个列表,不加*。如[1,2,3],则传入的是一整个列表,包括[]

两个**传参:

  方式1,:{name = 'zhuo'}

  方式2:**{'name':'zhuo','age':'23'}

1 def  name(*y,**z):
2 
3   print(y,z)
4 
5 name(*[1,2,3],**{'name':zhuo'}) #打印(1,2,3 ),{'name':'zhuo'}
6 
7 name([1,2,3],{'name':'zhuo'}) #打印([1,2,3],{'name':'zhuo'}) , {}
8 
9 name([1,2,3],{name = 'zhuo'}) #打印[1,2,3],{'name':'zhuo'}

形参

实参

位置参数:必须一一对应,不能缺少或增多,位置参数必须要在关键字参数左边

1 (1)求x的n次方
2 def power(x,n):  #x,n为位置参数
3     s=1
4     while n>0:
5         n=n-1
6         s=s*x
7     return s
8 

关键字参数:

 1 5、关键字参数 ** (可以传入0到任意个关键字参数,格式 city='longyan' 2 >>> def person(name,age,**kw):
 3    print('name:',name,'age:',age,'other:',kw)
 4 (1)传入新的dict参数
 5 >>> person('zhuo',22,city='longyan') # city='longyan'为关键字参数
 6 name: zhuo age: 22 other: {'city': 'longyan'}
 7 (2)使用现成的dict
 8 >>> extra={'city:':'Beijing','job':'leader'}
 9 >>> person('zhuo',22,city=extra['city:'],job=extra['job'])
10 name: zhuo age: 22 other: {'city': 'Beijing', 'job': 'leader'}
11 (3)使用现成的dict+ ** extra(**表示默认传入dict extra中的所有元素)
12 >>> person('zhuo',22,**extra)
13 name: zhuo age: 22 other: {'city:': 'Beijing', 'job': 'leader'}
14   ● 在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到
 1 6、命名关键字参数 , * 2 (1)检查person函数内是否有city和job参数
 3 def person(name,age,**kw):
 4 if ‘city’ in kw:
 5 #有city函数
 6     pass
 7 if ‘job’ in kw:
 8 #有job函数
 9     pass
10 print(name,age,kw)
11 
12 (2)限制关键字名字,分隔符  ,*13 命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错
14 def person(name, age, *, city, job):
15 print(name, age, city, job)
16 >>> person('Jack', 24, city='Beijing', job='Engineer')
17 Jack 24 Beijing Engineer

默认参数:调用函数时可以不传参数,使用定义时的默认参数

 1 默认参数(默认参数必须指向不变对象)
 2 #默认参数使用注意事项:
 3 #1.必选参数在前,默认参数在后
 4 #2.有多个参数时,把变化大的参数放前面,变化小的参数放后面。后变化小的的可以作为默认参数
 5 def power(x, n=2):
 6 s = 1
 7 while n > 0:
 8 n = n - 1
 9 s = s * x
10 return s
11 #可按自动顺序改变默认参数值,也可指定改变默认参数的值(如city本来是第四个参数,‘shenzheng’)
12 >>> enroll('zhu=o',5,city='longyan')
13 name: zhu=o
14 gender: 5
15 age: 6
16 city longyan
17 
18 #3.默认参数的坑(所以参数要定义为不变参数)
19 >>> add_end()
20 ['END']
21 >>> add_end()
22 ['END', 'END']
23 >>> add_end()
24 ['END', 'END', 'END'

参数组(非固定参数):

1 def  func(x,*args):
2     print(args)
3 func(1,['x','y','z'])
4 #(['x', 'y', 'z'],) 实参前不加*,默认传入的是一个元组,且该列表是元组中的第一个数据
5 func(1,*['x','y','z'])
6 #('x', 'y', 'z')实参前加*,表示传入的是一个整体列表
 1 可变参数 *
 2 #计算a2 + b2 + c2 + ……
 3 def calc(number):
 4    sum=0
 5    for i in number:
 6       sum=i*i+sum
 7    return sum
 8 (1)传入新的列表参数
 9 >>> print(calc([1,2,3]))
10 14
11 (2)使用现成的列表(角标)
12 >>> nums=[1,2,3]
13 >>> print(calc([nums[0],nums[1]]))
14 5
15 (3)使用 *nums  把nums列表的所有元素作为可变参数传入
16 >>> print(calc([*nums]))
17 14



原文地址:https://www.cnblogs.com/zhuomou/p/8449940.html