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的外部路径,该元素就没有意义.他由文档本身之外的一个图像文件来替换 ...
随机推荐
- selinux 工具下载地址
http://userspace.selinuxproject.org/releases/ 里面包含了 Name Last modified Size Description Parent Direc ...
- 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context}
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to'org.eclipse ...
- 返璞归真 asp.net mvc (2) - 路由(System.Web.Routing)
原文:返璞归真 asp.net mvc (2) - 路由(System.Web.Routing) [索引页] [源码下载] 返璞归真 asp.net mvc (2) - 路由(System.Web.R ...
- POJ 1384 Piggy-Bank 背包DP
所谓的全然背包,就是说物品没有限制数量的. 怎么起个这么intimidating(吓人)的名字? 事实上和一般01背包没多少差别,只是数量能够无穷大,那么就能够利用一个物品累加到总容量结尾就能够了. ...
- Code::Blocks项目配置基础
File 菜单 New :新建( Empty file/file . class . project . build target ) . Recent projects/files :近期打开的项目 ...
- 使用form的target属性屏蔽url跳
target: 指定公开赛, action URL. 关键点: 让target指向隐藏的iframe demo: form.jsp <%@ page language="java&qu ...
- 在C#主线程和子线程将数据传递给对方如何实现
在C#中主线程和子线程怎样实现互相传递数据 老帅 在C#中创建线程Thread时,能够有多种方法,而主线程和子线程之间又怎样实现互相传递数据,每种创建方法传递參数的效果是不同的,逐一看一下: 一.不 ...
- MongoDB时间处理问题
MongoDB保存到数据库的时候,默认为UTC时间,在数据库保存时,会和当前时间有个间隔,差距为8小时. 在读取的时候,需要再次转换回来,比较麻烦. 其实,Mongo本身就已经提供了相应的处理方法,即 ...
- SQL Server 2008 新增T-SQL 简写语法
1.定义变量时可以直接赋值 DECLARE @Id int = 5 2.Insert 语句可以一次插入多行数据 INSERT INTO StateList VALUES(@Id, 'WA'), (@I ...
- 找出N之内的所有完数
时间限制: 10 Sec 内存限制: 128 MB 提交: 389 解决: 148 [提交][状态][讨论版] 题目描述 一个数如果恰好等于它的因子之和,这个数就称为"完数". ...