函数def及lambda的功能介绍

1. def函数的功能介绍

1. 函数的参数

  1. 无参数函数

    格式:def func_name():
    '''__doc__'''#函数的说明文档(内容)
    expression
    例如:def name_d():
    '''This is a name list!'''
    print(['zhang','wang','li'])
    name_d()#调用函数
    >>> ['zhang','wang','li']
    print(name_d.__doc__)#打印函数的说明文档
    >>> This is a name list!
    #函数不调用是不会执行操作的,但是会检测语法是否正确。调用函数的方法就是函数名()。

    注:强烈建议声明函数时书写函数的说明文档。

  2. 位置参数(形参)

    格式:def func_name(arg1,arg2,...):
    '''__doc__'''#函数的说明文档(内容)
    expression
    例如:def jiafa(a,b,c):
    '''This is jiafa!'''
    print(a+b+c)
    jiafa(1,2,3)
    >>> 6
    #函数的位置可以有一个,也可以有多个。声明函数时设置位置的个数必须与调用时输入的实参的个数一样,而且顺序要一致。
  3. 关键字参数

    格式:同上
    例如:def jiafa(a,b,c):
    '''This is jiafa!'''
    print(a+b+c)
    jiafa(a=2,1,3)
    >>> 6
    #关键字参数与上述的位置参数类似,只是关键字参数主要是在输入实参时,指定参数来赋值,可以改变函数参数的顺序。

    注:关键字参数只能放在位置参数后面。

  4. 默认参数

    格式:def func_name(arg1,arg2,...arg_n=value):
    '''__doc__'''#函数的说明文档(内容)
    expression
    例如:def jiafa(a,b,c=3):
    '''This is jiafa!'''
    print(a+b+c)
    jiafa(2,1)
    >>> 6
    #默认参数需要在声明函数时直接设定好值,但必须要放在其他形参的后面,调用函数时,默认参数可以再次赋值,也可以不指定。

    注:默认参数一定要在位置参数后面。

  5. 可变参数(动态参数)

    1. 动态参数之元祖

      格式:def func_name(*args):
      '''__doc__'''#函数的说明文档(内容)
      expression
      例如:def jiafa(*args):
      '''This is jiafa!'''
      print(args)
      jiafa(2,1,3)
      >>> (2,1,3)
      #一个*表示传入的参数是一个元祖,调用函数时,将传入的实参都作为元祖的元素传入。如果调用时未传入参数,则会传入一个空元祖。
    2. 动态参数之字典

      格式:def func_name(**args):
      '''__doc__'''#函数的说明文档(内容)
      expression
      例如:def jiafa(**args):
      '''This is jiafa!'''
      print(args)
      jiafa(2='a',1='b',3='c')
      >>> {1:'b',2:'a',3:'c'}
      #两个**表示传入的参数是一个字典,调用函数时,需要使用关键字参数的形式。调用时未传入参数,则会传入一个空字典。

注:函数所有参数的传入顺序为:

1. 位置参数
2. 关键字参数
3. 默认参数
4. 动态参数(元祖)
5. 动态参数(字典)

2. 函数的返回值

  1. 返回值为None

    格式:def func_name():
    '''__doc__'''#函数的说明文档(内容)
    expression
    例如:def jiafa():
    '''This is jiafa!'''
    print('Hello')
    result = jiafa()#声明函数的返回值
    print(result)
    >>> 'Hello'
    >>> None
    #函数中没有指定返回值,因此该函数的返回值为None
  2. 指定返回值

    格式:def func_name():
    '''__doc__'''#函数的说明文档(内容)
    expression
    return value#声明函数的返回值
    例如:def jiafa():
    '''This is jiafa!'''
    print('Hello')
    return 123
    result = jiafa()
    print(result)
    >>> 'Hello'
    >>> 123
    #由于函数中使用return声明了函数的返回值,因此该函数的返回值不为空。
  3. 多个返回值

    格式:同上
    例如:def fan():
    '''This is a twos'''
    print('Hello')
    return 123,'abc',[1,3,]
    result = fan()
    print(result)
    >>> 'Hello'
    >>> (123, 'abc', [1, 3])
    #当函数返回值为多个对象时,将所有对象以元组的形式返回。

3. 函数的变量

  1. 全局变量global

    全局变量是指在函数外面声明的变量,(在函数内部使用需要使用global才能调用全局变量)

    格式:variable = value
    def func_name():
    '''__doc__'''
    global variable
    expression
    #全局变量一般不提倡在函数内部进行调用,因为在函数内部调用,函数外面的值也跟随着变化了。
  2. 局部变量local

    局部变量是在函数内部声明的变量

全局变量和局部变量的有效范围

1. 全局变量在函数外部可以正常使用
2. 全局变量在函数内部也可以使用(需要用global声明)
3. 局部变量在函数内部可以正常使用
4. 局部变量在函数外部不可以被访问

注:特殊情况:当全局变量并不是一个字符串时,在函数内部是可以对其进行修改的,例如:列表、字典、集合等。

3.域外变量nonlocal

把域外或者父级函数的变量传入到域内或者子级函数中进行使用。

    格式:def func_name1():
variable = value
def func_name2():
nonlocal variable
expression
return func_name2()
#域外变量常用于闭包函数中,而且在子级函数中使用不影响父级函数中的使用。

