返回值

函数的返回值和作用域

余生颓废 提交于 2019-11-30 10:09:03
1、函数返回值 def func(name,age,country): user_info = {} user_info['name'] = name user_info['age'] = age user_info['country'] = country return user_info my_user_info = func('xu', 10, 'CN') 注意: 1、函数在遇到return语句时,就会停止执行函数,并将值返回,即return语句代表函数执行结束 2、如果函数里没有return语句,就会默认返回None 如果想返回多个值: 则用return user_info, country 返回多个值时,其返回的值是以元组的形式返回。 2、 作用域 name = "xu cool" def func(): name = "dashuaibi" print("里面的name:", name) func() print("外面的name:", name) 打印结果:里面的name: dashuaibi 外面的name: xu cool 为什么在函数里面改了name,在外面输出name的时候,并没有发生改变呢? 1、在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。 2、全局变量作用域(即有效范围)是整个程序,局部变量作用域是定义该变量的函数。 3

C++的返回值是如何回到调用处的?

冷暖自知 提交于 2019-11-30 08:45:52
在函数返回时,编译器会在内存中建立一个临时变量,函数返回时将函数值保存在该临时变量中,然后由主调函数中包含调用的表达式语句从该临时变量中取得值,表达式语句执行后该临时变量撤销。 来源: CSDN 作者: 江南又一春_ 链接: https://blog.csdn.net/lintianyi9921/article/details/103246668

参数、返回值、局部变量、数组分析

最后都变了- 提交于 2019-11-30 07:10:55
1.返回值的传递 各种类型返回值传出来的方式: 1、char类型的返回值 ->寄存器al 2、short 类型的返回值 ->寄存器ax 3、int 类型的返回值 ->寄存器eax 如果是long long 则将低位保存在eax,将高位保存在edx; //vc用__int64表示long long __int64 fun(){ return 0x1234567890; } int main(int argc, char* argv[]) { __int64 a = fun(); return 0; } 在函数中返回值保存: 在函数外面取出返回值: 总之: int、char、long、数组等变量类型本质上的区别只是到底能存多少位的数,也就是容量的区别; 2.参数传递的本质 参数传递有两种方式:1】寄存器;2】堆栈; 不同类型的参数传递时,通常会转换成本机尺寸来传递; 例如32位机中char类型的参数:虽然char是1个字节,但传递到栈中时按4个自己来保存; 情况1: void fun(char x, char y){ } int main(int argc, char* argv[]) { fun(1,2); return 0; } 参数入栈前: 参数入栈后: 情况2: void fun(char x, char y){ } int main(int argc, char* argv[

python 函数

萝らか妹 提交于 2019-11-30 07:08:44
1初识函数 一、为什么要使用函数?    1.避免代码重用    2.提高代码的可读性 二、函数的定义与调用 1 . def 函数名(参数1,参数2)     ''' 函数注释'''     print('函数体')     return 返回值   定义:def关键字开头,空格之后接函数名和圆括号,最后还要加一个冒号。 def是固定的,不能变。   函数名:函数名是包含字母,数字,下划线的任意组合,但是不能以数字开头。虽然函数名可以随便取名,但是一般尽量定义成可以表示函数功能的。 2.函数的调用      返回值=函数名(参数1,参数2)#记得函数名后面加括号 下面我们先来定义一个求计算字符串长度的函数。假如我们的len()函数现在不能用了,那么我们就需要定义一个函数,求字符串的长度。如果让我们一次一次的去写相同的代码,会显得很麻烦。这时候我们的函数就上场了。 1 1.给定一个字符串,调用函数,当他没有返回值的时候返回Null 2 def length(): 3 s='hello world' 4 length=0 5 for i in s: 6 length+=1 7 print(length) 8 print(length()) 9 10 11 2.return 必须放在函数里,当函数有返回值的时候,必须用变量接收才会有效果 12 def length(): 13 s=

方法与五子棋游戏

China☆狼群 提交于 2019-11-30 06:21:56
方法: 一段用于完成特定功能的代码片段,类似于其他语言的函数。 方法用于定义该类或该类的失礼行为特征和功能实现。方法是类和对象行为特征的抽象。方法类似于面向过程中的函数。在面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。方法包括方法名与参数。 方法的调用方式: 1 .形式参数 :在方法声明时用于接收外界传入的数据 2. 实参 :调用方法时实际传给方法的数据 3. 返回值 :方法在执行完毕后返回给调用它的环境的数据 4 .返回值类型 :事先约定的返回值的数据类型,如无返回值类型,必须显示指定为void 两个数值的交换与对应的内存分析: 来源: https://www.cnblogs.com/laurarararararara/p/11567499.html

数据结构实现(顺序表)

天涯浪子 提交于 2019-11-30 05:24:57
#include<stdio.h> //数据结构之顺序表 /*原理:地址连续的存储单元依此存储线性表的元素 基本运算:插入 删除 查找 排序 要点:结构的定义很重要,所有的操作都是建立在数据结构之上的。 */ /*顺序表结构体定义:*/ //def数据最大长度 #define Maxsize 100 //定义数据元素类型,可以适应更多类型 typedef int Datatype; //定义顺序表类型,只是定义了一个类型,而不是变量 typedef struct SeqList//此处的SeqList可以不要 { Datatype data[Maxsize]; int last; }SeqList; SeqList InitSlist() {//初始化顺序表 SeqList L;//通过函数调用来申请空间,创建变量 L.last = -1;//表示表空 return L; } void Creat_Slist(SeqList &L) {//创建顺序表,给data初步赋值 int flag;//标示数据规模 scanf("%d",&flag); for(int i=0;i<flag;i++) { scanf("%d",&L.data[i]); L.last++; } } int Getlength(SeqList &L) { return (L.last + 1); } int

