上QQ阅读APP看书,第一时间看更新
1.2.1 实现方法
为了说明观点,我们将会创建一个嵌入式函数,这个函数将会被定义在一个封闭的函数中,并被其调用,步骤如下。
(1)nested_functions.py包括一个嵌入式函数,并且以调用这个函数结尾。
>>> def first_funct(): ... x = 1 ... print(x) ... def second_funct(): ... x = 2 ... print(x) ... second_funct() ...
(2)调用父函数,并检查结果。
>>> first_funct() 1 2
(3)直接调用嵌入式函数,我们会收到一个错误。
>>> second_funct() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'second_funct' is not defined
(4)为了和另一个模块兼容,我们导入需要的模块。
>>> import math
(5)我们以这样的形式调用模块(module)中的sin()函数。
>>> math.sin(45) 0.8509035245341184
(6)尝试用下面的方式调用函数,不使用“.”来表明它所属的库会导致以下的错误。
>>> sin(45) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'sin' is not defined
(7)以下的例子表明可以用“*”来代替函数所在的位置,来从一个模块中导入所有的函数。
>>> from math import * >>> sin(45) 0.8509035245341184
(8)将模块作为脚本运行的一种常见方法是直接从命令行显式调用模块,并在必要时提供所需参数。这可以通过配置模块接受命令行参数来设置,如下所示。
def print_funct(arg): print(arg) if __name__ == "__main__": import sys print_funct(sys.argv[1])
(9)print_mult_args.py表明,如果超过一个参数需要被引用,并且值是已知的,则可以使用参数列表中各自的索引值指定每个参数。
def print_funct(arg1, arg2, arg3): print(arg1, arg2, arg3) if __name__ == "__main__": import sys print_funct(sys.argv[1], sys.argv[2], sys.argv[3])
(10)如果函数可以捕获多个参数,但数量未知,则可以使用*args参数,如下所示。
>>> def print_input(*args): ... for val, input in enumerate(args): ... print("{}. {}".format(val, input)) ... >>> print_input("spam", "spam", "eggs", "spam") 0.spam 1.spam 2.eggs 3.spam