zoukankan      html  css  js  c++  java
  • python学习之函数(三)--函数与过程

    1.函数与过程的区别:

    有返回值的是函数,没有返回值的是过程;

    函数(function):有返回值

    过程(procedure):简单特殊,没有返回值

    严格来说,python只有函数,没有过程。没有返回值的函数,默认有一个返回值none

    2.返回值:

    返回值可以是多种类型,也可以返回多个数据,可以用数组打包返回,也可以用元组一起返回,没有类型限制

    3.函数变量的作用域:

    局部变量(local variable):在函数中定义的参数和变量是局部变量,在函数外是无法使用的,因为函数调用完之后,栈就将函数数据清除,所以外部是无法调用的

    全局变量(global variable):作用域是整个模块,整个代码都可以访问,可以在函数中使用,最好不要在函数中修改,如果在函数中修改全局变量,会在函数中,新建一个局部变量,名字和全局变量一致,但是不会影线全局变量的值

    def decision(price,rate):

    final_price = price * rate
    old_price = 70
    return final_price

    old_price = float(input("输入原价:"))
    rate = float(input("输入折扣:"))
    print(old_price)
    print("折扣价格:",decision(old_price,rate)

    4.global关键字:可以用来修改成全局变量

    count = 5
    def test1():
    count = 10
    print(count)
    print(count

    5.内嵌函数:在函数内部定义另一个函数;

    def fun1():
    print("fun1()正在被调用")
    def fun2():
    print("fun2()正在被调用")
    fun2()
    fun1()
    fun2()
    执行结果:
    fun1()正在被调用
    fun2()正在被调用
    Traceback (most recent call last):
      File "/Users/zoezhang/PycharmProjects/learnpython/learn-内嵌函数.py", line 8, in <module>
        fun2()
    NameError: name 'fun2' is not defined

    注意:内嵌函数在调用的时候,只能在定义函数的内部能调用,不能全局调用

    5.闭包():如果在一个内部函数里,对外部作用域(但不是在全局作用域)里进行引用,则内部函数就被认为是闭包

    注意:闭包是由内嵌函数演变而来,全局是不能调用闭包的

    #闭包
    def funx(x):
    def funy(y):
    return x*y
    return funy
    #调用方法一
    print(funx(1)(2))
    #调用方法二
    i=funx(8)
    print(i(5))

    在python3之前,内部函数是不能直接更改全局变量的,会报错,需要间接使用容器类型来解决,因为容器类型不是存储在栈里,所以可以使用,更改方式如下:
    #----------------
    def fun1():
    x=[2]
    def fun2():
    x[0] *= x[0]
    return x[0]
    return fun2()
    print(fun1())
    在python3之后,增加一个关键字nonlocal(同类型函数关键字glocal)
    #----------
    def fun1():
    x=4
    def fun2():
    nonlocal x
    x*=x
    return x
    return fun2()
    print(fun1())

    global适用于函数内部修改全局变量的值; nonlocal适用于嵌套函数中内部函数修改外部变量的值

    如果没有使用以上关键字,对全局变量或者外部变量进行修改,python会默认将全局变量隐藏起来

    
    
    


     
  • 相关阅读:
    [php代码]从svn获取指定版本,并同步到ftp上。
    java程序用pid重启
    Gearman安装,测试笔记
    ant编译android项目
    jquery代码收藏
    [读书笔记]读《code complete》有感
    无法解析的外部符号_main,该符号在函数_tmainCRTStartup中被引用
    4路电梯调度——pair program总结
    阅读作业2
    必应缤纷桌面的使用测试
  • 原文地址:https://www.cnblogs.com/zoeya/p/9179178.html
Copyright © 2011-2022 走看看