python - 函数

发布时间:2019-08-20 07:47:09编辑:auto阅读(1775)


    *********************函数****************************

                                                         ---乐高积木之函数


    定义函数
    def关键字,依次写出函数名、括号、括号中的参数和冒号 :
    • 在缩进块中编写函数体,函数的返回值用 return 语句返回。

    def func():
    pass
    return

    总结:

    定义函数时,函数不执行
    调用函数时,函数才执行


    ## 有参数的函数


    ***********形式参数**********
    #!/usr/bin/env python
    #coding:utf-8

    def add(x,y):
      print x + y
    #实参,x=1,y=2
    add(1,2)


    Screenshot from 2018-01-08 21-24-08.png



    ***********默认参数**************
    def mypow(x,y=2):
       print x**y

    mypow(2)


    Screenshot from 2018-01-08 21-29-41.png

    Screenshot from 2018-01-08 21-29-49.png

    *************可变参数********

    def add(*args):
       sum = 0
       for i in args:
          sum += i
       print sum
    add(1,2,3)


    Screenshot from 2018-01-08 21-34-24.png

    Screenshot from 2018-01-08 21-35-19.png

    ***************关键字参数************
    kwarges实质是一个字典



    Screenshot from 2018-01-08 21-41-13.png

    参数总结
    • 必选参数
    •默认参数:默认参数一定要用不可变对象
    •可变参数:*args 是可变参数,args 接收的是一个 tuple
    •关键字参数:
    **kwarges是关键字参数,kwarges 接收的是一个dict
    •对于任意函数,都可以通过类似 func(*args, **kw) 的形式调用它

    多种参数混合使用时,其参数顺序为:必选参数,默认参数,可变参数,关键字参数

    #返回值


    ***函数中如果没有return时,默认返回None;

    Screenshot from 2018-01-08 22-03-23.png

    #实质上python只能返回一个值;
    #间接通过元组返回多个值;


    def fun(*args):
        """

        :param args:
        :return:
        """
        return max(args),min(args)

    print fun(11,2,34,5,66)

    [root@python code.6]# python canshu.py
    (66, 2)

    Screenshot from 2018-01-08 22-08-54.png

    [root@desktop code4]# python test.py
    (4, 1)


    函数的作用域

    变量的作用域
    局部
    变量:只能在函数内部使用的变量
    全局变量:在整个程序中使用的变量
    global关键字:强制将局部变量转换为全局变量


    Screenshot from 2018-01-08 22-12-23.png


    Screenshot from 2018-01-08 22-12-33.png


    *global关键字必须要先声明,在赋值;

    #全局变量
    num = 1
    def fun():
        # global声明num为全局变量
        global num
        # 局部变量
        num = 5



    Screenshot from 2018-01-08 22-13-14.png


    高级特性

    迭代
    是否可以for循环遍历的对象;
    isinstance判断是否可迭代;


    Screenshot from 2018-01-08 22-17-03.png

    列表生成式


    生成列表的公式
    需求: 生成一个列表, 返回1-100中偶数的平方;

    方法1:
    li = []
    for i in range(2,101,2):
      li.append(i**2)
    print li


    Screenshot from 2018-01-08 22-22-30.png




    方法2:

    li = [i**2 for i in range(2,101,2)]
    print li

    Screenshot from 2018-01-08 22-24-58.png


    Screenshot from 2018-01-08 22-25-24.png

    变异的列表生成式

    In [17]: # for 循环嵌套 if 语句
    [i**2 for i in range(2,20) if i%2==0]
    Out[17]: [4, 16, 36, 64, 100, 144, 196, 256, 324]

    In [20]: # for 循环嵌套 for 循环 , 两个字符串的全排列
    [i+j for i in 'xyz' for j in '123']
    Out[20]: ['x1', 'x2', 'x3', 'y1', 'y2', 'y3', 'z1', 'z2', 'z3']

    练习:找出/etc下文件中以.conf结尾的文件;

    提示:
    - os.listdir("/etc")
    - s.enswith(".conf")

    import os
    li=[i for i in os.listdir("/etc") if i.endswith(".conf")][:5] #显示前五个
    print li

    Screenshot from 2018-01-08 22-32-45.png

    Screenshot from 2018-01-08 22-32-59.png

关键字