• python-4-函数-装饰器,生成器


    函数的定义和使用

    1 def test(x):       # x代表形参
     2     '''
     3     2*x+1
     4     :param x:整形数字
     5     :return:返回计算结果
     6     '''
     7     y = 2*x+1
     8     return y
     9 p = test(3)     # test()表示运行名为test函数,3代表实参,给x进行赋值
    10 print(p)

    函数的定义:

    • def: 表示函数的关键字
    • 函数名: 函数的名称, 根据函数名调用函数
    • 函数体: 函数中进行一系列的逻辑计算
    • 参数: 为函数执行完毕后, 可以给调用者返回数据

    一. 为什么要用函数?

    1. 减少代码量
    2. 保持一致性
    3. 易维

    二. 函数的参数

    函数有三种不同的参数:

    • 普通参数
      # ######### 定义函数 #########

        # name 叫做函数func的形式参数,简称:形参
        def func(name):
            print name
        # ######### 执行函数 ######### 
        #  'wupeiqi' 叫做函数func的实际参数,简称:实参
        func('wupeiqi')
    • 默认参数

        def func(name, age = 18):
            print "%s:%s" %(name,age)
        # 指定参数
        func('wupeiqi', 19)
        # 使用默认参数
        func('alex')
      
        注:默认参数需要放在参数列表最后
    • 动态参数 *args

        def func(*args):
            print args
      
        # 执行方式一
        func(11,33,4,4454,5)
      
        # 执行方式二
        li = [11,2,2,3,3,4,54]
        func(*li)
    • 动态参数 **kwargs

        def func(**kwargs):
            print args
      
        # 执行方式一
        func(name='wupeiqi',age=18)
      
        # 执行方式二
        li = {'name':'wupeiqi', age:18, 'gender':'male'}
        func(**li)

    三. 函数的变量

    函数的变量可分为 全局变量和局部变量

    全局变量(大写)

    定义:没有缩进的变量

    局部变量(小写)

    定义:子程序下定义的变量

    name = 'lhf'                 # 这里就指全局变量
    
    
    def change_name():
        name = '帅了一比'      # 这里就指局部变量
        print('change_name', name)
    
    
    change_name()
    print(name)    
    
    结果
    change_name 帅了一比
    lhf

    global和nolocal

    global声明是全局变量,nolocal指定上一级变量

    未声明全局变量

    x = 99
    def func():
        x = 88
    func()
    print(x)     #输出99

    声明全局变量

    x = 99
    def func()
        global x
        x = 88
    func()
    print(x)    #输出88

    未指定上一级变量

    def func():
        count = 1
        def foo():
            count = 12
        foo()
        print(count)
    func()    #输出1

    指定上一级变量

    def func():
        count = 1
        def foo():
            nonlocal count
            count = 12
        foo()
        print(count)
    func()     #输出12

    四. 递归函数

    ps: 用的好的都是大牛~

    就是函数自己调用自己

    特性:

    1. 必须有一个明确的结束条件,

    2. 每次进入深一层递归时,问题规模都应有所减少

       def calc(n):
           print(n)
           if int(n / 2) == 0:
               return n # 当上面的条件成立后一个真值,返回到函数
           res = calc(int(n / 2))    
           print(n,res) 
           return res # 返回res的值,要将真值一层一层传递回去
      
       calc(10)   

    五. lamabda匿名函数

    lambda用法,冒号之前的是入参,冒号之后的是表达式,返回的值,最简单的函数

    print [(lambda x:x*x)(x)for x in range(11)]
    #结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    print (lambda x:x*x)(3)
    #结果:9
    g=lambda x:x*x
    print g(4)
    #结果:16

    八,递归

    # 自己调用自己
    def func():
        print("哈哈")
        func()
    
    func()
    # 官方文档上给的层数是 1000  实际测试的时候 998 997
    

      

  • 相关阅读:
    手机web页面调用手机QQ实现在线聊天的效果
    Java EE 6 最终草案暗示了平台的未来发展方向
    NetBeans 时事通讯(刊号 # 77 Oct 21, 2009)
    Java 依赖注射规范(JSR330)正式发布
    NetBeans IDE 6.8 里程碑 2 已经可用!
    Java 依赖注射规范(JSR330)正式发布
    对面向对象和面向过程的一些新理解
    NetBeans 时事通讯(刊号 # 76 Oct 13, 2009)
    Java EE 6 最终草案暗示了平台的未来发展方向
    “当前不会命中断点。源代码与原始版本不同”的问题的有效解决办法
  • 原文地址:https://www.cnblogs.com/zhaobin-diray/p/9318908.html
Copyright © 2020-2023  润新知