zoukankan      html  css  js  c++  java
  • Python基础(3):函数

    定义

    文档字符串,help(func)将显示文档字符串;

    函数中没有return是,返回的是None;

    >>> def func1(a):

             "this is a test func"

             print("a=", a)

            

    >>> help(func1)

    Help on function func1 in module __main__:

    func1(a)

        this is a test func

    >>> func1(2)

    a= 2

    参数

    参数是否可以修改?

    普通变量 – 传值 – 不能修改

    List – 引用 – 可以修改

    关键字参数

    好处:每个参数的含义更为清晰;参数出现的顺序不重要;

    >>> def func1(a, b):

             "this is a test func"

             print("a=", a)

             print("b=", b)

            

    >>> func1(b=2, a=1)

    a= 1

    b= 2

    参数默认值

    >>> def func1(a, b=3):

             "this is a test func"

             print("a=", a)

             print("b=", b)

            

    >>> func1(1)

    a= 1

    b= 3

    收集参数

    作用:支持任意个数的参数。

    使用方法:需要使用*,** 定义参数。在函数中,前者被定义为list,后者被定义为dict。

    反转过程:调用函数时,对tuple、dict类型分别使用*,**,可以将数据展开。

    >>> def func2(a, *b):

             print("a=", a)

             for x in b:

                       print(x)

    >>> func2(1,2,3,4,5)

    a= 1

    2

    3

    4

    5

    >>> l = range(4)

    >>> func2(2, *l)

    a= 2

    0

    1

    2

    3

    >>> def func3(a, **b):

             print("a=", a)

             for x,y in b.items():

                       print(x, y)

                      

    >>> func3(1, b=3, c=4, d =5)

    a= 1

    c 4

    b 3

    d 5

    >>> d = {"c":1, "d":2, "e":3}

    >>> func3(2, **d)

    a= 2

    c 1

    e 3

    d 2

    作用域

    Vars():返回一个dict,包含当前作用域中的变量。

    局部变量名会屏蔽全局变量名,可以通过globals() 获得全局变量的dict数据结构,然后通过这个;

    >>> x = 1

    >>> globals()["x"]

    1

    在函数内部可以读取全局变量。进行赋值操作时,将生成局部变量,如果要给全局变量赋值,必须使用global声明全局变量。

    >>> y=1

    >>> def func4(a):

             global y

             y = a

            

    >>> func4(4)

    >>> y

    4

    >>> 

    >>> z=1

    >>> def func5(a):

             z=a

    >>> func5(4)

    >>> z

    1

    函数可以嵌套定义。

    函数型编程机制

    Lambda表达式

    >>> f = lambda x: 2*x

    >>> f(3)

    6

    >>> 

    Map

    Filter

    Reduce

  • 相关阅读:
    filter()函数
    递归算法
    日志模块nb_log
    sys.argv[]简单阐述
    DB2中字符、数字和日期类型之间的转换
    Java 连接 Hive的样例程序及解析
    对hadoop namenode -format执行过程的探究
    想要成为牛人、大佬,那请至少拥有这12项技能!
    形象决定你的收入,别问为什么!
    年轻人,能用钱解决的,绝不要花时间(转)
  • 原文地址:https://www.cnblogs.com/weichsel/p/2379665.html
Copyright © 2011-2022 走看看