局部变量

python基础知识之函数与函数式编程

允我心安 提交于 2020-04-08 12:25:21
3种编程方式:   1.面向对象(最火的)。(过去大部分的编程方式);》》主要是依靠:类》》class ,就是具有逻辑的过程,说话的方式描述   2.面向过程。主要是 过程》》def 过程是没有返回值的函数,但是python也会返回none 基本与函数式编程没有区别了,最小的单元是一个一个的def定义的过程,一个一个逻辑是def定义的过程   3.函数式编程。编的函数更接近数学中的函数 是一种编程规范 也就是如何编程的方法论 主要是 函数》》def 例如lisp #hashshell erlang# 三种语言 可以 真正较纯粹的使用函数式编程来编写程序。 示例:(1+2)*3-4 传统编程方法:var a =1+2;        var b =1*3;        var c =b-4; 函数式编程则要求使用函数进行,把不同的运算定义成不同函数进行计算,写成下面的形式来进行: var result = subtract(multiplely(add(1,2),3),4); python中的函数式编程是:逻辑结构化和过程化的一种编程方法 一,函数基础介绍(day3 22)【funt_test.PY】 def func1():#函数 '''文档介绍''' print('in the func1')#过程 return 0#返回值 def func2():#过程 '''文档介绍'''

Keil的c语言编译器

守給你的承諾、 提交于 2020-04-07 13:18:26
我曾经通过查看反汇编代码对KEILC编译器进行了测试,大概有这么一下内容,也得出一些结论。 (1) 全局变量 :如果程序中定义了全局变量,而且初始值不是0。此时,在程序调到main()函数执行前,除了要进行内存清零、初始化堆栈外,还需要将全局变量的初始值加载到内存的指定区域(编译过程中为全局变量分配的空间)。 (2) 局部变量 :局部变量通常使用那些缓冲内存(用作保存运算过程的中间数据)。初始化的局部变量,通常程序中都会对用到的缓冲内存重新赋值。 但是,对于没有初始化的局部变量需要注意“ 无知情的情况下被赋了值 ”。下边的子函数中定义了变量,但是并未初始化。按照标准C语言的准则,未初始化的变量的初值默认是0,但是KEIL对未初始化的局部变量的处理不是这样的。 void function() { unsigned char k,j; if (k<j) ; else { } } 实际的编译后的反汇编程序看不到对这些局部变量的初始化。这些局部变量可能会占据那些还未被使用的内存或者其他子函数中局部变量已经释放的空间(但是这些空间可能并没有清零)。倘若是后者,其他函数局部变量释放的空间由于并没有清零,所以这些局部变量就一开始被赋了不能预先知道的值,这是不希望看到的。所以如果使用一个局部变量,就给这个变量赋个初值。 (3)谨防程序在“ 无知情的情况下被优化 ”

JavaScript(1) -- JS入门

拟墨画扇 提交于 2020-04-06 17:44:45
1. JavaScript介绍 JavaScript是属于HTML与Web的解释性编程语言,也是一种以函数优先的弱类型轻量级的脚本语言,无需进行预编译即可与HTML前端页面进行行为交互,支持跨平台运行,可在多种平台下(如Windows、Linux、Mac、Android、iOS等)。目前JavaScript被广泛地应用于Web前端Html实现页面交互、实现浏览器页面事件响应、前端数据验证、检验访客浏览器信息、控制cookies的创建与修改、基于Node.js技术进行服务器端编程。 2. JavaScript基本语法 2.1. JavaScript的三种定义方式 JS一般有三种定义的方式: ① 写在<a>标签的href属性内; ② 写在<script>标签内; ③ 单独写一个JS文件,使用外连的方式引入; 下面直接给出代码示例以区分这三种方式的不同: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta charset="UTF-8"> <title>三种JS的写法</title> <!--第二种写法:写在script代码块中--> <script type="text/javascript">

06-局部变量和全局变量

守給你的承諾、 提交于 2020-04-04 06:58:43
局部变量:在函数内部定义的变量,只是在当前函数中使用,在其他函数就不行 In [1]: def test1():    #定义一个test1函数 ...: a = 100  #赋值 ...: In [2]: def test2():    #定义一个test2函数 ...: print("a=%d"%a)  #打印 ...: In [4]: test1()  #调用test1函数,因为没有return,所以结果为空 In [5]: test2()  #调用test2函数,报错 --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-5-35ebc1c532fc> in <module>() ----> 1 test2() <ipython-input-2-d9ea9e4cdd20> in test2() 1 def test2(): ----> 2 print("a=%d"%a) 3 NameError: name 'a' is not defined  #表示a没有定义,a是在test1函数中定义的局部变量 全局变量:在函数外定义,在任何函数里都能使用 In [1]:

雷林鹏分享:Java 变量类型

故事扮演 提交于 2020-03-30 15:04:58
  在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:   type identifier [ = value][, identifier [= value] ...] ;   格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。   以下列出了一些变量的声明实例。注意有些包含了初始化过程。   int a, b, c; // 声明三个int型整数:a、 b、c。   int d = 3, e, f = 5; // d声明三个整数并赋予初值。   byte z = 22; // 声明并初始化z。   double pi = 3.14159; // 声明了pi。   char x = 'x'; // 变量x的值是字符'x'。   Java语言支持的变量类型有:   局部变量   成员变量   类变量   Java局部变量   局部变量声明在方法、构造方法或者语句块中;   局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;   访问修饰符不能用于局部变量;   局部变量只在声明它的方法、构造方法或者语句块中可见;   局部变量是在栈上分配的。   局部变量没有默认值,所以局部变量量被声明后,必须经过初始化,才可以使用。   实例1   在以下实例中age是一个局部变量

