您的位置:

Python 中的魔法命令

当 Python 在 1991 年被引入时,人们普遍认为 Python 是“使用自担风险”的语言。但是情况变了;Python 是目前占主导地位的语言,它用于数据科学、机器学习和软件开发。

我们知道 Python 是一种灵活的语言。所以我们可以增加新的功能,比如魔法命令。

本教程将讨论魔法命令。这些神奇的命令肯定有助于减少头痛。

介绍

魔法命令是易于设计的语法,便于我们执行日常任务。这些基本上是为了使用 Python 完成数据分析中的一些常见任务而创建的。事实上,它们控制着 IPython 本身的性质。它用于运行外部脚本或计算一段代码的执行时间。

我们可以在 IPython 中使用这两种不同形式的魔法命令。

  • Line Magic-Line Magic 命令表示使用%前缀,并对特定的输入行进行操作。它以表达式的形式使用,它们的返回值可以赋给变量。
  • Cell Magic-Cell Magic 命令使用%% prefix 表示,适用于一个完整的单元格或多行输入。他们接收整个区块作为字符串。

让我们了解一下最流行和最有趣的命令。

内置魔法命令

1.% auto all[模式]

%autocall[mode] 魔法函数用于使函数自动可调用,而无需使用括号。

2.%automagic

如果我们设置为 1,这个神奇的函数也可以被调用,而不需要初始化% 1。我们需要设置为 0 来停用它。

输出:


Automagic is OFF, % prefix IS needed for line magics.

3.%运行

假设我们有一个名为 program_test.py 的文件,其代码如下。


