zoukankan      html  css  js  c++  java
  • 初识python 函数(定义,传参,返回值)

    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

     

    匿名函数练习题:

    将列表内的字典按照年龄进行排序:
    infors = [{'name':'laowang','age':23},{'name':'ab','age':34},{'name':'bf','age':43}]

     
  • 相关阅读:
    PHP获取指定的时间戳
    Thinkphp实现excel数据的导出
    ThinkPHP按月统计订单总金额
    PHP获取本月起始和终止时间戳
    ThinkPHP 判断一个更新操作是否成功
    js 通过浏览器直接打开应用程序(IOS,Android)并判断浏览器内核
    ThinkPHP 后台管理删除、编辑操作(通过数组传ID)
    PHP面向对象
    【转】Chrome调试鼠标悬停后出现的元素
    【重要】Selenium2+python自动化44-元素定位参数化(find_element)
  • 原文地址:https://www.cnblogs.com/pantom0122/p/9395036.html
Copyright © 2011-2022 走看看