return()语句能返回多个值吗

 我来答
问明6E
高粉答主

2019-06-11 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.5万
展开全部

函数的return语句只能返回一个值,可以是任何类型。因此,可以“返回一个tuple类型,来间接达到返回多个值”。

例1、:x除以y的余数与商的函数

defF1(x,y):

a=x%y

b=(x-a)/y

return(a,b)#也可以写作returna,b

(c,d)=F1(9,4)#也可以写作c,d=F1(9,4)

printc,d

结果显示:1,2

Python与大多数其它语言一样有局部变量和全局变量之分,但是它没有明显的变量声明。变量通过首次赋值产生,当超出作用范围时自动消亡。

例2、定义myParams变量

if__name__=="__main__":

myParams={"server":"mpilgrim",/

"database":"master",/

"uid":"sa",/

"pwd":"secret"/

首先注意缩进。if语句是代码块,需要像函数一样缩进。

其次,变量的赋值是一条被分成了多行的命令,用反斜线(“/”)作为续行符。

当一条命令用续行符(“/”)分割成多行时,后续的行可以以任何方式缩近,此时Python通常的严格的缩近规则无需遵守。如果您的PythonIDE自由对后续行进行了缩近,应该把它当成是缺省处理,除非您有特别的原因不这么做。

严格地讲,在小括号,方括号或大括号中的表达式(如定义一个dictionary)可以用或者不用续行符(“/”)分割成多行。甚至在不是必需的时候,我也喜欢使用续行符,因为我认为这样会让代码读起来更容易,但那只是风格的问题。

第三,您从未声明过变量myParams,您只是给它赋了一个值。这点就象是VBScript没有设置optionexplicit选项一样。幸运的是,与VBScript不同的是,Python不允许您引用一个未被赋值的变量,试图这样做会引发一个异常。

3.4.1.变量引用

例4、引用未赋值的变量

扩展资料:

Python中编程简写使用序列来一次给多个变量赋值。

例:一次赋多值

>>>v=('a','b','e')

>>>(x,y,z)=v

>>>x

'a'

>>>y

'b'

>>>z

'e'

v是一个三元素的tuple,并且(x,y,z)是一个三变量的tuple。将一个tuple赋值给另一个tuple,会按顺序将v的每个值赋值给每个变量。

这种用法有许多种用途。我经常想要将一定范围的值赋给多个变量。在C语言中,可以使用enum类型,手工列出每个常量和其所对应的值,当值是连续的时候这一过程让人感到特别繁琐。而在Python中,您可以使用内置的range函数和多变量赋值的方法来快速进行赋值。

例:连续值赋值

>>>range(7)

[0,1,2,3,4,5,6]

>>>(MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY)=range(7)

>>>MONDAY

0

>>>TUESDAY

1

>>>SUNDAY

6

内置的range函数返回一个元素为整数的list。这个函数的简化调用形式是接收一个上限值,然后返回一个初始值从0开始的list,它依次递增,直到但不包含上限值。(如果愿意,可以传入其它的参数来指定一个非0的初始值和非1的步长。也可以使用printrange.__doc__来了解更多的细节。)

MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY和SUNDAY是我们定义的变量。(这个例子来自calendar模块。它是一个很有趣的打印日历的小模块,UNIX的cal命令。

这个calendar模块定义了一星期中每天的整数常量表示。)现在每个变量都拥有了自己的值:MONDAY的值为0,TUESDAY的值为1,等等。

也可以使用多变量赋值来创建返回多个值的函数,只要返回一个包含所有值的tuple即可。调用者可以将其视为一个tuple,或将值赋给独立的变量。许多标准的Python库都是这样做的,包括os模块。

cwc_2009
推荐于2017-10-06 · TA获得超过304个赞
知道小有建树答主
回答量:173
采纳率:100%
帮助的人:172万
展开全部

return不能直接返回多个值,如果你想通过函数内部返回多个值的话,一般有三种方法:

第一种:返回结构体

#include <stdio.h>

//定义一个结构体

typedef struct _a

{

 int a;

 int b;

}A,*PA;

//函数返回结构体变量,它里面就可以包含多个值

PA func()

{

 PA a = new A();

 a->a = 2;

 a->b = 3;

 return a;

}

int main()

{

 PA test = func();

 printf("%d %d\n", test->a, test->b);

 delete test;

 return 0;

}

第二种:以引用方式传递函数参数

#include <stdio.h>

//要以引用方式传递参数,否则,在函数内部改变形式参数的值,

//函数返回之后,参数值依然不变

void func(int& a, int& b)

{

 a = 2;

 b = 3;

}

int main()

{

 int a = 0;

 int b = 0;

 func(a, b);

 printf("%d %d\n", a, b);

 return 0;

}

第三种:以类型指针方式传递函数参数

#include <stdio.h>

void func(int* a, int* b)

{

 *a = 2;

 *b = 3;

}

int main()

{

 int a = 0;

 int b = 0;

 func(&a, &b);

 printf("%d %d\n", a, b);

 return 0;

三种方式的结果都是:

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FrancisGaozhu
2017-08-04 · 知道合伙人软件行家
FrancisGaozhu
知道合伙人软件行家
采纳数:492 获赞数:8942
国家认证高级软件工程师 软件研发技术讲师

向TA提问 私信TA
展开全部
您好,您的问题不够确切;但是如果您所指的是Java或者C#中return的语法的话,那么return关键字只能返回当前方法(函数)在声明过程中所定义好的那个类型的某个具体值;例如函数中订单返回类型为String,那么就只能返回String类型的一个值,如果你想返回多个值,那么一般会先包装为对象,或者返回一个集合,数组等。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
breakaleg2011
2011-05-01
知道答主
回答量:21
采纳率:0%
帮助的人:6万
展开全部
不能这是 结构化编程特定的,即一个入口,一个出口。如果真要返回多个值,可以返回结构体,返回数组或指针,或者用引用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yeahsystem
2011-04-30 · TA获得超过101个赞
知道答主
回答量:71
采纳率:0%
帮助的人:43.9万
展开全部
不能,可以新建一个实体类,这个类可以返回数据模型(数组),我最近也在看三层架构的东东,建议你看一下。《大话设计模式》
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式