函数调用

13函数基础

て烟熏妆下的殇ゞ 提交于 2020-02-29 00:00:05
1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用 函数的使用包含两个步骤: 定义函数 —— 封装 独立的功能 调用函数 —— 享受 封装 的成果 函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的 重用 演练步骤 新建 04_函数 项目 复制之前完成的 乘法表 文件 修改文件,增加函数定义 multiple_table(): 新建另外一个文件,使用 import 导入并且调用函数 函数基本使用 2.1 函数的定义 定义函数的格式如下: def 函数名(): 函数封装的代码 …… def 是英文 define 的缩写 函数名称 应该能够表达 函数封装代码 的功能,方便后续的调用 函数名称 的命名应该 符合 标识符的命名规则 可以由 字母、下划线 和 数字 组成 不能以数字开头 不能与关键字重名 2.2 函数调用 调用函数很简单的,通过 函数名() 即可完成对函数的调用 2.3 第一个函数演练 需求 编写一个打招呼 say_hello 的函数,封装三行打招呼的代码 在函数下方调用打招呼的代码 name = "小明" # 解释器知道这里定义了一个函数 def say_hello ( ) : print ( "hello 1" ) print ( "hello 2" ) print ( "hello 3" ) print (

lib 和 dll 的区别、生成以及使用详解

倾然丶 夕夏残阳落幕 提交于 2020-02-28 21:16:50
【目录】 lib dll介绍 生成动态库 调用动态库 生成静态库 调用静态库 首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。 静态库 : 在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的 可执行文件 中,这种库称为静态库,其特点是 可执行文件 中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库 中的指令都全部被直接包含在最终生成的 EXE 文件 中了。 在vs中新建生成静态库的工程,编译生成成功后,只产生一个.lib文件 动态库 :动态链接库 是一个包含可由多个 程序 同时使用的 代码 和数据的库,DLL不是 可执行文件 。 动态链接 提供了一种方法,使进程可以调用不属于其 可执行代码 的函数。函数的 可执行代码 位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分 开存储的函数。 在vs中新建生成动态库的工程,编译成功后,产生一个.lib文件和一个.dll文件 那么上述静态库和动态库中的lib有什么区别呢? 静态库中的lib :该 LIB包含函数代码本身(即包括函数的索引,也包括实现),在编译时直接将代码加入程序当中 动态库中的lib :该 LIB包含了函数所在的DLL文件和文件中函数位置的信息(索引),函数实现代码由运行时加载在进程空间中的DLL提供 总之

DK1.5-JDK11各个新特性

◇◆丶佛笑我妖孽 提交于 2020-02-28 19:48:32
摘要: 参考文献: https://blog.csdn.net/lsxf_xin/article/details/79712537 JDK各个版本的新特性 要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言。以下介绍一下JDK1.5版本到JDK1.7版本的特性及JDK1.8部分特性。 JDK1.5新特性 1:自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。 自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象。 自动拆箱,只需将该对象值赋给一个基本类型即可。 java——类的包装器 类型包装器有:Double,Float,Long,Integer,Short,Character和Boolean 2:枚举 把集合里的对象元素一个一个提取出来。枚举类型使代码更具可读性,理解清晰,易于维护。枚举类型是强类型的,从而保证了系统安全性。而以类的静态字段实现的类似替代模型,不具有枚举的简单性和类型安全性。 简单的用法:JavaEnum简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。 复杂用法

线程之线程标识、创建以及终止

