from声明
在整个应用程序,只有三行声明。这是最短单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声明的更多相关文章
- Fis3的前端工程化之路[三大特性篇之声明依赖]
Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...
- Js 变量声明提升和函数声明提升
Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...
- 【WCF】错误协定声明
在上一篇烂文中,老周给大伙伴们介绍了 IErrorHandler 接口的使用,今天,老周补充一个错误处理的知识点——错误协定. 错误协定与IErrorHandler接口不同,大伙伴们应该记得,上回我们 ...
- HTML文档声明
前面的话 HTML文档通常以类型声明开始,该声明将帮助浏览器确定其尝试解析和显示的HTML文档类型.本文将详细介绍文档声明DOCTYPE 特点 文档声明必须是HTML文档的第一行.且顶格显示, ...
- Hibernate中事务声明
Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...
- MFC中成员变量的声明顺序与析构顺序
第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...
- C++模板编程:如何使非通用的模板函数实现声明和定义分离
我们在编写C++类库时,为了隐藏实现,往往只能忍痛舍弃模版的强大特性.但如果我们只需要有限的几个类型的模版实现,并且不允许用户传入其他类型时,我们就可以将实例化的代码放在cpp文件中实现了.然而,当我 ...
- 错误: 从内部类中访问本 地变量vvv; 需要被声明为最终类型
从github 下载了源码, 进行编译, 出现了下面的错误 E:\downloads\ff\elasticsearch-master\elasticsearch-master>GRADLE :b ...
- js变量声明作用域问题
1.先来看两个题 var a = 1; foo1(); function foo1(){ console.log(a); //输出1 }; foo2(); var a = 1; function fo ...
- CSS权威指南之css声明,伪类,文本处理--(简要笔记一)
1.css层叠的含义 后面的会覆盖前面的样式 2.每个元素生成一个框,也称盒. 3.替换元素和非替换元素. img如果不指定src的外部路径,该元素就没有意义.他由文档本身之外的一个图像文件来替换 ...
随机推荐
- 2014在辛星Javascript口译科
***************概要*************** 1.Javascript是一种原型化继承的基于对象的动态类型的脚本语言,它区分大写和小写.主要执行在client,用户即使响应用户的操 ...
- Cocos2d-x学习笔记(五岁以下儿童) 精灵两种方式播放动画
这几天在看控件类,临时没有想好实际运用的方向.单纯的创建网上已经有非常多这方面的样例,我就不写了.接下来是学习精灵类.精灵类若是单独学习也是非常easy.于是我加了一些有关动画方面的知识点与精灵 ...
- Google Maps Android API v2 (4)- 地图类型
地图类型 地图内的谷歌地图的Android API的种类有很多.地图的类型管辖地图的整体代表性.例如,地图集通常包含政治地图,专注于显示边界和道路地图,显示了一个城市或地区的所有道路. Android ...
- ** poj Y2K Accounting Bug 2586
Y2K Accounting Bug Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10117 Accepted: 50 ...
- 流量计算-Jstorm提交Topology过程(下一个)
马上部分流量计算-Jstorm提交Topology过程(上), 5.上篇任务已经ServiceHandler.submitTopologyWithOpts()方法.在该方法中,会实例化一个Topolo ...
- asp.net弹出层实例
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.c ...
- 因host命令导致无法正常SHUTDOWN的实验
SHUTDOWN有几个參数能够使用: SHUTDOWN NORMAL:NORMAL也是默认的子句,运行的条件是 No new connections are allowed after the sta ...
- Cocos2d-x 单点触摸--让我们用手指动起来的精灵
转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/25656673 效果图: CCTouch类装载了触摸点的信息.包含触摸点的横纵坐标值和触 ...
- W3C DOM 事件模型(简述)
1.事件模型 由于事件捕获与冒泡模型都有其长处和解释,DOM标准支持捕获型与冒泡型,能够说是它们两者的结合体.它能够在一个DOM元素上绑定多个事件处理器,而且在处理函数内部,thiskeyword仍然 ...
- SIGPIPE并产生一个信号处理
阅读TCP某物,知道server并关闭sockfd当写两次,会产生SIGPIPE信号,假如不治疗,默认将挂起server 弄个小样本试验: #include <unistd.h> #inc ...