函数声明

一. python函数基础知识

一曲冷凌霜 提交于 2019-12-17 01:16:45
一. 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数, 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 #语法 def 函数名(参数1,参数2,参数3,...): '''注释''' 函数体 return 返回的值 #函数名要能反映其意义 def auth(user:str,password:str)->int: if user == '111' and password == '111': return 1 # print(auth.__annotations__) #{'user': <class 'str'>, 'password': <class 'str'>, 'return': <class 'int'>} user=input('用户名>>: ').strip() pwd=input('密码>>:

js学习:函数

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-16 23:45:24
概述 函数的声明 JavaScript 有三种声明函数的方法 function 命令 function命令声明的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。 这叫做函数的声明(Function Declaration)。 function print(s) { console.log(s); } 函数表达式 除了用function命令声明函数,还可以采用变量赋值的写法。 var print = function(s) { console.log(s); }; 这种写法将一个匿名函数赋值给变量。这时,这个匿名函数又称函数表达式(Function Expression),因为赋值语句的等号右侧只能放表达式。 采用函数表达式声明函数时,function命令后面不带有函数名。如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效。 var print = function x(){ console.log(typeof x); }; // ReferenceError: x is not defined print() // function 上面代码在函数表达式中,加入了函数名x。这个x只在函数体内部可用,指代函数表达式本身,其他地方都不可用。这种写法的用处有两个,一是可以在函数体内部调用自身

指针复杂声明

Deadly 提交于 2019-12-16 22:03:34
转载自:http://blog.csdn.net/tiantangniao232/article/details/1851003 在前两篇文章都理解的基础上,本篇文章将教你如何去理解指针的复杂声明。 首先先介绍一下 左右法则:其实就是------向右看,向左看 首先找到变量名,然后向右看,遇到括号改变阅读方向,重复这个过程,直到解析完整个表达式。 看到上面的法则,如果没有接触过这个法则,可能会不知所云。 下面就通过一些具体的例子来教你如何理解复杂的指针声明: 第一个: int (*p)[3]; 1-----首先找到变量名 p ,从变量名向右看是括号,依据法则改变解析方向,向左看,有一个 * 说明 p是一个指针,至此我们知道 p 是一个指针,至于是什么样的指针需要更进一步的解析。 2-----解析完括号向右看 是一个 [3],是一个具有3个整型元素数组,所以 p 就是一个指向这个数组的指针,学名数组指针。 第二个: int (*func)(int *p); 1-----首先找到变量名 func,从变量名向右看是括号,依据法则改变解析方向,向左看,有一个* 说明 func是一个指针,至此我们知道 func是一个指针,至于是一个什么样的指针需要更进一步解析。 2-----解析完括号向右看,发现 func是一个函数指针,参数类型是 int * ,返回值是 int 第三个: int (

Go语言 4 数组、切片和映射

核能气质少年 提交于 2019-12-16 15:06:05
文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ 数组是由同构的元素组成。结构体是由异构的元素组成。数据和结构体都是有固定内存大小的数据结构。相比之下,切片和映射则是动态的数据结构,它们根据需要动态增长。 4.1 数组 数组是一系列同一类型数据的集合,数组中包含的每个数据被称为数组元素。一个数组包含的元素个数称为数组的长度,数组长度是固定的。一个数组可以由零个或多个元素组成。 1 数组声明 数组声明的一般形式: var 数组名 [ 长度 ] 类型 示例如下: var arr [10]int //10个元素的整型数组 var ptrs [5]*float64 //5个元素的指针数组,每个指针都指向float64类型 var points [8] struct { x, y int } //8个元素的结构体类型 var arry [2][3]int //2*3的二维整型数组 2 简短声明 与变量的简短声明一样,数组也可以简短声明。如果在数组的长度位置出现的是 “ ... ”省略号,则表示数据的长度是根据初始化值得个数来计算。 a := [3]int{1, 2, 3} // 长度为3的数组 b := [5]int{1, 2, 3} //长度为10,前三个元素为1、2、3,其它默认为0 c := [...]int{4, 5,

C51学习笔记

筅森魡賤 提交于 2019-12-15 21:03:36
一, C51内存结构深度剖析 二, reg51.头文件剖析 三, 浅淡变量类型及其作用域 四, C51常用头文件 五, 浅谈中断 六, C51编译器的限制 七, 小淡C51指针 八, 预处理命令 一,C51内存结构深度剖析 在编写应用程序时,定义一个变量,一个数组,或是说一个固定表格,到底存储在什么地方; 当定义变量大小超过MCU的内存范围时怎么办; 如何控制变量定义不超过存储范围; 以及如何定义变量才能使得变量访问速度最快,写出的程序运行效率最高。以下将一一解答。 1 六类关键字(六类存储类型) data idata xdata pdata code bdata code: code memory (程序存储器也即只读存储器)用来保存常量或是程序。code memory 采用16位地址线编码,可以是在片内,或是片外,大小被限制在64KB 作用:定义常量,如八段数码表或是编程使用的常,在定义时加上code 或明确指明定义的常量保存到code memory(只读) 使用方法: char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 此关键字的使用方法等同于const data data memory (数据存储区)只能用于声明变量,不能用来声明函数,该区域位于片内,采用8位地址线编码

JavaScript数组,函数及预解析

