python输入函数函数不输入return有关系吗

python学习笔记10(函数一): 函数使用、调用、返回值 - Ethon - 博客园
一、函数的定义
  在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的。在Python中,函数定义的基本形式如下:
def function(params):
return expression/value
  (1)在Python中采用def关键字进行函数的定义,不用指定返回值的类型。
  (2)函数参数params可以是零个、一个或者多个,同样的,函数参数也不用指定参数类型,因为在Python中变量都是弱类型的,Python会自动根据值来维护其类型。
  (3)return语句是可选的,它可以在函数体内任何地方出现,表示函数调用执行到此结束;如果没有return语句,会自动返回NONE,如果有return语句,但是return后面没有接表达式或者值的话也是返回NONE。
&&& def printHello():
print 'hello'
# 没有return 语句
&&& def test():
print 'This is printed'
# return 起到结束语句的作用,表示函数调用执行到此结束
print 'This is not'
&&& x = test()
This is printed
&&& def add(a,b):
# params 参数可以是零个、一个或者是多个
return a+b
&&& print add(1,2)
二、函数的使用
  在定义了函数之后,就可以使用该函数了,但是在Python中要注意一个问题,就是在Python中不允许前向引用,即在函数定义之前,不允许调用该函数。看下面这个例子就明白了:
1 print add(1,2)
2 def add(a,b):
return a+b
&运行程序后的结果:
&从报的错可以知道,名字为"add"的函数未进行定义,所以在任何时候调用某个函数,必须确保其定义在调用之前。
三、返回值
函数的返回值只有一个。那为什么有的会出现多个呢?这里的&多个&并不是多个返回值而已,比如返回一列表,里面包含很多值。举个例子就是:只能带走一个东西,但是允许把一些东西装到塑料袋里面看做一个东西带走,这是允许的。
&&& def foo():
  return ['xyz',123,'True']
# foo()返回一个列表
&&& a = foo()
['xyz', 123, 'True']
&&& def bar():
   return 'ABC',456,'False'
# bar()返回一个元组(元组语法上不需要一定要带上圆括号),为了方便阅读,最好加上圆括号。
&&& b = bar()
('ABC', 456, 'False')
四、函数调用
&&& def foo(x,y):
  return x,y
