函数调用

(function(){...}())与(function(){...})()

人盡茶涼 提交于 2020-03-06 18:56:50
(function(){ ...... }()) 或 (function(){ ...... })() 匿名函数自调用 ,也就是说,定义一个匿名函数,然后马上调用它。 因为这个匿名函数的函数体相当于提供一个匿名的名字空间,这样就不会与用户自定义的JS函数、变量、对象发生冲突了,不失为是一种很好的解决命名空间问题的方法。 例如json2.js (function () { function f(n) { // Format integers to have at least two digits. return n < 10 ? '0' + n : n; } if (typeof Date.prototype.toJSON !== 'function') { Date.prototype.toJSON = function (key) { return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z' : null;

《C++ Primer(第五版)》第六章笔记

旧城冷巷雨未停 提交于 2020-03-06 08:53:59
6.1 函数基础   通过 调用运算符 来执行函数。函数的调用完成两项工作:用实参初始化函数的形参;将控制权转移给被调用函数。   当遇到一条 return 语句时函数结束执行过程。return 也完成两项工作:返回 return 语句中的值;将控制权从被调用函数转移回主调函数。 形参和实参   形参出现在函数定义的地方,实参出现在函数调用的地方。实参是形参的初始值,实参的类型必须与对应的形参类型相匹配。   任意两个形参都不能同名,而且函数最外层作用域中的局部变量也不能使用与函数形参一样的名字(外层局部变量被内部形参隐藏)。 6.1.1 局部对象   对象的 生命周期 是程序执行过程中该对象存在的一段时间。   形参和函数体内部定义的变量统称为 局部变量 。局部变量会 隐藏 在外层作用域中同名的其他所有声明中。   只存在于块执行期间的对象称为 自动对象 。    局部静态对象 在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁。内置类型的未初始化局部变量产生未定义的值,内置类型的局部静态变量初始化(值初始化)为 0。 6.2 参数传递   形参的类型决定了形参和实参交互的方式。当形参是引用类型时,其对应的实参被 引用传递 或函数被 传引用调用 ;当实参的值被拷贝给形参时,实参被 值传递 或函数被 传值调用 。 6.2.1 传值参数  

Linux设备驱动程序学习(10) -时间、延迟及延缓操作

僤鯓⒐⒋嵵緔 提交于 2020-03-06 08:46:15
度量时间差 时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据 HZ 值来设定,HZ 是一个体系依赖的值,在 <linux/param.h>中定义或该文件包含的某个子平台相关文件中。作为通用的规则,即便如果知道 HZ 的值,在编程时应当不依赖这个特定值,而始终使用HZ。对于当前版本,我们应完全信任内核开发者,他们已经选择了最适合的HZ值,最好保持 HZ 的默认值。 对用户空间,内核HZ几乎完全隐藏,用户 HZ 始终扩展为 100。当用户空间程序包含 param.h,且每个报告给用户空间的计数器都做了相应转换。对用户来说确切的 HZ 值只能通过 /proc/interrupts 获得:/proc/interrupts 的计数值除以 /proc/uptime 中报告的系统运行时间。 对于ARM体系结构:在<linux/param.h>文件中的定义如下: #ifdef __KERNEL__ # define HZ CONFIG_HZ /* Internal kernel timer frequency */ # define USER_HZ 100 /* 用户空间使用的HZ,User interfaces are in "ticks" */ # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ #else # define

网络的一些基本函数

你。 提交于 2020-03-06 04:33:59
WSA是windows socket API简称 1 在delphi用这些API时,应先先明 WSAStartup();//初始 WSACleanup;//注销 后面介绍一些简单函数的使用 我也是学了再写,说错的地方指明,这既是自己的笔记 也是大家的参考 2、socket函数 用于生成socket(soket Descriptor) [声明] SOCKET socket(int af,int type,int protocol); [参数] af - 地址家族(通常使用:AF_INET) type - socket的种类 SOCK_STREAM : 用于TCP协议 SOCK_DGRAM : 用于UDP协议 protocol - 所使用的协议 [返回值] 当函数成功调用时返回一个新的SOCKET(Socket Descriptor) 失败时返回INVALID_SOCKET. 3、inet_addr函数 把好象"xxx.xxx.xxx.xxx"的10进制的IP地址转换为32位整数表示方法 [声明] unsigned long inet_addr ( const char FAR *cp ); [参数] cp - 指向用"xxx.xxx.xxx.xxx"的10进制来表示的IP地址字符串的指针 [返回值] 当函数成功调用时返回用32位整数表示的IP地址(按网络字节排列顺序)

winsocket <研究了一天的成果>

我的未来我决定 提交于 2020-03-06 04:32:49
首先,这都是套路( ▼-▼ ) 头文件 #include <WinSock.h> #include <Winsock2.h> 用这个,这个是升级版 各个函数解释 1、 WSAStartup: 初始化套接字环境,本函数必须是应用程序或DLL调用的第一个Windows Sockets函数.它允许应用程序或DLL指明Windows Sockets API的版本号及获得特定Windows Sockets实现的细节.应用程序或DLL只能在一次成功的WSAStartup()调用之后才能调用进一步的Windows Sockets API函数. int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData); 实际用例 //begin 初始化网络环境 int err = WSAStartup(MAKEWORD(2, 2), &wsaData); if ( err != 0) { printf("WSAStartup failed with error: %d\n", err); return -1; }//end 2、 WSACleanup: 清理套接字环境,和上面的WSAStartup相反,该函数是在程序不在对任何Windows Sockets函数调用后,用其来清理套接字环境的 int WSACleanup (void); 3、

Python基础之函数基本用法与进阶详解

邮差的信 提交于 2020-03-06 04:27:52
本文实例讲述了Python基础之函数基本用法与进阶。分享给大家供大家参考,具体如下: 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式 无参数,无返回值 无参数,有返回值 有参数,无返回值 有参数,有返回值 定义函数时,是否接收参数,或者是否返回结果,是根据 实际的功能需求 来决定的! 如果函数 内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部 如果希望一个函数 执行完成后,向外界汇报执行结果,就可以增加函数的返回值 1.1 无参数,无返回值 此类函数,不接收参数,也没有返回值,应用场景如下: 只是单纯地做一件事情,例如 显示菜单 在函数内部 针对全局变量进行操作,例如:新建名片,最终结果 记录在全局变量 中 注意: 如果全局变量的数据类型是一个 可变类型,在函数内部可以使用 方法 修改全局变量的内容 —— 变量的引用不会改变 在函数内部,使用赋值语句 才会 修改变量的引用 1.2 无参数,有返回值 此类函数,不接收参数,但是有返回值,应用场景如下: 采集数据,例如 温度计,返回结果就是当前的温度,而不需要传递任何的参数 1.3 有参数,无返回值 此类函数,接收参数,没有返回值,应用场景如下: 函数内部的代码保持不变,针对 不同的参数

python进阶教程之函数参数的多种传递方法

自作多情 提交于 2020-03-06 03:56:53
这篇文章主要介绍了python进阶教程之函数参数的多种传递方法,包括关键字传递、默认值传递、包裹位置传递、包裹关键字混合传递等,需要的朋友可以参考下 我们已经接触过函数(function)的参数(arguments)传递。当时我们根据位置,传递对应的参数。我们将接触更多的参数传递方式。 回忆一下位置传递: def f(a,b,c): return a+b+c print(f(1,2,3)) 在调用f时,1,2,3根据位置分别传递给了a,b,c。 关键字传递 有些情况下,用位置传递会感觉比较死板。关键字(keyword)传递是根据每个参数的名字传递参数。关键字并不用遵守位置的对应关系。依然沿用上面f的定义,更改调用方式: print(f(c=3,b=2,a=1)) 关键字传递可以和位置传递混用。但位置参数要出现在关键字参数之前: print(f(1,c=3,b=2)) 参数默认值 在定义函数的时候,使用形如a=19的方式,可以给参数赋予默认值(default)。如果该参数最终没有被传递值,将使用该默认值。 def f(a,b,c=10): return a+b+c print(f(3,2)) print(f(3,2,1)) 在第一次调用函数f时, 我们并没有足够的值,c没有被赋值,c将使用默认值10. 第二次调用函数的时候,c被赋值为1,不再使用默认值。 包裹传递 在定义函数时

第十一周学习报告

ⅰ亾dé卋堺 提交于 2020-03-06 03:35:58
第八章 异常控制流 指令的地址的过渡称为 控制转移 控制转移序列叫做处理机的 控制流 过程中发生的突变叫做 异常控制流 8.1 异常 异常就是控制流中的突变 一部分由硬件实现,一部分由操作系统实现 当处理器检测到有事情发生时,它就会通过一张叫做异常表的跳转表,进行一个间接程序调用,到一个专门设计用来处理这类事件的操作系统子程序(异常处理程序) 异常处理程序完成处理后: (1) 处理程序将控制返回给当事件发生时正在执行的指令 (2) 处理程序将控制返回给如果没有发生异常将会执行的下一条指令 (3) 处理程序终止被中断的程序 8.1.1 异常处理 每种类型的异常都分配了一个唯一的非负整数的异常号 在程序启动时,操作系统会分配和初始化一张称为异常表的跳转表 异常号是异常表的索引,异常表的起始地址放在一个叫做异常表基址寄存器的特殊CPU寄存器中 在处理程序处理完事件之后,它通过执行一条“从终端返回”指令,可选的返回到被中断的程序 如果异常中断的是一个用户程序,就将状态恢复为用户模式,然后将控制返回给被中断的程序 8.1.2 异常的类别 分为四类:中断、陷阱、故障、终止 1.中断 中断是异步发生的(其他都是同步发生的,叫做故障指令),是来自处理器外部的I/O设备的信号的结果 硬件中断的异常处理程序通常称为中断处理程序 中断处理程序将控制返回给应用程序控制流中的下一条指令 2.陷阱和系统调用

Lua 脚本

柔情痞子 提交于 2020-03-06 03:18:43
Lua 脚本 ¶ Lua 脚本功能是 Reids 2.6 版本的最大亮点, 通过内嵌对 Lua 环境的支持, Redis 解决了长久以来不能高效地处理 CAS (check-and-set)命令的缺点, 并且可以通过组合使用多个命令, 轻松实现以前很难实现或者不能高效实现的模式。 本章先介绍 Lua 环境的初始化步骤, 然后对 Lua 脚本的安全性问题、以及解决这些问题的方法进行说明, 最后对执行 Lua 脚本的两个命令 —— EVAL 和 EVALSHA 的实现原理进行介绍。 初始化 Lua 环境 在初始化 Redis 服务器时, 对 Lua 环境的初始化也会一并进行。 为了让 Lua 环境符合 Redis 脚本功能的需求, Redis 对 Lua 环境进行了一系列的修改, 包括添加函数库、更换随机函数、保护全局变量, 等等。 整个初始化 Lua 环境的步骤如下: 调用 lua_open 函数,创建一个新的 Lua 环境。 载入指定的 Lua 函数库,包括: 基础库(base lib)。 表格库(table lib)。 字符串库(string lib)。 数学库(math lib)。 调试库(debug lib)。 用于处理 JSON 对象的 cjson 库。 在 Lua 值和 C 结构(struct)之间进行转换的 struct 库( http://www.inf.puc

python的重重之器(生成器、迭代器、装饰器)

Deadly 提交于 2020-03-06 02:55:34
一、装饰器 1、定义:本质是函数,装饰其他函数就是为其他函数添加附件功能。 2、原则:   a.不能修改被装饰的函数的源代码;   b.不能修改被装饰的函数的调用方式;  实例:   #!/usr/bin/env python  # -*- coding:utf-8 -*-  #Author:ye  import time  #装饰器  def time_cha(func):#func等于test   time_start = time.time()   func()#此时func()相当于test()   time.sleep(2)   time_stop = time.time()   print("the time cha is :%s" % (time_stop - time_start))  #主函数  def test():   print("*")   time.sleep(1)   print("*")   time.sleep(1)   print("in the test")  #单独调用主函数  test()  #将装饰器套用在主函数上  time_cha(test)#此方式改变了主函数的调用方式 3、实现装饰器的知识储备:   a.函数即“变量”   b.高阶函数     b1.把一个函数名当做实参传递给另外一个函数(在不修改被装饰函数的前提下,增加其功能)