01 %run 方法
%run方法用于运行指定的py文件,例如以下命令将执行当前目录下file/02magic文件夹下的helloworld.py文件。
%run file/02magic/helloworld.py
输出结果:
hello world
helloworld.py的内容如下:
def say_something():
"""
a function to say helloworld
"""
print('hello world')
def hello(words):
print(words)
if __name__=='__main__':
say_something()
在使用%run方法执行py文件后,就可以在之后的代码中直接调用该py所含有的方法(必须先执行py文件)。例如下列代码将调用helloworld.py中的hello方法,且不会产生任何报错。
hello('你好')
输出:
你好
02 %load 方法
%load方法可以直接将py文件中的内容加载到juypter notebook中。下面的例子将将helloworld.py文件中的所有内容进行加载。
%load file/02magic/helloworld.py
在执行完该命令后,单元格的内容将发生变化。
# %load file/02magic/helloworld.py
def say_something():
"""
a function to say helloworld
"""
print('hello world')
def hello(words):
print(words)
if __name__=='__main__':
say_something()
可以发现,helloworld.py中的文件已经全部加载到单元格内,而%load命令本身则被进行了注释。
04 %timeit与%%timeit
使用%timeit方法可以查看语句执行的时间,语句将进行多轮的测试,每轮可能会进行多次,最后将给出运行时间的均值和标准差。%timeit方法只能测试一行语句运行的时间,如果想要测试多行,则需使用%%timeit方法。
如下代码测试通过推导式建立列表的时间。
%timeit [i**2 for i in range(1000000)]
324 ms ± 6.45 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
在结果中表明,运行时间均值为324ms,标准差为6.45ms,一共测试了7轮,每次运行1次。
下面使用%%timeit方法测试多行代码的运行时间。
%%timeit
arr=[]
for i in range(1000000):
arr.append(i**2)
339 ms ± 14.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
05 导入自定义模块
如果模块就在当前路径下,就可以直接导入。例如导入在MyModule模块下的sclpy.py文件中所有方法,则可以使用如下代码:
from MyModule.sclpy import *
路径如下:
如果模块不在当前路径下,则可以通过sys.path.append方法先将路径加入环境变量,再导入模块。如下:
此时的模块位于 当前目录/file/02magic/下,先将目录加入环境变量,再导入。
import sys
sys.path.append('file/02magic')#添加路径到环境变量
from MyModule.sclpy import my_first_module
my_first_module()
hello, this is my first module!
sclpy.py文件内容如下:
import numpy as np
def my_first_module():
print('hello, this is my first module!')
if __name__=='__main__':
my_first_module()