Java------数据和表达式

一笑奈何 提交于 2020-03-28 11:01:18
一、基本语法元素 什么是语句?什么是块? 语句是java程序执行最小的单位,程序的各语句间以 " ; " 分隔. 大括号" { } "包含的一系列的语句称为语句块,简称为块,语句块可以嵌套,一个语句块中可以有多个子语句块 ,从语法上看,块可以被看作以一个语句. 什么是注释? 注释可理解成为代码程序进行解释说明,提高程序的可读性.且注释不影响程序的执行结果,编译器会忽略注释. 但是注释也有规范:注释不能随意的插在一个标识符或关键字之中,要保证程序中最基本元素的完整性,所以注释最好在程序段的空白处插入 . 注释 3 种形式: // 在一行内的注释 -----> 一般用于对声明的变量、一行程序的作用做解释说明 /* 一行或多行的注释 */ -----> 多用于说明方法的功能、设计逻辑、基本思想 /** 文档注释 */ 什么是标识符? 标识符是由字母、数字、下划线(_)、或美元符($)组成的字符串,其中 数字不能作表示符的开头 ,且标识符要 区分大小写. 标识符可用作变量名、方法名、接口名、类名. For example: Username username UserName 根据标识符区分大小写的原则可以得出 此三种标识符为不同的标识符. 对于各类名的命名规则: 类名或接口名:多为名词,每个单词的首字母都要大写: UserName; 方法名:多为动词,含有大小写,首字母小写

静态变量、全局变量和局部变量

家住魔仙堡 提交于 2020-03-28 06:44:07
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 堆和栈的区别: 一、预备知识——程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)——由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)—— 一般由程序员分配(如new、malloc)和释放(delete,free), 若程序员不释放,程序结束时可能由OS回收,但这样会导致内存泄露,严重的导致系统崩溃, 如一个程序是长期运行的,申请的变量永远都得不到释放,系统内存会耗尽。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)——全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束后由系统释放。 4、文字常量区 —— 常量字符串就是放在这里的。 程序结束后由系统释放 。 5、程序代码区 —— 存放函数体的二进制代码。 堆区就就是就是存放new出来的变量的 1.从作用域看: C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 1、全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然

判断栈和堆的生长方向

旧时模样 提交于 2020-03-27 21:22:15
如何判断栈的增长方向? 对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。 在一个物质极大丰富的年代,除非无路可退,否则我们坚决不会使用汇编去解决问题,而对于这种有系统编程味道的问题,C是一个不错的选择。那接下来的问题就是如何用C去解决这个问题。 C在哪里会用到栈呢?稍微了解一点C的人都会立刻给出答案,没错,函数。我们知道,局部变量都存在于栈之中。似乎这个问题立刻就得到了解答,用一个函数声明两个局部变量,然后比较两个变量的地址,这样就可以得到答案。 等一下,怎么比较两个变量的地址呢? 先声明的先入栈, 所以,它的第一个变量的地址如果是高的,那就是从上向下增长。“先声明的先入栈”?这个结论从何而来?一般编译器都会这么处理。要是不 一般呢?这种看似正确的方法实际上是依赖于编译器的,所以,可移植性受到了挑战。 那就函数加个参数,比较参数和局部变量的位置,参数肯定先入栈。那为什么不能局部变量先入栈?第一反应是怎么可能,但仔细想来又没有什么不可以。所以,这种方法也依赖于编译器的实现。 那到底什么才不依赖于编译器呢? 不妨回想一下,函数如何调用。执行一个函数时,这个函数的相关信息都会出现栈之中,比如参数、返回地址和局部变量

内存四区-栈区

余生颓废 提交于 2020-03-27 21:21:55
局部变量存放在栈区,函数return以后申请的这块栈区就被回收(C++编译器把这段内存析构了),所以在函数内声明的局部变量,函数外不能使用该局部变量的内存地址。下面用代码说明: #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> char *getMem() {   char buf[32]; //因为buf是临时变量,是放在栈区存放   strcpy(buf, "I love u");   return buf; } int main() {   char *tmp = NULL;   tmp = getMem(); //getMem函数return以后,buf数组占用的32字节的栈区已经被析构了,tmp接收到的只是这段内存的内存地址,可能是乱码,可能是任何东西   printf("%s \n", tmp);   system("pause");   return 0; } 用DevC++运行报错:function returns address of local variable (函数返回局部变量的地址) 用VS2017 Debug项目: 不知道指向了哪块内存 用VS2017 Release项目: 可以正常显示 看到用VS2017

【转】全局变量、静态全局变量、静态局部变量和普通局部变量的区别

老子叫甜甜 提交于 2020-03-26 10:13:58
原文链接:https://blog.csdn.net/qq_39736982/article/details/82685277 按存储区域分: 1、全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区 2、局部变量存放在内存的栈区 按作用域分: 1、全局变量在整个工程文件内都有效; 2、静态全局变量只在定义它的文件内有效; 3、静态局部变量只在定义它的函数内有效,且程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。 4、全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。 5、静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部变量与局部变量在存储位置上不同,使得其存在的时限也不同,导致对这两者操作 的运行结果也不同。 #include <stdio.h> void func();//函数声明,主要是因为被调用的函数定义写在了main函数后面了 int n = 1; //全局变量 int main(void) { static int a; // 静态局部变量,但静态局部变量只在定义它的函数中可见,并且只初始化一次 int b = -10; // 局部变量 printf("main: a=%d, b=%d, n=%d\n",a,b,n); b += 4; func()