the day of python learning(函数)

函数    可读性强,复用性强

函数的定义
def 函数名():
函数体
return 返回值

所有的函数
  • 只定义不调用就一定不执行
  • 先定义后调用
函数名()   #不接收返回值
返回值 = 函数名() #接收返回值

返回值
  没有返回值:默认返回None
      不写return:函数内的代码执行完毕自动结束
      只写return:结束一个函数
      return None ------不常用
   返回一个值:#结束了函数并且返回一个值
          #可以是任意的值
          #如果一个程序中有多个return,那么只执行第一个
   返回多个值:#多个值之间用逗号隔开,接收的时候可以用一个变量接收(元组
          #也可以用等量的多个值接收

def f(a):
  return 'nihao'

ret = f('dajiahao')
print(ret)

参数
形参 定义函数的时候
     #位置参数:必须传
     #*args:动态参数 可以接收任意多个按位置传入的参数
     #默认参数:可以不传 -----陷阱
     (如果传了就用传的参数,不传则使用默认参数)

   #**kwargs:动态参数 可以接受任意多个按关键字传入的参数
    实参 调用函数的时候
#按照位置传参数
       #按照关键字传参数
         #可以混用 位置参数必须在关键字传参之前
         #不能对一个参数重复赋值
函数的调用
   只有调用函数的时候
   按照位置传:直接写参数的值
   按照关键字传:关键字 = 值
定义函数
  位置参数:直接定义参数
  默认参数:关键字参数:参数名 = ‘默认的值’
  动态参数:可以接受任意多个参数
        #参数名之前加*,习惯参数名args
        #参数名之前加**,习惯参数名kwargs
  顺序:位置参数,*args,默认参数,**kwargs
动态参数
  两种:可以接受任意个参数
  *args : 接收的是按照位置传参的值,组织成一个元组
  **kwargs:接收的是按照关键字传参的值,组织成一个字典
args必须在kwargs之前

动态参数的另一种传参方式
def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。
     print(args)
 
 func(1,2,3,4,5)
 l = [1,2,3,4,5]
 func(*l)  #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散

 def func(**kwargs):
   print(kwargs)
 func(a=1,b=2)
 d = {'a':1,'b':2} #定义一个字典
 func(**d)

函数的注释

def func():
    '''
    这个函数实现了什么功能
    参数1:
    参数2:
    return: 是字符串或者列表的长度    '''
    pass
 
默认参数的陷阱
 
 如果默认参数的值是一个可变数据类型,
那么每一次调用函数的时候,
如果不传值就公用这个数据类型的资源





    

posted @ 2018-08-29 20:09  浅笨小孩  阅读(74)  评论(0编辑  收藏  举报