為{幸葍}努か 提交于 2020-02-28 19:14:29
本文来自个人博客: https://dunkwan.cn 文章目录 线程标识 线程创建 线程终止 线程标识 就像每个进程有一个进程ID一样,每个线程也都有自己的线程ID。进程ID在整个系统中是唯一的,但线程ID不同,线程ID不同,线程ID只有在它所属的进程上下文中才有意义。 线程ID是由 pthread_t 数据类型来表示的,实现的时候可以用一个结构来代表 pthread_t 数据类型,所以可移植的操作系统实现不能把它作为整数处理。因此必须使用一个函数来对两个线程ID进行比较。 # include <pthread.h> int pthread_equal ( pthread_t tid1 , pthread_t tid2 ) ; 返回值:若相等,返回非 0 数值;否则,返回 0 。 Linux 3.2.0使用无符号长整型表示 pthread_t 数据类型。 Mac OS X 10.6.8 使用一个指向 pthread 结构的指针来表示 pthread_t 数据类型。 pthread_self 函数用于获取自身的线程ID。 # include <pthread.h> pthread_t pthread_self ( void ) ; 返回值:调用线程的线程ID。 线程创建 传统UNIX进程模型中,每个进程只有一个控制线程。从概念上讲

RPC是什么?

為{幸葍}努か 提交于 2020-02-28 10:50:16
目录 1、什么是RPC? 2、典型RPC调用框架 3、Thrift框架介绍 1、什么是RPC? (1)RPC(remote procedure call):远程调用过程。 服务器A部署应用a,服务器B部署应用b,当A服务器调用B服务器上的b应用的函数或者方法时,因为不在同一内存空间,不能直接调用,必须通过网络来表达调用的语义传达调用的数据。 既然是调用B机器上的服务,那A机器自己也创建一个这个服务不就也可以调用了么。原理上是可以这么做,但是随着计算机的横向发展,集群的出现,使得多台机器部署成一个集群来对外提供服务。无法在一个进程内甚至同一台计算机上完成的需求就得需要RPC来实现了。 RPC的框架很多,比如最早的额CORBA,Java RMI,Web Service的RPC风格,Hessian,Thrift,甚至是Rest API。 (2) 本地过程调用过程 RPC就是要像调用本地的函数一样去调远程函数。在研究RPC前,我们先看看本地调用是怎么调的。假设我们要调用函数Multiply来计算lvalue * rvalue的结果: 1 int Multiply(int l, int r) { 2 int y = l * r; 3 return y; 4 } 5 6 int lvalue = 10; 7 int rvalue = 20; 8 int l_times_r = Multiply

Python学习-函数,函数参数,作用域

坚强是说给别人听的谎言 提交于 2020-02-28 10:23:16
一、函数介绍 函数定义:函数时组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 我们已经知道python提供了许多内建函数,print(), type()等。我们也可以自己创建函数,这被叫做用户自定的函数。 定义一个函数 定义是遵守的简单的规则: 以 def 关键字开头,后接函数标识符名称和圆括号(),然后以冒号 : 结尾(第一行也叫函数头) 圆括号中放入参数名(形参),如果没有,可以留空 函数头的下一行,缩进4个空格,开始写函数体 函数体中可以有 return [表达式] 语句,返回一个值给调用者,如果没有return语句,默认返回 None 一个自定义函数实例: # 打印两次传入的变量的值 # 此函数没有return语句,返回None给调用者 def print_twice(name): #函数头 形参:name print('你好', name) #函数体 print('你好', name) 定义一个函数会创建一个函数对象(function object),其类型是funtion: print(print_twice) print(type(print_twice)) #输出结果: <function print_twice at 0x10217df28> <class 'function'> 函数调用: 调用方式,函数名(),如果函数有参数,将实际参数(实参

CASSINI源代码分析

