函数调用

C++技术之一:C++类 _stdcall

試著忘記壹切 提交于 2020-03-12 09:30:09
一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下载下来研究研究,地址:http://code.google.com/p/duilib/ 废话不多说,我比较困扰的是UIWebBrowser.h这个头文件,虽然是C++写的,但里面包含太多大学C++课本以外的东西,第一遍看下来跟看天书一样,里面有很多的不惑,接下来我们一个一个解开。 首先看一下这个函数定义: virtual HERSULT STDMETHODCALLTYPE GetTypeInfoCount( __RPC__out UINT *pctinfo); 这一篇详细介绍 __stdcall 上篇文章我们知道 #define STDMETHODCALLTYPE __stdcall ,那__stdcall又是个什么东东呢,有什么作用呢?下面来完全的了解一下. 1. _cdecl (1). 是C Declaration的缩写,表示C语言默认的函数调用方法,实际上也是C++的默认的函 数调用方法。 (2). 所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。具体所示:调用 方的函数调用->被调用函数的执行->被调用函数的结果返回->调用方清除调整堆栈。 (3). 被调用函数无需要求调用者传递多少参数

day9(函数基础知识,装饰器)

女生的网名这么多〃 提交于 2020-03-12 08:32:45
装饰器 一 函数对象: python一切皆对象 函数是第一类对象 (函数可以被当做数据传递) 1 可以被引用 即 x = func 2 可以当做函数的参数传入. 3 可以当做函数的返回值 4 可以作为容器数据类型的元素 例1 def func(x): pass return x x = func(10) 这是调用函数的返回值不是函数 x = func x() li = [1,x,2] 例2 def func(bar): bar() def bar(): pass func(bar) 例3 def outter(): def inner(): print('inner') return inner x = outter() x() 二 函数的嵌套调用和定义 当两个函数互相调用时 会超出最大递归深度报错 def func(): print('func') func() def bar(): print('bar') func() func() 例1 嵌套调用 def max(x,y): if x>y: return x else: return y def max4(x,y,z,a): res = max(x,y) res = max(res,z) res = max(res,q) max4(1,2,3,4,) 例2 嵌套定义 def func1(): def func2(): def

详细介绍Python函数中的默认参数

痞子三分冷 提交于 2020-03-12 00:53:54
详细介绍Python函数中的默认参数 import datetime as dt def log_time(message, time=None): if time is None: time=dt.datetime.now() print("{0}: {1}".format(time.isoformat(), message)) 最近我在一段Python代码中发现了一个因为错误的使用默认参数而产生的非常恶心的bug。如果您已经知道关于默认参数的全部内容了,只是想嘲笑一下我这可笑的错误,请直接跳到本文末尾。哎,这段代码是我写的,但是我非常确定那天我被恶魔附体了。你懂的,有时候就是这样。 本文仅仅是总结一下关于Python函数的标准参数和默认参数的一些基本内容。提醒你注意你的代码中可能存在的陷阱。如果你刚开始接触Python,开始写一些函数,我真心推荐你看一下Python官方手册中关于函数的内容,链接如下:Defining Functions 以及 More on Defining Functions。 简单复习一下函数 Python是一个强大的面向对象语言,它把这种编程范式推向了顶峰。但是,面向对象编程仍然需要依靠函数这一概念,你可以用它来处理数据。Python对于可调用对象有一个更宽泛的概念,即任何对象都可以被调用,调用的意思是对其应用数据。 函数在Python中是可调用对象

【Python3 第三日】%和format格式化输出 函数

女生的网名这么多〃 提交于 2020-03-11 18:10:10
格式化输出 print(f'{d}') 会把d代表的意义转化掉,和format差不多 %格式化形式 #这里只说明字典使用 dict1 = {"what": "this year", "year": 2016} print("%(what)s is %(year)d" % {"what": "this year", "year": 2016}) # 输出this year is 2016 print("%(what)s is %(year)d, %d" % (dict1,22) ) # 输出this year is 2016 format格式化形式 format格式精解 位置映射 #后面的元素可以多 print("{}:{}".format('192.168.0.100', 8888, 222)) #输出如下192.168.0.100:8888 关键字映射 print("{server}{1}:{0}".format(8888,'192.168.1.100',server='Web Server Info :')) #Web Server Info :192.168.1.100:8888print('{name},{sex},{age}'.format(age=32,sex='male',name='zhangk')) #zhangk,male,32 元素访问 print("{0[0

优化PHP代码的40条建议

