参考“3.4 模块(Modules).pdf”,完成以下实验:(1)在同一文件夹下构建“demo1.py”和“demo2.py”,在“demo1.py”中导入(import) demo2模块;(2)在“demo1.py”和“demo2.py”中分别加入主函数入口,即“if __name__ == '__main__'”,体会其具体作用;(3)在“demo1.py”所在的目录下新建目录“folder”,并将“demo2.py”移至该新建的目录下,复现实现实验(1)、(2)中所述过程,实验当导入模块位于不同路径下的具体解决方案;(4)实验在主模块中调用其它模块中的函数及变量。 2. 实验命令行参数的实现,读取命令行参数。 3. 参考“7.3 Returning Functions.pdf”,实现:(1)返回函数;(2)闭包的延迟执行。
时间: 2023-12-25 19:06:26 浏览: 67
好的,我会回答你的问题,首先是第一个问题:
1. 在同一文件夹下构建“demo1.py”和“demo2.py”,在“demo1.py”中导入(import)demo2模块;在“demo1.py”和“demo2.py”中分别加入主函数入口,即“if __name__ == '__main__'”,体会其具体作用;在“demo1.py”所在的目录下新建目录“folder”,并将“demo2.py”移至该新建的目录下,复现实现实验(1)、(2)中所述过程,实验当导入模块位于不同路径下的具体解决方案。
在同一文件夹下构建“demo1.py”和“demo2.py”:
首先,我们需要在同一文件夹下创建两个文件,分别为“demo1.py”和“demo2.py”。
在“demo1.py”中导入(import)demo2模块:
接下来,在“demo1.py”中导入“demo2”模块,可以使用以下代码:
```python
import demo2
```
在“demo1.py”和“demo2.py”中分别加入主函数入口,即“if __name__ == '__main__'”,体会其具体作用:
在“demo1.py”和“demo2.py”中加入主函数入口,可以使用以下代码:
```python
if __name__ == '__main__':
# your code here
```
这个主函数入口的作用是,当模块被作为脚本直接执行时,代码块将被运行;当模块被导入时,代码块不会被运行。
在“demo1.py”所在的目录下新建目录“folder”,并将“demo2.py”移至该新建的目录下,复现实现实验(1)、(2)中所述过程,实验当导入模块位于不同路径下的具体解决方案。
在“demo1.py”所在的目录下新建目录“folder”,并将“demo2.py”移至该新建的目录下,可以使用以下代码:
```python
import sys
sys.path.append('./folder')
import demo2
```
这个代码的作用是,将“./folder”这个路径添加到系统路径中,使得我们在导入“demo2”模块时可以找到它。
2. 实验命令行参数的实现,读取命令行参数。
我们可以使用“sys”模块来读取命令行参数,代码如下:
```python
import sys
# 获取命令行参数
args = sys.argv
# 打印命令行参数
print(args)
```
在命令行中执行这个脚本,可以输入一些参数,例如:
```bash
$ python demo.py arg1 arg2 arg3
```
这个脚本将会输出:
```bash
['demo.py', 'arg1', 'arg2', 'arg3']
```
3. 参考“7.3 Returning Functions.pdf”,实现:(1)返回函数;(2)闭包的延迟执行。
(1)返回函数
我们可以在一个函数中定义另一个函数,并将它返回,例如:
```python
def outer_func():
def inner_func():
print("This is inner function.")
return inner_func
# 调用 outer_func,返回 inner_func
func = outer_func()
# 调用 func,输出 "This is inner function."
func()
```
这个代码的作用是,在“outer_func”函数中定义了一个“inner_func”函数,并将它返回。在调用“outer_func”函数时,它将返回“inner_func”函数,我们可以将这个返回值赋给一个变量,并调用它,就可以执行“inner_func”函数。
(2)闭包的延迟执行
闭包的延迟执行是指,在一个函数中定义了另一个函数,并在内部函数中使用了外部函数的变量,当外部函数返回后,内部函数仍然可以访问到这个变量,例如:
```python
def outer_func(x):
def inner_func():
print(x)
return inner_func
# 调用 outer_func,返回 inner_func
func = outer_func(10)
# 调用 func,输出 10
func()
```
这个代码的作用是,在“outer_func”函数中定义了一个“inner_func”函数,并在内部函数中使用了外部函数的变量“x”。当调用“outer_func”函数时,它将返回“inner_func”函数,并将变量“x”的值赋给它。我们可以将这个返回值赋给一个变量,并调用它,就可以执行“inner_func”函数,并输出变量“x”的值。注意,这里的闭包延迟执行,是因为“x”的值是在“outer_func”函数中被定义的,当“outer_func”函数返回后,这个变量仍然存在于“inner_func”函数中。
阅读全文