强颜欢笑 提交于 2019-12-14 14:01:02
1 数组 1.1 为什么要学习数组 之前学习的数据类型,只能存储一个值(比如:Number/String。我们想存储班级中所有学生的姓名,此时该如何存储? 1.2 数组的概念 所谓数组,就是将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。 1.3 数组的定义 数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整。 通过数组字面量创建数组 创建一个空数组 var arr1 = []; 创建一个包含3个数值的数组,多个数组项以逗号隔开 var arr2 = [1, 3, 4]; 创建一个包含2个字符串的数组 var arr3 = ['a', 'c']; 可以通过数组的length属性获取数组的长度 console.log(arr3.length); 可以设置length属性改变数组中元素的个数 arr3.length = 0; 1.4 获取数组元素 数组的取值 格式:数组名[下标] 下标又称索引 功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。 var arr = ['red',, 'green', 'blue']; arr[0]; // red arr[2]; // blue arr[3]; // 这个数组的最大下标为2,因此返回undefined 1.5 遍历数组 遍历:遍及所有

js声明变量的三种方式

邮差的信 提交于 2019-12-13 07:28:32
JS 声明变量的三种方式 (1)使用变量步骤:a.声明-->b.赋值-->3.调用 正确用法: <script type="text/javascript"> // 方式一:声明和赋值不分离 var correctUsage = "正确使用变量的方式一"; alert(correctUsage); //能够弹出来该变量所对应的值 // 方式二:声明和赋值分离 var correctUsage2; correctUsage2 = "正确使用变量的方式二"; alert(correctUsage2); </script> 错误用法: <script type="text/javascript"> var correctUsage; // 错误一: 没有赋值就使用 alert(correctUsage); //underfined // 错误二:没有赋值就拼接字符串 correctUsage += "没有赋值就改值"; alert(correctUsage); //undefined没有赋值就改值 </script> (2)变量的产生与死亡 已使用var关键词声明表里为例 2.1 声明在函数外部的变量 产生:js加载到该变量所在行时产生 死亡:js代码加载完毕,变量死亡 2.2声明在函数内部的变量 前提:该变量所在的函数被调用 产生:js执行到该变量所在行时产生 死亡:

【JS】预编译(图解)

别来无恙 提交于 2019-12-12 13:28:03
预编译是js的一个特色,也算是闭包之前最难的一个知识点。预编译有4句公式,而这4句公式只要背熟就能理解预编译。这4句公式放在本文最末尾。本节篇幅比较长,要理解的东西也比较多。在学习预编译之前要记住下面这句话: JS的声明和执行(赋值)是分开两步操作的,声明属于预编译环节。 要了解预编译,就要先了解变量声明。变量声明又分为全局和局部。局部变量和作用域有关,稍后会讲到。 全局变量声明要记住2句话 1、任何变量,如果未经声明就赋值,此变量就为全局变量所有。 2、一切声明的全局变量,都是window的属性。 微信订阅号:Rabbit_svip 在Console可以看到输出的window里面,有变量a。 如果输出 window.a ,那就直接输出了123了。由此可以解析上面所说的全局变量的两句话。在全局声明的变量,称为全局变量。全局变量的作用域就是全局。局部变量的作用域通常是在函数内部。全局作用域称为GO,全称:Global Object。临时作用域成为AO,全称:Activation Object。而GO又可以理解为window这个对象。GO和AO要和JS的预编译一起理解。 【预编译公式】 1、创建GO/AO对象。 2、找形参和变量声明,将变量和形参名作为AO的属性名,值为undefined。 3、将实参值和形参统一。 4、在函数体里面找函数声明,值赋予函数体。 看下面的代码

回调函数使用详解

最后都变了- 提交于 2019-12-12 13:04:44
转载自: https://blog.csdn.net/miao19920101/article/details/75648491 回调函数的使用 回调函数在C语言中是通过函数指针来实现的,通过将回调函数的地址传给被调函数从而实现回调。因此,要实现回调,必须首先定义函数指针。 1. 回调指针 概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针来存取函数,把这种指向函数入口地址的指针称为函数指针。 1. 采用函数调用的一般形式 首先看一个hello world!的程序: int application_start( void ) { OSStatus err = kNoErr; char *s ="hello world !"; app_log(" s:%s",s); return err; } 打印的结果是: [0][TCP: main.c: 90] s:hello world ! 如果采用函数调用的形式来实现: //声明 void Islog( char *s); int application_start( void ) { OSStatus err = kNoErr; Islog("hello world !")

动画:面试官问我 JS「变量提升」我头皮发麻,最后把这篇动画甩给了他

我们两清 提交于 2019-12-12 11:03:18
写在前边 某一外包公司小李,刚刚入门前端之后,老板就让他写一段前端 JS 项目代码,不料,这时之前学过Java的小李遇到了一个问题,对于经常写 Java代码的小李来说,这属于一个灵异事件。项目中的一段代码如下: 小李越想越感到纳闷,明明我在打印之前,没有声明任何的变量呀,为什么还能使用未声明的变量,从而打印出 a 的值呢,是不是我的编译器出现了问题?遇到问题的小李,越想越奇怪,就又写了一段测试代码。 按理说应该输出undefined呀,为什么会输出的结果为 10。小李越想越奇怪,到底哪里出现问题了。这时老板过来了,看了看代码,笑了笑说,你还是去先学学基础吧。就这样,小李在网上找到了小鹿的这篇教程,学完之后,才恍然大悟。 思维导图 1、什么是变量提升? 我们首先要弄明白什么是变量提升?顾名思义,从表面上的意思去分析,代码在真正的执行之前变量就已经进行了提升声明。是的,确实是这么个意思,但是我们后边的原理部分说的这种所谓的“提升”却不是真正的提升,而是为了让开发者便于理解,才有了变量提升这以名词,话说到这,那么它是如何进行提升的呢? 我们还是用小李的例子,第一个例子如下: 首先,程序执行,首先将声明的变量提升到最前边,a 变量就会被提升到最前边,但是并不会进行赋值操作,变量提升完毕之后,代码自上而下顺序执行。输出 a 的值,a 此时没有被赋值,所以输出 undefined,继续执行,a