码迷,mamicode.com
首页 > 其他好文 > 详细

初识函数

时间:2020-05-09 01:20:35      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:应该   ade   变化   func   动态   container   注释   传递   containe   

初识函数

函数的定义与调用

def 函数名():

? #函数体

? #return 返回值

函数名()

  • 定义:def 关键字,空格后接函数名和():,
  • 函数名:字母,数字,下划线组成,不能以数字开头
  • 调用,先定义后调用
  • 注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性
  • 只定义不调用,一定不执行
  • 函数名() #不接收返回值
  • 返回值 = 函数名() #接收返回值

函数的返回值

  • 没有返回值:默认返回None

    • 不写return:函数内代码执行完毕自动结束

    • 只写return:结束一个函数

    • return None

    • def my_len(s):
          #计算s的长度
          i = 0
          s = ‘12345‘
          for k in s:
              i += 1
          print(i)
              
      res = my_len() #函数内代码执行完毕自动结束
      print(res)#没有返回值,None
      
      def func():
          print(‘666‘)
          retuen
      ret = func()
      print(ret) #只写return,后面不写其他内容,返回None
      
      def func():
          print(‘666‘)
          retuen None
          print(‘999‘)
      ret = func()
      print(ret) #返回None
      
  • 返回一个值

    • 可以返回任何数据类型

    • 只要返回了就可以接收到

    • def my_len(s):
          #计算s的长度
          i = 0
          s = ‘12345‘
          for k in s:
              i += 1
          return i
              
      res = my_len() 
      print(res) #5
      
  • 返回多个值

    • 多个返回值用多个变量接收

    • 返回多个值用一个变量接收,得到一个元组

    • def func():
          retuen 1,2,3
          
      r1,r2,r3 = func()
      print(r1,r2,r3) #1 2 3
      
      ret = func()
      print(ret) #(1, 2, 3)
      

函数的参数

  • 形参,定义函数时的,变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参
  • 实参,调用函数时传递的值称为实际参数,因为这个是实际的要交给函数的内容,简称实参。 

  • **实参角度 **

    • 位置参数

      • 按照位置传参,从左到右,实参与形参一一对应。

      • python
          def compare(x,y):
              the_max = x if x>y else y # x= 22,y = 8
              return x
          ret = compare(22,8)
          print(ret)   
        
    • 关键字参数

      • 按关键字传参

      • def compare(x,y):
              the_max = x if x>y else y # x= 10,y = 20
              return x
        ret = compare(y = 22,x = 8)
        print(ret)
        
    • 混合参数

      • 位置,关键字混合传参(必须先按照位置传参,再按照关键字传参,不能给同一个变量传多个值)

      • def compare(x,y):
            the_max = x if x>y else y # x= 10,y = 20
            return x
         ret = compare(22,y = 8)
        print(ret)
        
  • 形参角度

    • 位置参数

      • 必须传,且有几个参数就传几个值。
    • 默认参数

      • 不传就是用默认的参数,如果传了就用传的。(将不经常变化的值设置成默认参数)

      • 默认参数的陷阱

      • def fuc(k,l = {}):
            l[k] = ‘sb‘
            print(l)
        
        func(jim)     #{‘jim‘:‘sb‘}
        func(tom)     #{‘jim‘:‘sb‘,‘tom‘:‘sb‘}
        # 如果默认参数的值是一个可变数据类型,
        # 那么每一次调用函数的时候,
        # 如果不传值就公用这个数据类型的资源
        
    • 动态参数

      • 可以有0个或任意个参数

      • *args 接收的是按照位置传参的值,组成一个元组

      • **kwargs接收的是按照关键字传参的值,组成一个字典

      • def func(*args,**kwargs):
            print(args,kwargs)
        func(1,‘r‘,t,a = 12,b = 567) #(1, ‘r‘, ‘t‘) {‘a‘: 12, ‘b‘: 567}
        
        def func(*args): # 站在形参的角度上,就是给变量加上*,组合传递来的值
            print(args)
        
        func(1,2,3,4,5)
        l = [2,7,4,1]
        func(*l) #站在实参的角度上,给一个序列加上*,将这个序列顺序拆散
        
    • 顺序:位置参数,*args,默认参数,**kwargs

初识函数

标签:应该   ade   变化   func   动态   container   注释   传递   containe   

原文地址:https://www.cnblogs.com/maystar/p/12853761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!