作用域与自定义函数

Python 函数入门

Hugo Bowne-Anderson

Instructor

函数作用域速览

  • 脚本中并非所有对象都可在任意位置访问

  • 作用域:对象或名称可访问的程序范围

    • 全局作用域:在脚本主体中定义

    • 局部作用域:在函数内定义

    • 内置作用域:预定义内置模块中的名称

Python 函数入门

全局 vs. 局部作用域(1)

def square(value):
    """Returns the square of a number."""
    new_val = value ** 2
    return new_val

square(3)
9
new_val
<hr />----------------------------------------------------------------
NameError                       Traceback (most recent call last)
<ipython-input-3-3cc6c6de5c5c> in <module>()
<hr />-> 1 new_value
NameError: name 'new_val' is not defined
Python 函数入门

全局 vs. 局部作用域(2)

new_val = 10

def square(value):
    """Returns the square of a number."""
    new_val = value ** 2
    return new_val

square(3)
9
new_val
10
Python 函数入门

全局 vs. 局部作用域(3)

new_val = 10

def square(value):
    """Returns the square of a number."""
    new_value2 = new_val ** 2
    return new_value2

square(3)
100
new_val = 20

square(new_val)
400
Python 函数入门

全局 vs. 局部作用域(4)

new_val = 10

def square(value):
    """Returns the square of a number."""
    global new_val
    new_val = new_val ** 2
    return new_val

square(3)
100
new_val
100
Python 函数入门

开始练习!

Python 函数入门

Preparing Video For Download...