2. 简单函数lambda的功能介绍

lambda表达式是简单函数def的优化,减少代码的行数。

格式:lambda args:expression
  1. 使用def

    例如:def jia(n1):
    '''函数的每个参数加10'''
    n = n1+10
    print(n1)
    jia(3)
    >>> 13
  2. 使用lambda

    例如:n = lambda n1:n1+10
    print(n(3))
    >>> 13

注:lamdba是一个表达式而非语句,也不是代码块。lambda也支持默认参数、关键字参数、动态参数等。

Python中def及lambda的功能介绍的更多相关文章

  1. Python中模块之os的功能介绍

    Python中模块之os的功能介绍 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module ...

  2. Python中模块之sys的功能介绍

    sys模块的功能介绍 1. sys的变量 argv 命令行参数 方法:sys.argv 返回值:list 例如:test1.py文件中有两句语句1.import sys 2.print(sys.arg ...

  3. Python中生成器和迭代器的功能介绍

    生成器和迭代器的功能介绍 1. 生成器(generator) 1. 赋值生成器 1. 创建 方法:x = (variable for variable in iterable) 例如:x = (i f ...

  4. Python中模块之copy的功能介绍

    模块之copy的功能介绍 copy主要分两种: 1.浅拷贝 2.深拷贝 赋值: 在python中赋值算特殊的拷贝,其实赋值可以理解为同一个对象有两个名字,所以当其中一个发生变化,另一个也跟着会变化. ...

  5. Python中模块之re的功能介绍

    re模块的功能介绍 1. 方法 match 从开头开始查找 方法:re.match(pattern,string,flags=0) 返回值:<class '_sre.SRE_Match'> ...

  6. Python中模块之queue的功能介绍

    模块之queue的功能介绍 队列的分类: 队列主要要分为两种 1.双向队列 2.单项队列 1. 单项队列 创建单项队列 格式:queue.Queue(obj) 例如:que = queue.Queue ...

  7. Python中模块之random的功能介绍

    random的功能介绍 random模块的方法如下: betavariate 获取一个range(0,1)之前的随机浮点数 方法:random.betavariate(alpha,beta) 返回值: ...

  8. Python中的yield生成器的简单介绍

    Python yield 使用浅析(整理自:廖 雪峰, 软件工程师, HP 2012 年 11 月 22 日 ) 初学 Python 的开发者经常会发现很多 Python 函数中用到了 yield 关 ...

  9. Python中的装饰器的简单介绍02

    这篇博文转载自伯乐在线的12步轻松搞定python装饰器,重构成python3. 1. 函数 在python中,函数通过def关键字.函数名和可选的参数列表定义.通过return关键字返回值.我们举例 ...

随机推荐

  1. zookeeper 入门系列-理论基础 – zab 协议

    上一章讨论了paxos算法,把paxos推到一个很高的位置.但是,paxos有没有什么问题呢?实际上,paxos还是有其自身的缺点的: 1. 活锁问题.在base-paxos算法中,不存在leader ...

  2. phalcon环境的搭建和dll扩展下载与选择

    phalcon需要下载一个扩展的dll文件才能运行项目 其中需要注意dll放在一个php扩展目录中windows下php/ext/,还需要在两个Php.ini文件中增加扩展说明,一般只需要更改 D:\ ...

  3. tensorflow让程序学习到函数y = ax + b中a和b的值

    今天我们通过tensorflow来实现一个简单的小例子: 假如我定义一个一元一次函数y = 0.1x + 0.3,然后我在程序中定义两个变量 Weight 和 biases 怎么让我的这两个变量自己学 ...

  4. Python/MySQL(二、表操作以及连接)

    Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...

  5. uva 10917 Walk Through The Forest

    题意: 一个人从公司回家,他可以从A走到B如果从存在从B出发到家的一条路径的长度小于任何一条从A出发到家的路径的长度. 问这样的路径有多少条. 思路: 题意并不好理解,存在从B出发到家的一条路径的长度 ...

  6. oracle12c:通过oracle客户端工具配置tns,并使用sqlldr进行批量导入数据

    通过oracle客户端工具配置tns: 进入oracle配置工具“Net Configuration Assistant”-> 点击“下一步”,完成tns配置. 测试是否tns可用 命令:tns ...

  7. jacascript DOM节点——节点内容

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! innerHTML 在读模式下,返回与调用元素的所有子节点(包括元素.注释和文本节点)对应的 HTML 标 ...

  8. Delphi 10.2.3 + Xcode 9.2 开发 IOS 程序,免证书+免越狱,真机调试

    工具列表: 1,delphi 10.2.3 + PAServer19.0. 2,配置好一些的 PC 一台,建议至少 4 代 intel i5 + 16G + 256GSSD,低于此配置将产生拖延症. ...

  9. MySQL中的字符串函数

    使用字符串数据 当使用字符串数据时,可以使用下面的字符数据类型. CHAR 固定长度.不足部分使用空格填充的字符串. varchar 变长字符串. text(MySQL和SQL Server)或CLO ...

  10. TCP/IP学习笔记:TCP传输控制协议(一)

    1 TCP的服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向用户提供一种面向连接的,可靠地字节流服务.两个使用TCP的应用,在彼此交换数据之前必须先建立一个TCP连接,在一个TCP连接中 ...