面向对象——成员

柔情痞子 提交于 2019-11-30 04:22:45
属 性 是什么 属 性:对应类中的成员变量 Field = 属性 = 成员变量, 语法格式: 修饰符 类型 属性名 = 初值 ; 说明 : 修饰符 private: 该属性只能由该类的方法访问。 修饰符 public: 该属性可以被该类以外的方法访问。 类型:任何基本类型,如 int 、 boolean 或任何类。 举例: public class Person{ private int age; // 声明 private 变量 age public String name = “Lila”; // 声明 public 变量 name } 成员变量 ( 或属性 ) vs 局部变量 1. 相同点: ① 声明的格式是相同的:数据类型 变量名 = 初始化值 ② 先声明,后使用 ③ 变量都有作用域。 2. 不同点: ① 类中声明的位置的不同。 成员变量:在类的一对 {} 内直接声明的变量 局部变量:方法内声明的,方法的形参位置声明的,构造器内声明的,代码块内声明的都是局部变量。 ② 成员变量可以在数据类型前声明权限修饰符,而局部变量是不可以声明权限修饰符的。 补充:权限修饰符有哪些? public 、 private 、 protected 、缺省 ③ 成员变量:声明时,有默认初始化值。也就是说,我们在定义成员变量时,可以不显式的赋值。 整型: byte 、 short 、 int 、

day 10

▼魔方 西西 提交于 2019-11-30 03:21:23
目录 函数基础 什么是函数 为何用函数 如何用函数 注册功能函数 登录功能函数 函数定义阶段 函数调用阶段 定义函数的三种形式 空函数 有参函数 无参函数 函数的返回值 什么是返回值 为什么要有返回值 函数的参数 形参和实参 位置参数 关键字实参 默认形参 总结 可变长参数 可变长形参 可变长实参 函数基础 什么是函数 在程序中,函数就是具备某一功能的工具,事先讲工具准备好就是函数的定义,遇到应用场景就是函数的调用。 为何用函数 如果不使用函数,写程序是将会遇到这三个问题: ​ 1.程序冗长 ​ 2.程序的拓展性差 ​ 3.程序的可读性差 如何用函数 ==定义函数== def 函数名(param1、param2......): “”“ 函数功能的描述信息 param1:描述 param2:描述 return:返回值 ”“” code1 code2 code3 ... return 返回值 ==调用函数== 函数名(param1、param2......) 注册功能函数 # 注册功能函数 def register(): """注册功能""" count = 0 while count < 3: username_inp = input('请输入你的用户名:') pwd_inp = input('请输入你的密码:') re_pwd_inp = input('请再次输入你的密码:')

Python基础(九)

霸气de小男生 提交于 2019-11-30 02:34:01
今日主要内容 函数初识 函数定义 函数调用 函数返回值 函数参数 一、函数初识 (一)为什么要用函数 有一个需求,给出一个变量,计算变量的长度,要求不能使用 len() s = "郭老湿今天崩溃了,在后面直叹气" count = 0 for i in s: count += 1 print(count) 我们利用上述一段代码完成了需求,很强666。但是问题来了,现在100个人每个人给你一个变量,让你计算变量的长度,此时只能苦逼的敲代码来计算!!! s = ...... count = 0 for i in s: count += 1 print(count) lst = ...... count = 0 for i in lst: count += 1 print(count) tu = ...... count = 0 for i in tu: count += 1 print(count) ...................... 我们发现一个问题,上述每一段代码有将近99%的内容完全一样,我们完全可以把这段代码提前写出来,等到使用的时候,拿过来用一下,解决了我们重复性的大问题,这就是函数的产生 def my_len(): # 这就是把我的代码封装成一个函数 count = 0 for i in s: count += 1 print(count) s = [1, 2, 3

调用约定

旧街凉风 提交于 2019-11-30 02:18:23
参考: https://bbs.pediy.com/thread-224583.htm 整理成表格方便查询 cdecl(C规范), stdcall(WinAPI默认), fastcall, ATPCS(ARM-Thumb Procedure Call Standard/ARM-Thumb过程调用标准) , thiscall(用于C++中类成员函数) 调用约定\架构 X86 X64 ARM AARCH64 cdecl 参数从右往左依次入栈,调用者实现栈平衡,返回值存放在 EAX 中。 X X X stdcall 参数从右往左依次入栈,被调用者实现栈平衡,返回值存放在 EAX 中。 X X X fastcall 参数1~参数2 分别保存在 ECX、EDX , 剩下的参数从右往左依次入栈, 被调用者实现栈平衡, 返回值存放在 EAX 中。 参数1~参数4 分别保存在 RCX、RDX、R8D、R9D , 剩下的参数从右往左依次入栈, 被调用者实现栈平衡, 返回值存放在 RAX 中。 X X thiscall 参数从右往左依次入栈, this指针存放ECX中, 被调用者实现栈平衡, 返回值存放在 EAX 中。 参数1~参数3 分别保存在RDX、R8D、R9D中, this指针存放RCX中, 剩下的参数从右往左依次入栈, 被调用者实现栈平衡, 返回值存放在 RAX 中。 (C++) 参数1