北战南征 提交于 2020-02-28 08:56:28
CASSINI 源代码分析 2004-11-10 http://blog.csdn.net/shanhe/ 为什么要分析 CASSINI? Cassini (卡西尼)是 asp.net 上的一个开源项目。主要给出一个脱离 IIS 实现 asp.net 执行环境。项目演示了如何自己创建一个 web server ,并且运行一个 asp.net 应用程序。 研究 Cassini 可以了解: 1 、 .net 环境下的 web server 如何实现,注意那些问题 2 、 asp.net 的执行本质 3 、了解 appDomain 的执行概念 安装 没有什么问题,默认即可 运行 出现问题,主要是我的 .net framework 是 1.0.3705 而 系统下载的经过编译的 cassini.dll 是在 v1.1.4322 下编译,更麻烦的是经过签名的。所以启动时候回提示找不到 v1.1.4322 的 framework 而我的目标是想分析这个程序,该如何进行? 既然获得了整个源代码,我就应该从理论上熟悉并且可以掌握整个系统,我建立一个工程,将全部 .cs 文件和资源文件加入到一个项目,同时删除原有项目默认的 form1 ,因为 CassiniWebServer.cs 已经有一个 main 入口。 调试,解决问题 1、 编译 OK ,但是,无法启动,原来缺少 .ico 文件

js函数对象

ε祈祈猫儿з 提交于 2020-02-28 07:07:10
函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解。   javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法: 以下是引用片段: function func1(…){…} var func2=function(…){…}; var func3=function func4(…){…}; var func5=new Function();   这些都是声明函数的正确语法。它们和其他语言中常见的函数或之前介绍的函数定义方式有着很大的区别。那么在JavaScript中为什么能这么写?它所遵循的语法是什么呢?下面将介绍这些内容。   认识函数对象(Function Object)   可以用function关键字定义一个函数,并为每个函数指定一个函数名,通过函数名来进行调用。在JavaScript解释执行时,函数都是被维护为一个对象,这就是要介绍的函数对象(Function Object)。   函数对象与其他用户所定义的对象有着本质的区别,这一类对象被称之为内部对象,例如日期对象(Date)、数组对象(Array)、字符串对象(String)都属于内部对象

学习ES7+ES8

霸气de小男生 提交于 2020-02-28 06:03:30
es6 语法:http://es6.ruanyifeng.com/#docs/async 作者: 阮一峰 撰文为何 身为一个前端开发者,ECMAScript(以下简称ES)早已广泛应用在我们的工作当中。了解ECMA机构流程的人应该知道,标准委员会会在每年的6月份正式发布一次规范的修订,而这次的发布也将作为当年的正式版本。以后的改动,都会基于上一版本进行修改。所以,我们这次就基于ES6的版本对ES7、ES8版本的新增以及修改内容,做一次简要的总结,方便我们快速开发。 ES7新特性 ES7在ES6的基础上添加了三项内容: 求幂运算符(**) 、 Array.prototype.includes() 方法、函数作用域中严格模式的变更。 Array.prototype.includes()方法 includes() 的作用,是查找一个值在不在数组里,若在,则返回 true ,反之返回 false 。 基本用法: ['a', 'b', 'c'].includes('a') // true ['a', 'b', 'c'].includes('d') // false Array.prototype.includes() 方法接收两个参数: 要搜索的值和搜索的开始索引 。当第二个参数被传入时,该方法会从索引处开始往后搜索(默认索引值为0)。若搜索值在数组中存在则返回 true ,否则返回

Java学习-常用函数接口(三)

一曲冷凌霜 提交于 2020-02-28 04:19:30
常用的函数式接口_Predicate接口 import java . util . function . Predicate ; /* java.util.function.Predicate<T>接口 作用:对某种数据类型的数据进行判断,结果返回一个boolean值 Predicate接口中包含一个抽象方法: boolean test(T t):用来对指定数据类型数据进行判断的方法 结果: 符合条件,返回true 不符合条件,返回false */ public class Demo01Predicate { /* 定义一个方法 参数传递一个String类型的字符串 传递一个Predicate接口,泛型使用String 使用Predicate中的方法test对字符串进行判断,并把判断的结果返回 */ public static boolean checkString ( String s , Predicate < String > pre ) { return pre . test ( s ) ; } public static void main ( String [ ] args ) { //定义一个字符串 String s = "abcdef" ; //调用checkString方法对字符串进行校验,参数传递字符串和Lambda表达式 /*boolean b =