zoukankan      html  css  js  c++  java
  • python学习-函数和lambda表达式(五)

     5.1函数基本语法

    # 函数语法格式
    
    def 函数名(形参列表):
        """""函数的说明文档"
        //由零条或多条可执行语句组成的函数
        [return [返回值]]    
    
    详细说明:
    1.函数名建议由一个或多个有意义的单词连缀而成,每个单词的字母全部小写,单词间用_分隔
    对于返回多个值的情况:可将多个值包装成列表后返回,也可直接返回多个值(python会自动将多个返回值封装成元组)
    2.函数的返回值可以是一个值、多个值或者为表达式
    3.函数声明之后、函数体之前的部分,视为函数的说明文档,可通过函数名.__doc__查看
    函数定义
    def sum_and_avg(list):
        sum = 0
        count = 0
        for e in list:
            # 如果元素e是数值
            if isinstance(e, int) or isinstance(e, float):
                count += 1
                sum += e
        return sum, sum / count
    my_list = [20 , 15 , 2.8,'a', 35 , 5.9, -1.8]
    tp = sum_and_avg(my_list)
    print(tp) # 返回结果是元组
    s, avg = sum_and_avg(my_list) # 可以使用多个变量接受函数返回的多个值(序列解包)
    print(s)
    print(avg)
    输出结果:
    (76.9, 12.816666666666668)
    76.9
    12.816666666666668
    多个返回值

    5.2函数参数

    位置参数:根据位置传入参数

    关键字参数:根据参数名来传入参数

    def girth(width, height):
        print("", width)
        print("height:", height)
        return 2 * (width + height)
    
    print(girth(3.5, 4.8))  # 位置参数
    print(girth(width=3.5, height=4.8)) # 关键字参数
    print(girth(height=4.8, width=3.5)) # 关键字参数
    print(girth(3.5, height=4.8)) # 调用函数时混合使用关键字参数和位置参数,则关键字参数必须位于位置参数之后
    View Code

    参数默认值:

    """
    参数默认值:
    在某些情况下,程序需要在定义函数时为一个或多个形参指定默认值-这样在调用函数时就可以省略为该形参传入参数值,而是直接使用该形参的默认值
    """
    
    def say_hi(name='孙悟空', message="欢迎来到疯狂软件"):
        print(name, ",您好")
        print("消息是:", message)
    
    
    say_hi()  # 全部使用默认值
    say_hi("白骨精")
    say_hi("白骨精", "欢迎学习python")
    say_hi(message="欢迎学习python")
    say_hi('白骨精', message="欢迎学习python")  # 调用函数时关键字参数必须位于位置参数的后面
    
    输出结果:
    孙悟空 ,您好
    消息是: 欢迎来到疯狂软件
    白骨精 ,您好
    消息是: 欢迎来到疯狂软件
    白骨精 ,您好
    消息是: 欢迎学习python
    孙悟空 ,您好
    消息是: 欢迎学习python
    白骨精 ,您好
    消息是: 欢迎学习python
    View Code

    可变参数   *变量名 :可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple

    """形参前加个*意味着该参数可以接收多个参数值,多个参数值被当作元组传入"""
    def test(*nums):
        for i in nums:
            print(i)
    
    
    aa = [1, 2]
    print('------')
    test(aa)  # 不加*的话会被当做一个参数
    print('------')
    test(*aa)
    print('------')
    test(3, 4)
    输出结果:
    ------
    [1, 2]
    ------
    1
    2
    ------
    3
    4
    View Code
    版本
    函数定义
    调用
    说明
    不使用可变参数
    def calc(numbers):
    sum = 0
    for n in numbers:
    sum = sum + n * n
    return sum
    calc([1, 2, 3])
    调用的时候,需要先组装出一个list或tuple
    使用可变参数
    def calc(*numbers):
    sum = 0
    for n in numbers:
    sum = sum + n * n
    return sum
    calc(1, 2)
    如果已经有一个list需要调用
    方法一:(此方法太繁琐)
    >>> nums = [1, 2, 3]
    >>> calc(nums[0], nums[1], nums[2])
    方法二:
    >>> nums = [1, 2, 3]
    >>> calc(*nums)
    14
     
    关键字参数 **kw
    关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
    def person(name, age, **kw):
        print('name:', name, 'age:', age, 'other:', kw)
    
    person('Michael', 30)
    person('Bob', 35, city='Beijing')
    person('Adam', 45, gender='M', job='Engineer')
    
    extra = {'city': 'Beijing', 'job': 'Engineer'}
    person('Jack', 24, city=extra['city'], job=extra['job']) # 可以先组装出一个dict,然后,把该dict转换为关键字参数传进去
    
    extra = {'city': 'Beijing', 'job': 'Engineer'}  # 简化一下
    person('Jack', 24, **extra)
    
    outputs:
    name: Michael age: 30 other: {}
    name: Bob age: 35 other: {'city': 'Beijing'}
    name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
    name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
    name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

     函数参数的传递机制:

    5.4函数的高级内容

  • 相关阅读:
    geoserver发布地图服务WMTS
    geoserver发布地图服务WMS
    geoserver安装部署步骤
    arcgis api 3.x for js 入门开发系列十四最近设施点路径分析(附源码下载)
    arcgis api 3.x for js 入门开发系列十三地图最短路径分析(附源码下载)
    cesium 之自定义气泡窗口 infoWindow 后续优化篇(附源码下载)
    arcgis api 3.x for js 入门开发系列十二地图打印GP服务(附源码下载)
    arcgis api 3.x for js 入门开发系列十一地图统计图(附源码下载)
    arcgis api 3.x for js 入门开发系列十叠加 SHP 图层(附源码下载)
    arcgis api 3.x for js入门开发系列九热力图效果(附源码下载)
  • 原文地址:https://www.cnblogs.com/wang-mengmeng/p/11271306.html
Copyright © 2011-2022 走看看