zoukankan      html  css  js  c++  java
  • python学习函数

    函数  对象  模块

    定义函数

      def MyFirstFunction():  

        print('第一个函数')

        ······

    调用函数

      MyFirstFunction()

    加入参数

      def MySecondFunction(name):

        print(name + '是谁')

    调用含参函数

      MySencondFunction('某某某')

      MySecondFunction(name='某某某')

    形参和实参:name是形参,传进来的具体参数才是实参

    给函数写说明文档用#注释

    查看注释文档

      函数._doc_

      help(函数)

    增加默认参数

      def MySecondFunction(name='abc')

    收集参数

      def test(*params)

        print(len(params), params[1])

      输入test(1,'abc',3,45)

      输出 4 'abc'

    收集参数加其他参数  

      def test(*params, num=6)  //最好加上默认值

        print(len(params), params[1], num)

      输入test(1, 'abc', 3, 45, num=9)  //必须加num=,否则报错

      输出 4 'abc' 9

      

    函数与过程

     python都是函数,都会有返回值

      def hello():

        print('Hello!')

      temp = hello  输出为  Hello!  但是temp=None

      没有return值的返回都是None

    返回值

      def back1():

        return [1, 'abc', 3.14]  //返回数组

      def back2():

        return 1, 'abc', 3.14  //返回元组

    局部变量和全局变量

      def sum(a, b):

        c = a + b

        return c  //c为局部变量,外部无法直接调用c

    函数可以读取调用全局变量

    如果在函数内修改全局变量,只对函数内有效,尽量避免

    可以在函数中用 globe c  将局部变量设为全局变量

    函数的内嵌

      def fun1():

        print('abc')

        def fun2():    //内嵌函数定义在fun1内部定义

          print('def')

        fun2()    //内嵌函数调用只能在fun1该函数内部使用

    函数的闭包

      def FunX(x):

        def FunY(y):

          return x*y

        return FunY

    调用  

      i = FunX(8)  

      i(5)  结果为40

    或者 

      FunX(8)(5)  

    使用闭包时注意内部和全局变量的关系

      def Fun1():

        x = 5

        def Fun2():

          x*=x

          return x

        return Fun2()    //函数错误,x在Fun2中被修改

    解决办法

      def Fun1():

        x = 5

        def Fun2():

          nonlocal x  //设置x为非局部变量

          x*=x

          return x

        return Fun2()

    匿名函数(lambda)

    精简且不需要定义命名函数名,简化可读性

      g = lambda x : 2 * x + 1

      就可直接调用g(5)

      g = lambda x, y : x + y

      直接调用g(3, 4)

    两个厉害的bif

     filter(Function or None, iterable)

    过滤器,去掉iterable中非ture的部分

      list(filter(None,[1, 0, Ture, False]))  结果为 [1, Ture]

    例如取奇数

      def odd(x)

        return x % 2

      temp = range(10)

      show = filter(odd, temp)

    list(show)  结果为  [1, 3, 5, 7, 9]

    简化  list(filter(lambda x : x % 2, range(10)))

    map(Function, iterable)  

    将iterable的值分别带入function函数中,组成数组输出

      list(map(lambda x : x*2, range(10)))  结果为  [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

      

  • 相关阅读:
    exkmp
    欧拉通路、回路
    你有多久没有看过星星
    trie树模板(统计难题)
    SPFA(热浪)
    codevs1958 刺激
    洛谷1290 欧几里得的游戏
    洛谷1016 旅行家的预算
    Spfa算法模板
    Tyvj2017清北冬令营入学测试
  • 原文地址:https://www.cnblogs.com/jdzhang1995/p/10234799.html
Copyright © 2011-2022 走看看