在整个应用程序,只有三行声明。这是最短单WIN32应用,但它的功能是非常有限,简单地显示一个消息框,示出来,其他什么事情也没有做。以下就来分析这三行语句了。别小看这三行语句。其实是隐藏着非常多知识点在其背后。比方使用了三个keyword:from、import和None。当中fromkeyword和importkeyword做成一个语句表达形式,它们的简单意思就是表示从某个模块(库)里导入模块顶层的一些对象。表现的形式例如以下:

from 模块(库)  import 对象

在这里相关语句为:

from ctypes import *

那么这行语句的意思就是从ctypes模块(库)里导入全部顶层的对象。星号(*)是表示全部对象,当然。也是能够指定特定名称的对象导入。比方以下的语句:

from ctypes import windll

这行语句表示就仅仅导入windll对象。这样的方式与星号(*)的差别是限制了从模块里导入的对象类型。假设一个模块里的代码比較多。就倾向使用指定对象名称导入。这样能够避免命名冲突。假设想使用比較简单,使用星号方式是比較方便好用。

另外使用from形式导入时。跟直接使用import是有差别的。from形式表示从模块里拷贝顶层作用域里全部的对象到眼下from语句所在作用域来。

假设原来导入的模块发生了改变。from 形式拷贝的对象名称是不会改变的。这时就须要比較小心那些不断地改变的对象,最好不要使用from的形式了。而使用import的形式。在Python里能够导入非常多类型的模块,比方Python写的模块文件。或者C写的符合Python调用接口的模块文件。又或者C++写的符合Python调用接口的模块文件。

ctypes库

在这语句里是导入了ctypes库(模块),那么ctypes库是干什么用呢?简而言之。ctypes库就是用来帮助Python从源代码里调用C语言写的动态连接库(DLL)。从一门语言调用另外一门语言是一个复杂的过程,那么为什么要调用呢?可能原因是以下几点:

1)系统模块是其实的标准。无法自行开发。比方在Windows操作系统是使用C和C++开发的,因此要使用Win32的API接口。必须使用C语言的方式来调用系统的功能。另外操作系统的开发厂家也不可能提供全部其他语言的接口。

2)功能模块须要更高的效率。因为Python是动态语言、解释型语言,运行速度介于编译型语言(比方C、C++)和全然动态解释语言的速度之间(比方Basic)。比方有一段算法计算非常大。要求性能非常高,就能够使用C或C++语言来开发一个动态连接库,然后让Python来调用,就能够提高Python程序的总体运行性能。

3)曾经使用C或C++开发的旧模块,须要使用Python打电话。在为了与资源的一次保护兼容。

版权声明:本文博主原创文章,博客,未经同意不得转载。

from声明的更多相关文章

  1. Fis3的前端工程化之路[三大特性篇之声明依赖]

    Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...

  2. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

  3. 【WCF】错误协定声明

    在上一篇烂文中,老周给大伙伴们介绍了 IErrorHandler 接口的使用,今天,老周补充一个错误处理的知识点——错误协定. 错误协定与IErrorHandler接口不同,大伙伴们应该记得,上回我们 ...

  4. HTML文档声明

    前面的话   HTML文档通常以类型声明开始,该声明将帮助浏览器确定其尝试解析和显示的HTML文档类型.本文将详细介绍文档声明DOCTYPE 特点   文档声明必须是HTML文档的第一行.且顶格显示, ...

  5. Hibernate中事务声明

    Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...

  6. MFC中成员变量的声明顺序与析构顺序

    第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...

  7. C++模板编程:如何使非通用的模板函数实现声明和定义分离

    我们在编写C++类库时,为了隐藏实现,往往只能忍痛舍弃模版的强大特性.但如果我们只需要有限的几个类型的模版实现,并且不允许用户传入其他类型时,我们就可以将实例化的代码放在cpp文件中实现了.然而,当我 ...

  8. 错误: 从内部类中访问本 地变量vvv; 需要被声明为最终类型

    从github 下载了源码, 进行编译, 出现了下面的错误 E:\downloads\ff\elasticsearch-master\elasticsearch-master>GRADLE :b ...

  9. js变量声明作用域问题

    1.先来看两个题 var a = 1; foo1(); function foo1(){ console.log(a); //输出1 }; foo2(); var a = 1; function fo ...

  10. CSS权威指南之css声明,伪类,文本处理--(简要笔记一)

    1.css层叠的含义 后面的会覆盖前面的样式 2.每个元素生成一个框,也称盒.   3.替换元素和非替换元素. img如果不指定src的外部路径,该元素就没有意义.他由文档本身之外的一个图像文件来替换 ...

随机推荐

  1. Unity 捕获IronPython脚本错误

    using System; using System.Collections.Generic; using System.IO; using System.Reflection; using Syst ...

  2. WCF 部署时,soap:address location 显示的是电脑名,而不是ip地址

    部署WCF服务时,发现soap:address location 和wsdl:import location 显示是电脑名,而不是ip地址,这样外面公司的人就无法下载剩下的wsdl,post也会往错误 ...

  3. 开展:随笔记录 OSGI的jar增加了一些小问题和注意事项

    在引用jar当包,假设引用的项目包.在需要MANIFEST.MF 它定义 一.外用jar: 实例:外部参考需要包装的Import package里面 定义一下.如:google-gson-2.2.2. ...

  4. iOS结合导航控制器和标签栏控制器

    <span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name=& ...

  5. Pagination jquery ajax 分页参考资料

    http://www.zhangxinxu.com/wordpress/2010/01/jquery-pagination-ajax%E5%88%86%E9%A1%B5%E6%8F%92%E4%BB% ...

  6. poj 2182 Lost Cows(段树精英赛的冠军)

    主题链接:http://poj.org/problem? id=2182 Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  7. ArcPad 10 的安装部署

    ArcPad是安装在手持设备或者移动终端的一个外业ArcGIS产品,也就是说ArcPad是Esri的一款软件产品,而不是硬件设备哦.尽管不比ArcGIS Desktop功能复杂缤纷,可是对于野外作业. ...

  8. shell 脚本运算符

    1.数值 格式: test "num1" opr "num2" [ "num1" opr "num2" ] opr 取值 ...

  9. 开源Math.NET基础数学类库使用(06)数值分析之线性方程组直接求解

    原文:[原创]开源Math.NET基础数学类库使用(06)数值分析之线性方程组直接求解 开源Math.NET基础数学类库使用系列文章总目录:   1.开源.NET基础数学计算组件Math.NET(一) ...

  10. Visual Studio 使用及调试必知必会

    原文:Visual Studio 使用及调试必知必会   一:C# CODING 技巧 1:TODO 然后 CTRL + W + T,打开任务列表,选中 Comments,就会显示所有待做的任务 2: ...