函数【三】参数及返回值
函数的参数及返回值
默认参数
1
2
3
4
5
6
7
8
9
10
|
def stu_register(name,age,country,course): print ( "----注册学生信息------" ) print ( "姓名:" ,name) print ( "age:" ,age) print ( "国籍:" ,country) print ( "课程:" ,course) stu_register( "王山炮" , 22 , "CN" , "python_devops" ) stu_register( "张叫春" , 21 , "CN" , "linux" ) stu_register( "刘老根" , 25 , "CN" , "linux" ) |
发现 country 这个参数 基本都 是"CN", 就像我们在网站上注册用户,像国籍这种信息,你不填写,默认就会是 中国, 这就是通过默认参数实现的,把country变成默认参数非常简单
1
|
def stu_register(name,age,course,country = "CN" ): |
这样,这个参数在调用时不指定,那默认就是CN,指定了的话,就用你指定的值。
另外,你可能注意到了,在把country变成默认参数后,我同时把它的位置移到了最后面,为什么呢?
关键参数
正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可,但记住一个要求就是,关键参数必须放在位置参数之后。
1
|
stu_register(age = 22 ,name = 'alex' ,course = "python" ,) |
非固定参数
若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数
1
2
3
4
5
6
7
8
9
10
|
def stu_register(name,age, * args): # *args 会把多传入的参数变成一个元组形式 print (name,age,args) stu_register( "Alex" , 22 ) #输出 #Alex 22 () #后面这个()就是args,只是因为没传值,所以为空 stu_register( "Jack" , 32 , "CN" , "Python" ) #输出 # Jack 32 ('CN', 'Python') |
还可以有一个**kwargs
1
2
3
4
5
6
7
8
9
10
|
def stu_register(name,age, * args, * * kwargs): # *kwargs 会把多传入的参数变成一个dict形式 print (name,age,args,kwargs) stu_register( "Alex" , 22 ) #输出 #Alex 22 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空 stu_register( "Jack" , 32 , "CN" , "Python" ,sex = "Male" ,province = "ShanDong" ) #输出 # Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'} |
代码实例:
1 def print_info(name,age): 2 print('Name: %s'%name) 3 print('Age: %s'%age) 4 5 print_info('alex',35) #必须参数 6 7 def print_info(name,age): 8 print('Name: %s'%name) 9 print('Age: %s'%age) 10 11 print_info(age=35,name='alex') #关键字参数 12 13 def print_info(name,age,sex='male'): 14 print('Name: %s'%name) 15 print('Age: %s'%age) 16 print('Sex: %s'%sex) 17 18 print_info('alex',35) 19 print_info('wuchao',20) 20 print_info('jinxin',18) 21 print_info('xiaoyu',18,'female') #默认参数(必须放在必须参数的后面) 22 23 def add(x,y,z): #low加法器 24 print(x+y+z) 25 26 add(1,2,3) 27 28 def add(*args): #不定长参数(高大上加法器) 29 #print(args) 30 sum = 0 31 for i in args: 32 sum += i 33 print(sum) 34 35 add(1,2,3,4,5,6) #传入的是无命名参数 36 37 def print_info(*args, **kwargs): # 不定长参数(键值对) 38 39 print(args) # ('alex', 35, 'male') 无命名参数被args接收 40 print(kwargs) # {'jop': 'IT', 'hobby': 'girl', 'height': 188} 声明参数被kwargs接收 41 42 43 print_info('alex', 35, 'male', jop='IT', hobby='girl', height=188) # 传入的是声明参数 44 45 46 def print_info(**kwargs): # 不定长参数(键值对) 47 48 print(kwargs) # {'jop': 'IT', 'hobby': 'girl', 'height': 188} 声明参数被kwargs接收 49 for i in kwargs: 50 print('%s:%s'%(i,kwargs[i])) 51 print_info(jop='IT', hobby='girl', height=188) # 传入的是声明参数 52 53 #不定长参数的位置 54 #*args放在左边,**kwsrgs放在后边 55 def f(*args,**kwargs): #无命名参数必须放左边,声明参数放右边 56 pass 57 f(1,2,[3,4,5],name='alex') 58 59 def print_info(sex='male',*args,**kwargs): # 不定长参数(键值对) 默认参数必须放在不定长参数的左边 60 print(args) 61 62 print(kwargs) 63 for i in kwargs: 64 print('%s:%s'%(i,kwargs[i])) 65 print_info('female',1,2,3) 66 print_info(1,2,3,'female',name='alex') 67 68 #函数参数的优先级 69 def dfun(name,age=22,*args,**kwargs):#必须参数-关键字参数-不定长(无命名参数)-不定长(声明参数)
函数的返回值
要想获取函数的执行结果,就可以用return语句把结果返回
注意:
- 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
- 如果未在函数中指定return,那这个函数的返回值为None
- return多个对象,解释器会把这多个对象组装成一个元组作为一个整体结果输出