局部变量

【python基础】命名空间

隐身守侯 提交于 2019-12-28 00:04:35
一、命名空间的定义   变量名和变量值的映射   命名空间是用字典实现, key就是变量的名,value就是变量值 二、命名空间的分类   python程序执行的过程中, 同时会有2-3个活动的命名空间(函数调用时,有3个命名空间, 函数调用结束后,有两个命名空间)   根据变量的位置, 将命名空间分为三类:     局部命名空间:Local, 指的是函数所拥有的命名空间, 包括函数的入参,函数内部的局部变量     全局命名空间:Global, 指的是模块(.py文件)所拥有的命名空间, 包括函数, 类, 全局的变量,导入模块中的内容     内建命名空间:Build-in, 指的是python内置的函数和异常.     同一个命名空间中,变量名不能重复; 不同的命名空间之间,变量名互不影响 三、命名空间的生命周期   局部命名空间:函数调用的时候创建, 函数调用结束后被删除   全局命名空间:模块被加载的时候创建, python解释器退出的时候被删除   内建命名空间:随着python解释器的启动而创建, python解释器退出的时候被删除 四、命名空间的访问   locals() 用这个函数可以访问到局部的命名空间   globals() 用这个函数可以访问到全局的命名空间   标准的情况是:     在局部中, 使用locals()     在全局中, 使用globals(

函数

寵の児 提交于 2019-12-27 09:56:44
一.函数 1.函数定义 # 定义一个函数: def my_len(): 函数体 # def 关键字 -- 定义 # func 函数名 -- 和变量定义规则一样 # () 必须要写格式 # : 声明语句结束 2.参数 # 形参: 函数的定义中括号里是形参 # 实参: 函数的调用括号里是实参 # 位置传参时 形参和实参必须一一对应 # 传参: 将实参传递给形参的过程就是传参 1.位置参数 def fun(a,b): print(a,b) fun("A","B") 2.默认参数 def fun2(a=1,b=2): pass # fun2() #不传参,默认打印1,2 # fun2(a=10,b=20) #传参,覆盖 3.混合参数(位置参数必须在默认参数前面) def fun3(a,b,c=1): print(a,b) fun3(1,2,c=10) 4.仅限关键字参数(必须在*args和**kwargs之间,如c) def fun4(a,*args,b=10,c,**kwargs) print(a,*args,b,c,kwargs) #1 12 10 20 {'m': 10} fun4(1,12,b=10,c=20,m=10) #注意实参必须是c=10 3.动态参数 #参数优先级:位置参数>动态参数>默认参数>动态关键字 ''' def fun(a,b,*args,c=1,d=2,*

深入理解C语言内存管理

北慕城南 提交于 2019-12-27 02:10:21
之前在学Java的时候对于Java虚拟机中的内存分布有一定的了解,但是最近在看一些C,发现居然自己对于C语言的内存分配了解的太少。 问题不能拖,我这就来学习一下吧,争取一次搞定。 在任何程序设计环境及语言中,内存管理都十分重要。 内存管理的基本概念 分析C语言内存的分布先从Linux下可执行的C程序入手。现在有一个简单的C源程序hello.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 int var1 = 1; 4 5 int main(void) { 6 int var2 = 2; 7 printf("hello, world!\n"); 8 exit(0); 9 } 经过gcc hello.c进行编译之后得到了名为a.out的可执行文件 [tuhooo@localhost leet_code]$ ls -al a.out -rwxrwxr-x. 1 tuhooo tuhooo 8592 Jul 22 20:40 a.out ls命令是查看文件的元数据信息 [tuhooo@localhost leet_code]$ file a.out a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs),

第3章 作用域