&&& foo(1,2)
# 标准调用
&&& foo('a','b')
('a', 'b')
&&& foo(x=1,y=2)
# 参数化调用Google提供的广告8被浏览2,530分享邀请回答51 条评论分享收藏感谢收起python函数不输入return有关系吗_百度知道
python函数不输入return有关系吗
我有更好的答案
baidu.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http://h.hiphotos.hiphotos.baidu.com/zhidao/pic/item/d52ab9caa4aa11ece36d3d539bdaf.baidupython的函数不是必须要有返回值return,如下图:<a href="http://h.com/zhidao/wh%3D600%2C800/sign=4b4b17a5fb1f3a295a9dddc8aab9caa4aa11ece36d3d539bdaf.jpg" esrc="http://h.hiphotos
采纳率:72%
不是必需的
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。python问题,关于递归的,递归运行函数的话,函数里有return,我_python吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:164,095贴子:
python问题,关于递归的,递归运行函数的话,函数里有return,我收藏
这是一个判断两个字符串有几个字符不同的function:def edit_distance(s1,s2,result=0):
s1=list(s1)
s2=list(s2)
if len(s1)&0:
if s1[0]!=s2[0]:
result=result+1
return edit_distance(s1,s2,result)
return result要是倒数第二步不return会怎么样?还有我递归了这个函数,那每运行一次这个函数就会return一次result,那最后return的到底是什么?
阿里云云市场镜像可以一键部署云服务器所需要的运行环境和个性化的软件应用,满足建站,应用开发,可视化管理等个性化需求,python镜像让云服务器&即开即用&.
大神快快来!!
倒数第二行去掉return
大神快快来啊,明天考试了!
大神来啊!!!
大神快来啊!!这是以前向吧友求助的一个function,没有return照样运行:def search(L, s):
def flatten_list(X, result = None):
if result == None:
result = []
for i in X:
if isinstance(i,list):
flatten_list(i,result)(无return)
result.append(i)
return result
if s in flatten_list(L):
return True
return False
严格来说,你这个程序只支持字符串长度相等的两个串比较若串长度不同,那么你这个程序就会出错!我用的环境是py2.7我的代码是:执行结果:String1: akslajdfString2: akklcnot same count:5说明:递归函数总要有个结束条件,不然,就会无限执行下去或出错。在这里,最后的return result就好比是这个递归函数的满足结束条件(字符串没有了)时,返回的结果。而第一个return edit_distance(s1, s2, result)则是因为还没有结束,所以需要继续递归。自己百度搜下递归函数的图片,你就会很容易理解这东西了!关于你的第一个问题,要是倒数第二个return不return,那么会发生什么!你当然得不到正确的结果啊!假如第一个字符相同,那么得到的将会是0,要是不同,那么得到的将会是1,因为再次调用递归函数的时候,并没有修改result的值。关于你的第二个问题,最后那个return result只会在满足结束条件的时候,才会return.因为一个函数遇到return后,就不会再执行后面的代码!当然有特例!所以这个return result就是返回你这个两个串中有多少个不同的字符!
def edit_distance(s1, s2, result = 0):
if len(s1) == 1:
if s1[0] != s2[0]:
result += 1
result = edit_distance(s1[1:], s2[1:])
if s1[0] != s2[0]:
result += 1
return result这样的吧。你的步骤多余了,string可以直接用index定位,用slice切割,不需要转list和del
建议看看rmax。注意递归的返回值要在新的运算前。
&百度云&让虚拟主机管理更便捷,更高效!省去了繁琐的配置流程,操作简易直观让您零基础安全轻松的使用云主机.
return就是函数运算完毕后给出的结果啊。
递归本身就很难读懂了,况且又是在return语句中带有递归?这样使得程序结构不很清晰,不认为这是好的程序风格。关于函数调用的参数,一般情况下,列表和字典等可变数据类型,如果在函数体内整体赋值的话,那么将会与外部变量无关了;如果只是修改内部的数据, 这样的操作实际上等同于外部变量的操作。其他不可变数据类型,形参与实参只是值传递的关系,内部修改返回时一切作废了,不会影响到外部变量。递归调用和一般函数调用一样,不过递归一次调用引起多次的调用,每一次都相当于一般函数调用,都有一个外层和内层作用域的问题,作用域可以认为是环境,外部环境和内部环境,出了作用域范围就是不同的环境了,函数调用都是使用堆栈的进栈和出栈来实现的,进栈是把有用的数据先封存起来,为出栈时再使用;出栈是把原先封存的数据恢复,也就是当前环境了。函数返回值就是把内部处理的结果数据,在返回时带到上一层来,返回值在当前环境中可以作为一个变量使用,同样当前环境中处理的结果数据,又被return语句带到再上一层,以此类推。各种变量名和函数名都是有作用域的。在递归中有些处理的结果数据无法带回到外部去,这时可以考虑在外部中设立一个列表或字典等可变数据类型的变量,作为函数参数或者不作为函数参数,在内层直接使用,注意不能整体被赋值,只能修改其内部数据。在内内层函数处理完数据之后,把结果数据存入可变数据类型的变量中,这样返回时就可以使用内部处理的结果数据了。
把递归中在内层处理的结果数据带到外部去,可以使用列表或字典等可变数据类型的变量,下面是程序代码的示例。代码截图如下:
可变数据类型变量和不可变数据类型变量的区别:在python中,数据类型相当于类,变量相当于对象,对象可以分为不可变对象和可变对象,变量也就分为可变数据类型变量和不可变数据类型变量。整数、字符串和元组都属于不可变数据类型的变量,当指向不可变数据类型的变量的值改变时,系统重新创建一个新的不可变对象赋值给变量。列表、字典和集合都属于可变数据类型的变量,当两个变量指向同一个可变对象时,改变可变对象内部的值,这两个变量同样的进行改变,因为本来就是一个,只是两个变量引用名而已。函数外部定义的可变数据类型的外部变量,在传递给函数形参时,函数形参是变量引用名,和外部可变数据类型变量指向同一个内存区域。函数内部不可变数据类型的局部变量,以及函数参数,在入栈时封存的只是变量引用名,不会再另外开辟内存区域给这些变量;内部定义的可变数据类型的局部变量,在入栈时封存的也是变量引用名,而实际内存区域另外专门的存放,作用域范围也是局部的。
登录百度帐号推荐应用}

我要回帖

更多关于 python中输入函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信