def name()
    print("Hello I am Stuart?)
name()

我们使用以下语句来运行。


%run program_test.py

该脚本将在不导入已定义变量的情况下运行。

上述命令的行为将与 python program_script.py 文件相同。

注意-我们可以使用%run -i 提供对已经定义的变量的访问

现在我们可以在 IPython shell 中访问执行文件的所有变量。

4.%cd

这个神奇的命令改变了当前目录。它自动管理我们在 IPython 会话期间访问的内部目录列表。

输出:


C:\Users\DEVANSH SHARMA

用法-

  • %cd

    -将当前工作目录更改为
  • %cd..-它将当前目录更改为父目录。

  • %cd -它更改为上次访问的目录。

5.% d 列表

这是一个非常有用的魔法命令;它会打印我们在当前会话中访问过的所有目录。每次执行%cd 命令,都会在 _dh 变量中更新。

输出:


Directory history (kept in _dh)
0: C:\Users\DEVANSH SHARMA

6.%编辑

编辑魔法命令解锁当前操作系统的默认文本编辑器(窗口记事本),用于编辑 Python 脚本。我们可以在编辑器中编辑当前的 Python 脚本。

输出:


IPython will make a temporary file named: C:\Users\DEVANS~1\AppData\Local\Temp\ipython_edit_z41uo6o8\ipython_edit_zwb99en9.py

7.% env[guin name]

这个神奇的命令用于启用和禁用 IPython GUI 事件循环集成。当我们使用 GUINAME 参数时,这个命令将默认的图形用户界面工具包替换为指定的工具包。

8.%%timeit

上面的命令计算了 IPython 环境执行 Python 程序所花费的时间。让我们理解下面的程序。


%%timeit
square_numbers = [num**2 for num in range(1,1000)]

输出:

659 µs ± 19.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

9.%lsmagic

这个命令将返回所有魔法命令的列表。让我们看看下面的例子。


%lsmagic

输出:

10.%谁

上述命令将返回当前笔记本中定义的所有变量的列表。

输出:


a    b   c   name    z  

11.%pinfo

它返回关于变量的详细信息。我们可以检查存储在特定变量名中的对象。让我们理解下面的例子。

命令-


%pinfo a 

输出:

Type:        int
String form: 10
Docstring:  
int([x]) -> integer
int(x, base=10) -> integer

Convert a number or string to an integer, or return 0 if no arguments
are given.  If x is a number, return x.__int__().  For floating point
numbers, this truncates towards zero.

If x is not a number or if base is given, then x must be a string,
bytes, or bytearray instance representing an integer literal in the
given base.  The literal can be preceded by '+' or '-' and be surrounded
by whitespace.  The base defaults to 10\.  Valid bases are 0 and 2-36.
Base 0 means to interpret the base from the string as an integer literal.
>>> int('0b100', base=0)
4

13.%matplotlib inline

用于显示 Jupyter 笔记本中的 matplotlib 图形。然而,这个命令在旧版的 Jupyter 笔记本中是可用的。在较新的版本中,这不再使用。

14.%hist

此命令返回当前笔记本的历史记录。意思是,我们在当前笔记本上已经做了什么。

输出-


%dhist
%edit
%env[GUINAME]
%automagic
def name()
    print('Hello I am Stuart')
name()
def name():
    print('Hello I am Stuart')
name()
%cd
%%timeit
square_number = []
for num in range(1,100):
    sqaure_number.append(num**2)
%%timeit
square_numbers = []
for num in range(1,100):
    sqaure_numbers.append(num**2)
%%timeit
square_numbers = [num**2 for num in range(1,1000)]
%%html
<html>
<body>
<h3>Student Marks</h3>
<table>
        <tr> 
            <th>Name</th> 
            <th>Roll</th> 
            <th>Age</th>
            <th>Marks</th>
        </tr> 
        <tr> 
..........................................
..........................................
..........................................

在 IPython 中执行 Html 脚本

我们可以使用神奇的命令来执行 HTML 和 JavaScript 代码。它帮助我们为代码提供一些简单的用户界面元素。

语法-

%%html 允许我们执行 html 脚本。

%%js 允许我们执行 js 脚本。

让我们看看下面的例子。

命令


%%html
<html>
<body>
<h3>Employee Details</h3>
<table>
        <tr> 
            <th>Name</th> 
            <th>Designation</th> 
            <th>Age</th>
            <th>Salary</th>
        </tr> 
        <tr> 
            <td>Peter</td> 
            <td>HR</td> 
            <td>29</td>
            <td>93000</td>
        </tr>
        <tr> 
            <td>Parker</td> 
            <td>IT</td> 
            <td>24</td>
            <td>92000</td>
        </tr>
        <tr> 
            <td>Adam</td> 
            <td>IT</td> 
            <td>26</td>
            <td>120000</td>
        </tr>
</table>
</body>
</html>

使用环境变量

  • %env

这个命令让我们可以访问和处理系统环境变量。

输出:

{'ALLUSERSPROFILE': 'C:\\ProgramData',
 'APPDATA': 'C:\\Users\\DEVANSH SHARMA\\AppData\\Roaming',
 'C:\\PROGRAMDATA\\ANACONDA3\\SCRIPTS\\': 'C:\\ProgramData\\Anaconda3',
 'C:\\USERS\\DEVANSH SHARMA\\APPDATA\\ROAMING\\NPM': 'C:\\Users\\DEVANSH SHARMA\\AppData\\Roaming\\npm',
 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files',
 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files',
 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files',
 'COMPUTERNAME': 'DESKTOP-2VAN176',
 'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe',
 'DART_SDK': 'C:\\Program Files\\Dart\\dart-sdk',
 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData',
 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer',
 'FPS_BROWSER_USER_PROFILE_STRING': 'Default',
 'HOMEDRIVE': 'C:',
 'HOMEPATH': '\\Users\\DEVANSH SHARMA',
 'LOCALAPPDATA': 'C:\\Users\\DEVANSH SHARMA\\AppData\\Local',
 'LOGONSERVER': '\\\\DESKTOP-2VAN176',
 'NUMBER_OF_PROCESSORS': '4',
 'ONEDRIVE': 'C:\\Users\\DEVANSH SHARMA\\OneDrive',
 'OS': 'Windows_NT',
 'PATH': 'C:\\Users\\DEVANSH SHARMA\\Anaconda3;C:\\Users\\DEVANSH SHARMA\\Anaconda3\\Library\\mingw-w64\\bin;C:\\Users\\DEVANSH SHARMA\\Anaconda3\\Library\\usr\\bin;C:\\Users\\DEVANSH SHARMA\\Anaconda3\\Library\\bin;C:\\Users\\DEVANSH SHARMA..............
  • %env var - 它返回特定变量的值。例如- %env OS

输出:


'Windows_NT'
  • %env var 值- 用于设置变量 var 的值。

结论

在本教程中,我们已经介绍了 Jupyter 笔记本的重要魔法命令。这些命令使工作更容易,也提供了有效使用笔记本电脑的灵活性。