佐手、 提交于 2019-12-27 02:07:04
第3章 作用域 3.1 关于作用域 3.1.1 局部变量与全局变量 (1)局部变量:Go语言中,在函数体或代码块内声明的变量称为局部变量,他们的作用域只在其所属的函数体或代码块内,特别的,参数和返回值变量也是局部变量。 (2)全局变量:Go语言中,在函数体外声明的变量称为全局变量,他们的作用域都是全局(在本包范围内)。全局变量可以在整个包甚至是外部包(被到处后)使用。 (3)简式变量:Go语言中使用 “:=” 声明的变量一般也是局部变量,如果新的局部变量域同名已定义的变量不在一个作用域中,Go语言会在此作用域新定义的这个局部变量,遮盖住全局变量。 3.1.2 显式与隐式代码块 根据Go语言的规范,Go语言中的标识符作用域是基于代码块的。代码块是包裹在一对花括号{}内部的声明和语句。 特别的,Go语言中某变量具体对应的内存的分配,仅在定义时完成。即,确定某变量对应的具体内存,直接寻找其定义时对应的内存即可。 package main var ( Ga int = 100 ) func GetGa1 ( ) func ( ) int { Ga := 10 return func ( ) int { Ga = Ga + 1 return Ga // Ga对应GetGa1中的Ga := 10 } } func GetGa2 ( test func ( ) int ) func ( )

Python之函数

佐手、 提交于 2019-12-26 21:38:43
为什么要使用函数? 在说明原因之前,我们先来看一个需求,比如你的boss需要你写实现以下的打印输出,并插入在某段程序代码的20个位置都条件此打印输出: ******************** ******************** hello,python! ******************** ******************** 你咔咔咔就用代码实现了需求,并将代码添加到了程序的20个位置,代码如下,但是你的boss看着你的代码却不是很认可,他说:如果我现在需要你把所有的"*"都换成"#"。你一脸懵逼,难道要一个一个的改吗? print( """ ******************** ******************** hello,python! ******************** ******************** """ ) 苦苦思索不得果,询问boss,boss捋了捋袖子,几下就给你搞定了,对你说:去学学函数吧,便离去,深藏功与名,代码如下: def index(): """打印符号""" print('*'*20) def say(): """打印问候""" print("hello,python!") index() index() say() index() index() 你看了一眼代码豁然开朗,那么这里这么写到底有什么好处呢?

python之函数

谁说我不能喝 提交于 2019-12-26 21:38:09
Python之函数 标签(空格分隔): 函数 现在老板要求你写一个监控程序,24小时全年无休的监控你们公司的网站服务器的系统的状况,当CPU、memory、disk等指标的使用量超过阀值时即发邮件警报 你会采取如下的方法: 2.上述代码是实现了功能但是重复代码太多了:不易维护,如果日后需要修改发邮件的代码,就会很麻烦,每个地方都要遍历一遍; 3.因此只需要把重复的代码提取出来,放在一个公共的地方,起一个名字,以后谁想用这段代码,就通过这个名字调用就行了,如下: 例如:如下的一个简单的函数: def syhi():#the name of def print("hello world") syhi()# 调用函数 备注:函数名是指向内存这段代码的地址,只有加上括号是执行内存里面的具体的内容; 另一种内容是带参数的函数:例如当你想用同一个函数,但是有些地方又是不一样的,这时候怎么办呢,就使用参数; a=7 b=5 c=a**b print(c) #另一种是函数的形式: def calc(x,y) res=x**y return res # return the result c =calc(a,b) print(c) 放了参数的函数在调用的时候一定要传参数,不然会报错的; 函数的特性:减少重复代码,使程序变的可扩展,使程序变得易于维护; 函数的默认参数 1.形参:

MySQL变量的使用总结

烈酒焚心 提交于 2019-12-26 00:47:15
MySQL变量的使用总结 MySQL的变量分为系统变量和自定义变量两大类。自定义变量变量由用户定义,又分为局部变量和用户变量;系统变量变量由系统定义,又分为会话变量和全局变量。 一、局部变量 局部变量一般用在SQL语句块中,例如:存储过程、自定义函数、触发器中,局部变量仅仅在定义它的begin/end块中有效,作用范围为该语句块。定义局部变量需要使用DECLARE关键字进行声明,然后给局部变量赋值。 1、局部变量的声明 DECLARE 局部变量名称 类型; --声明局部变量 DECLARE 局部变量名称 类型 【DEFAULT 值】; --声明局部变量并设置默认值 2、局部变量的赋值 局部变量有两种赋值方式: (1)使用SET关键字,语法如下: SET 局部变量名称=值; SET 局部变量名称:=值; (2)使用SELECT关键字,语法如下: SELECT 局部变量名称:=值; SELECT 字段1,字段2,... INTO 局部变量名称1,局部变量名称2,... FROM 表; 4、局部变量的使用 SELECT 局部变量名称; 5、局部变量的应用举例 定义一个自定义函数,通过输入学生姓名和课程名称查询该学生所学课程的成绩。该自定义函数使用了一个局部变量result,类型为int,通过select…into命令把查询结果保存到该变量,然后使用return返回变量的值。 mysql>

深入理解JVM - JVM内存模型

不羁的心 提交于 2019-12-25 23:00:54
各版本的差异 JDK1.6 在JDK1.6 的时候运行时常量池在方法区中 JDK1.7 在JDK1.7 的时候运行时常量池在堆中 JDK1.8 在JDK1.8 的时候,JVM内存模型直接将方法区移到了本地内存中,叫元数据空间。该区域的内存大小就只受本机总内存的限制,但是当申请不到足够内存时也会报出 程序计数器 主要作用是:存储当前线程运行时的字节码行号,占用空间小且线程私有。 字节码解释器会通过改变程序计数器的值来选取下一条需要执行的字节码指令,并且分支(if)、循环、跳转、异常处理、线程恢复等基础功能都是基于程序计数器来实现的。 此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。 JAVA 虚拟机栈 线程私有,描述的是Java方法执行的内存模型,主要作用是:存储运行当前线程需要执行的所有方法所对应的栈帧。 一个线程栈的默认大小是1M,可用参数 –Xss调整大小,例如-Xss256k; 栈帧 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是Java 虚拟机栈(Virtual Machine Stack)的栈元素。 每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 每一个方法的执行过程,就是一个栈帧在虚拟机栈中从入栈到出栈的过程。

Python-函数

随声附和 提交于 2019-12-25 13:15:26
·函数(function) 笔记: 在数学中, 一次函数y = 8x + 2,也可以写成: f(x) = 8x + 2 当x = 1时,表达式f(1) = 8*1+2 = 10; 当x = 2 时,表达式f(2) = 8*2+2= 18。 函数 f(x) 花括号中的 x 用来接收一个参数,8x + 2 可以计算传入参数相对应的值。 在Python中,可以把函数抽象成数学中的一次函数, 在程序中多次执行同一项任务时,并不需要反复编写相同的代码。可以通过编写函数,在需要时可以多次调用该函数实现相同的功能。函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。当然,也可以自建函数,这被称作用户自定义函数。 @ 函数的定义 函数定义的规则: 函数以 ' 关键字 def ' +' 函数名 '+' 圆括号 (参数) '+' 冒号: ' 。 圆括号中的参数可以用于定义参数。 函数内的第一行语句可以选择性地给 函数编写文档 用于 说明函数的作用 。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。 不带表达式的return默认返回 None def 函数名(参数): #声明一个函数 ... 函数体 ... 返回值函数名(参数) #调用函数 @ 向函数传递参数 创建函数: def test_1(name,age

javap使用

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-25 08:19:18
# javap使用 一、javap javap是JDK自带的反汇编器,可以查看java编译器生成的字节码。 二、语法 javap [ 命令选项 ] [class] 三、命令项 -help --help -? 输出此用法消息 -version 版本信息 -v -verbose 输出附加信息 -l 输出行号和本地变量表 -public 仅显示公共类和成员 -protected 显示受保护的/公共类和成员 -package 显示程序包/受保护的/公共类 和成员 (默认) -p -private 显示所有类和成员 -c 对代码进行反汇编 -s 输出内部类型签名 -sysinfo 显示正在处理的类的 系统信息 (路径, 大小, 日期, MD5 散列) -constants 显示最终常量 -classpath <path> 指定查找用户类文件的位置 -cp <path> 指定查找用户类文件的位置 -bootclasspath <path> 覆盖引导类文件的位置 四、字节码含义 栈和局部变量操作 将常量压入栈 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_[x] 将int类型常量x压入栈 lconst_[x] 将long类型常量x压入栈 fconst_[x] 将float类型常量x压入栈 dconst_[x]