python中函数的基本结构及参数

函数:定义了之后可以在任何需要它的地方调用

返回值3种情况:
1:没有返回值
  不写return
  只写rerurn:结束一个函数的连续
  return None
2:返回一个值
3:返回多个值(这里多个值可以用一个变量接收,也可以用多个变量接收
  一个变量接收就是元祖)

1 def my_len(s):  #自定义函数只需要0个参数,接收参数
2     pass
3     return 0    #返回值
4 s = '我们一起学习python'
5 ret = my_len(s)   #传递参数:传参,实际参数,实参
6 print(ret)

顺序:位置参数,*args,默认参数,**kwargs

1:传多个参数

1 def my_sum(a, b):     #位置参数
2     res = a+b
3     return res
4 ret = my_sum(2,1)       #位置传参
5 ret1 = my_sum(b = 2, a = 1)    #关键字传参
6 print(ret)
站在实参的角度上:
1.按照位置传参
2.按照关键字传参
3.混着用可以:但是必须先按照位置传参,再按照关键字传参,不能给不能给同一个变量传多个值
站在形参的角度上:
1.位置参数:必须传参数,且有几个参数传几个值
2.默认参数:可以不传,那么则默认,如果传了,则选择传的参数
1 def classmate(name,sex=''):
2     print('{} : {}'.format(name,sex))
3 
4 classmate('python','')
5 classmate('java')
6 classmate('php','')

2.动态求参的两种

第一种:

1 def func(*args, **kwargs):
2     print(args,kwargs)
3 func(1,2,3,4,5,a = 'aaa',b = 'bbb')#输出结果:(1, 2, 3, 4, 5) {'a': 'aaa', 'b': 'bbb'}
1:*args接收的是按照位置传参的值,组织成一个元祖
2:**kwargs接收的是按照关键字传参的值,组织成一个字典
3:args必须在kwargs之前
1 def sum(*args):  #接收的是按照位置传参的值,组织成一个元祖
2     n = 0
3     for i in args:
4         n+=i
5     return n
6 print(sum(1,2))

第二种:

1 def func(*args):  #站在形参的角度上,给变量加上*就是组合所有传来的值
2     print(args)
3 
4 func(1,2,3,4,5)    #输出结果:(1, 2, 3, 4, 5)
5 l = [1,2,3,4,5]
6 func(*l)            #输出结果:(1, 2, 3, 4, 5)
7                     #站在实参的角度上,给一个序列加上*就是将这个序列按照顺序打散,将其元素一个个传进去
8                     #同理**配和kwargs

3:关于函数的注释:

def func():
    '''
    这个函数实现了什么功能
    参数1:
    参数2:
    :return:是字符串或者列表的长度
    '''
    pass

原文地址:https://www.cnblogs.com/rcat/p/9310134.html