码迷,mamicode.com
首页 > 编程语言 > 详细

初识python 函数(定义,传参,返回值)

时间:2018-07-31 13:25:29      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:*args   括号   add   返回值   输入输出   ret   turn   --   没有   

python基础(二):

菜鸟教程基础知识讲解的非常全面,内容选择我认为的重点输出一遍

函数:

定义一个函数:

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  

def fun(arg):
    pass
    return arg

# 函数调用语法
fun(arg)
  • arg:argument,参数(也叫prarmeter) ,任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • def:define,定义,创建函数 ,函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
  • 代码缩进表示语句块,表明代码从属关系
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

 

 

函数的调用:

  将参数传入已经定义好的函数中,便可以调用此函数

def printme( str ):
   "打印任何传入的字符串"
   print (str)
   return
 
# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")

以上实例输出结果:
我要调用用户自定义函数!
再次调用同一函数

 

 

函数返回值:

  • 所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果

  • #定义函数
        def add2num(a, b):
            return a+b
    
        #调用函数,顺便保存函数的返回值
        result = add2num(100,98)
    
        #因为result已经保存了add2num的返回值,所以接下来就可以使用了
        print (result) --->198

    函数返回值可以为多个:

  • def divid(a, b):
    ... shang = a//b
    ... yushu = a%b 
    ... return shang, yushu
    ...
    >>> sh, yu = divid(5, 2)
    >>> sh
    5
    >>> yu
    1

 

 

4种函数的类型:

函数根据有没有参数,有没有返回值,可以相互组合,一共有4种

  • 无参数,无返回值

    •   
      # 函数定义,初级
      def numsum():
          a = 5
          b = 10
          c = a + b
          print(c)
      
      # 函数执行
      numsum() --->15

       

  • 无参数,有返回值

  • 有参数,无返回值

  • 有参数,有返回值

    • 输入参数:
      • 形参:形式参数,声明函数时,括号()中的参数
      • 实参:实际参数,调用函数是,括号()中的参数
      • 实参将值传给形参,本质上是变量赋值
      • 返回值:return
        • 会终止函数执行(return是函数的最后一句),并返回一个值给调用方
        • 不带表达式的return返回None
        • Print()不是返回值,只是输出信息到界面
        • # 函数定义,带输入输出
          def numsum2(a, b):
              c = a + b
              return c
          
          # 函数调用
          d = numsum2(10, 20)
          print(d)  --->30

           

函数中参数的类别:

  • 必需参数
    •   
      #可写函数说明
      def printme( str ):
         "打印任何传入的字符串"
         print (str)
         return
       
      #调用printme函数
      printme()

       

  • 关键字参数
    •   
      def about(name,course,site):
          print (name,course,site)
        
      about(site=www.baidu.com,name=green,course=100)   ##以关健字方式传入参数(可以不按顺序)
       

       

  • 默认参数
    •   
      def about(name,course,site):
          print (name,course,site)
        
      about(jim,100,www.baidu.com)   ## 必须按顺序传参

       

  • 不定长参数
    •   
      • 非关键字可变参数(元组)
        • 放在默认值参数后面
        • 可将传入的不确定数量的默认参数聚合为元组方便函数使用
        • def fun(a, b, *args):
              print(a)
              print(b)
              print(args)
              print("="*30)
              ret = a + b
              for i in args: #便利args中的元素
                  ret += i
              return ret
          
          print(fun(1,2,3,4))
          
          结果:
          1
          2
          (3, 4)
          ==============================
          10

           

      • 关键字可变参数(字典)
        • 放在非关键字可变参数后面
        • 可将传入的不确定数量的默认值参数聚合为字典方便函数使用
        • def fun(a, b, *args, **kwargs):
              print(a) 
              print(b)
              print(args)
              print(kwargs)
          
          fun(1, 2, 3, 4, name = "hello", age = 20)
          
          结果:
          1
          2
          (3, 4)
          {name: hello, age: 20}
尽量避免多种参数格式混合(主要是两种可变参数)
多参数混合时注意顺序:
    一般顺序是:默认参数,默认值参数,非关键字可变参数,关键字可变参数
    注意:带关键字的参数必须放在最后

匿名函数:

  • 语义上讲,lambda 只是普通函数定义中的一个语法技巧,书写代码更简洁(但不易懂)
  • lambda 是一个表达式(非代码块),比 def 简单,仅能封装有限的逻辑如if else分支,不能使用多项分支和循环,不适合复杂操作
# 普通函数
def def_sum(a, b):
    return a + b

def_sum(5, 10)

# 匿名函数:变量名 = lambda 参数... : 表达式计算
lambda_sum = lambda a, b: a + b
lambda_sum(5, 10)
--->15
分支匿名函数

# 普通函数
def def_gender(g):
    if g == 1:
        return 男性
    else:
        return 女性

def_gender(0)

# 匿名函数:变量名 = lambda 参数... : 分支1的值 if 判断条件 else 分支2的值
lambda_gender = lambda a: 男性 if a == 1 else 女性
lambda_gender(1)
--->男性
# 普通函数
def absum(a, b):
    return a + b

def def_sum2(a, b, c):
    return absum(a, b) + c

def_sum2(1,2,3)

# 匿名函数:变量名 = lambda 参数... : 其他函数组成的表达式
def absum(a, b):
    return a + b

lambda_sum = lambda x, y, z: absum(x, y) + z
lambda_sum(1,2,3)

--->6

 

 

初识python 函数(定义,传参,返回值)

标签:*args   括号   add   返回值   输入输出   ret   turn   --   没有   

原文地址:https://www.cnblogs.com/pantom0122/p/9395036.html

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