美文网首页
Python学习总结【连载】(八)

Python学习总结【连载】(八)

作者: Juttachen_8e9d | 来源:发表于2018-06-22 17:00 被阅读16次

Python学习总结【连载】(八)

2018.06.22 Juttachen


概述

+ 26 函数补充

  • 函数的返回值
  • 函数调用表达式
  • return
  • 函数的结束

+ 27 作用域


二十六、函数补充

1.函数的返回值:

a.就是函数调用表达式的值
b.就是return关键字后的表达式的值
c.就是函数返回给调用者的值

如何看一个函数的返回值是多少?
就看return后面的结果!!

2.函数调用表达式:就是调用函数的那个表达式(这个表达式是有值的,默认是None)

    def func1():
        print('hello world')
    # func1()就是函数调用表达式,他是一个值。
    result = func1()
    print(result,func1())

注意:普通的值能做的事情,函数调用表达式都能做,例如:给变量赋值,打印(可以作为实参传给函数),还有运算等

例子:将列表作为参数

    def del_list(list1):
        index = 0
        while index < len(list1):
            if list1[index] % 2 == 0:
                del list1[index]
                index -= 1
            index += 1
        print(list1)

    list2 = [1,2,3,4]
    del_list(list2)

注意:将对象变量作为实参传递给函数,如果在函数中改变了列表的元素,那么原来的列表元素也会变。
如果不想两个对象都变了,那么就要copy或者切片一下。

    list2 = [1,2,3,4]
    del_list(list2[:])

3.函数的调用过程

a.函数声明:函数体在声明的时候是不会执行的
b.函数调用过程:
第一步:将实参传递给形参(传参:用实参给形参赋值)
第二步:执行函数体
第三步:获取返回值(这个时候会回到函数调用的位置,并且让函数调用表达式的值)

二十七、作用域

1.概述

变量的作用域:变量可以使用的范围
python中只有函数、类会产生作用域。
在作用域中声明的变量我们叫局部变量。
在产生作用域外的位置声明的变量叫全局变量,都是从声明开始起作用的。

2.全局变量:

声明在产生作用域外的变量。(即声明在函数和类外面的变量)
使用范围:从声明开始到整个文件结束的任何位置都可以使用。
注意:写在if语句、for/while循环体中的变量也是全局变量。if语句和循环不会影响变量的作用域。

    a = 10
    print(a)

    if True:
        print('if',a)

    for x in range(3):
        print('for',a)

    def func1():
        print('func1',a)
    func1()

3.局部变量

在Python中声明在函数和类的变量都是局部变量。

    def func3():
        # d就是一个局部变量,使用范围只是从声明开始到函数结束。
        d = 'a'
        print('func3',d)

        if True:
            print(d) # 这个就是对的,因为在函数内

    func3()
    # print(d) NameError: name 'd' is not defined
    # if True:
    #   print('if',d) NameError: name 'd' is not defined

    aa = 100 # 全局变量aa
    def func4():
        aa = 200 # 重新声明一个局部变量 aa (不过两个同名了)
        print('func4',aa)

    func4()
    print(aa)

注意:在函数中普通赋值不能修改全局变量的值,只能使用。

在函数或类中想修改全局变量的值?
使用global关键字

    bb = 100
    def func5():
        # 想在这个地方去修改全局变量bb的值为200
        global bb # 这个时候不能直接赋值,这个的意思是提醒机器bb是全局变量。
        bb = 200

    func5()
    print(bb)

相关文章

网友评论

      本文标题:Python学习总结【连载】(八)

      本文链接:https://www.haomeiwen.com/subject/vtekyftx.html