前提是你 提交于 2020-03-11 13:44:31
1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2.echo 比 print 快。 3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 5.注销那些不用的变量尤其是大数组,以便释放内存。 6.尽量避免使用__get,__set,__autoload。 7.require_once()代价昂贵。 8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。 9.如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。 10.函数代替正则表达式完成相同功能。 11.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。 12.如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。 13.使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。 14.用@屏蔽错误消息的做法非常低效。 15.打开apache的mod_deflate模块。 16.数据库连接当使用完毕时应关掉。 17.

程序错误、异常(语法、抛出、捕获、传播)、栈展开

别说谁变了你拦得住时间么 提交于 2020-03-11 12:36:33
一、程序错误 编译错误,即语法错误。程序就无法被生成运行代码。 运行时错误 不可预料的逻辑错误 可以预料的运行异常 例如: 动态分配空间时可能不会成功 打开文件可能会失败 除法运算时分母可能为0 整数相乘可能溢出 数组越界…… 二、异常 (一)、异常语法 throw 表达式; try { //try语句块 } catch(类型1 参数1) { //针对类型1的异常处理 } catch (类型2 参数2) { //针对类型2的异常处理 } … catch (类型n 参数n) { //针对类型n的异常处理 } (二)、异常抛出 可以抛出内置类型异常也可以抛出自定义类型异常 throw抛出一个类对象会调用拷贝构造函数 异常发生之前创建的局部对象被销毁,这一过程称为栈展开 (三)、异常捕获 一个异常处理器一般只捕捉一种类型的异常 异常处理器的参数类型和抛出异常的类型相同 …表示可以捕获任何异常 C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #include

matlab绘图

﹥>﹥吖頭↗ 提交于 2020-03-11 10:04:16
一. 二维数据曲线图 1.1 绘制二维曲线的基本函数 1.plot()函数 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。 例: t=0:0.1:2*pi; x=2 * t; y=t.*sin(t).*sin(t); plot(x, y); 2. 含多个输入参数的plot函数 plot函数可以包含若干组向量对,每一组可以绘制出一条曲线。含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,…,xn,yn) 例: x=linspace(0,2*pi,100); plot(x,sin(x),x,2*sin(x),x,3*sin(x)) 3. 含选项的plot函数 Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示: 例: 用不同的线型和颜色在同一坐标内绘制曲线 及其包络线。 x=(0:pi/100:2*pi)'; y1=2*exp(-0.5*x)*[1,-1]; y2=2*exp(-0.5*x).*sin(2*pi*x); x1=(0:12)/2; y3=2*exp(-0.5*x1).*sin(2*pi*x1); plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp'); 在该plot函数中包含了3组绘图参数

Python类

江枫思渺然 提交于 2020-03-11 08:20:01
一、面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想。在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一个功能。举个例子,你要做饭,可以用电磁炉,也可以用煤气灶。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,两种最重要的编程范式分别是面向过程编程和面向对象编程。 提到面向对象,就不得不提到另一种编程思想,面向过程;什么是面向过程呢,面向过程的思想是把一个项目、一件事情按照一定的顺序,从头到尾一步一步地做下去,先做什么,后做什么,一直到结束。这种思想比较好理解,其实这也是一个人做事的方法,我们之前编程的思想也都是使用这种思想。这种编程思想,只要前面有一个步骤变了,那么后面的就也要变,后面维护起来比较麻烦,这样的编程思想,我们在写一些简单的小程序、只执行一次的脚本时可以使用。而面向对象呢,面向对象的思想是把一个项目、一件事情分成更小的项目,或者说分成一个个更小的部分,每一部分负责什么方面的功能,最后再由这些部分组合而成为一个整体。这种思想比较适合多人的分工合作,就像一个大的机关,分各个部门,每个部门分别负责某样职能,各个部门可以充分发挥自己的特色,只要符合一定前提就行了。 举个例子:比如刚才说的一个大的机关,要做某一个项目,从面向过程的思想来说,应该是这样分析的

优化PHP代码的40条建议

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-11 06:44:47
1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2.echo 比 print 快。 3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 5.注销那些不用的变量尤其是大数组,以便释放内存。 6.尽量避免使用__get,__set,__autoload。 7.require_once()代价昂贵。 8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。 9.如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。 10.函数代替正则表达式完成相同功能。 11.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。 12.如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。 13.使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。 14.用@屏蔽错误消息的做法非常低效。 15.打开apache的mod_deflate模块。 16.数据库连接当使用完毕时应关掉。 17.

优化PHP代码的40条建议

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-11 06:00:08
转: 简介 英文版权归Reinhold Weber所有,中译文作者yangyang(aka davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大PHPer指正。 1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2.echo 比 print 快。 3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 5.注销那些不用的变量尤其是大数组,以便释放内存。 6.尽量避免使用__get,__set,__autoload。 7.require_once()代价昂贵。 8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。 9.如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。 10.函数代替正则表达式完成相同功能。 11.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。 12.如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。 13