Python中的返回值问题!!! python:返回值问题

\u5728Python\u4e2d\u5982\u4f55\u7406\u89e3\u8fd4\u56de\u503c?

\u5728\u4ee3\u7801\u5757\u4e2d\u7684\u4e00\u4e2a\u65b9\u6cd5\uff08\u6216\u8005\u53eb\u51fd\u6570\uff09\u4e2d\uff0c
return \u8bed\u53e5\u7684\u5185\u5bb9\u5c31\u662f\u8fd4\u56de\u503c\uff08\u4ee3\u7801\u6ca1\u6709\u9700\u6c42\u7684\u8bdd\u4e5f\u53ef\u4ee5\u4e0d\u5199\uff09\uff1b
\uff08e.g.
def returnZero:
return 0
a=returnZero;
print(a)
#\u7ed3\u679c\u662f0
\uff09
\u5bf9\u8be5\u51fd\u6570\u7684\u8bbf\u95ee\u6700\u7ec8\u4f1a\u89e6\u53d1return\u8bed\u53e5\uff0c\u53ea\u8981\u6ca1\u6709\u7c7b\u4f3cexit()\u5168\u5c40\u7684\u7ec8\u6b62\u53d1\u751f\uff0c\u6216\u8005Exception\u5f02\u5e38\u5904\u7406\u53d1\u751f\uff1b
\u5728\u64cd\u4f5c\u7cfb\u7edf\u8bbf\u95ee\u4ee3\u7801\uff08\u5373\u7a0b\u5e8f\uff09\u65f6\uff0c\u8fd4\u56de\u503c\u6307\u7684\u662f\u4ee3\u7801\u6267\u884c\u5b8c\u6bd5\u540e\uff0c\u7531\u4ee3\u7801\u8fd4\u56de\u7ed9\u7cfb\u7edf\u7684\u503c\uff08\u8fd9\u4e2a\u8fc7\u7a0b\u53ef\u4ee5\u7531exit()\u89e6\u53d1\uff0c\u4e5f\u53ef\u4ee5\u5728\u7a0b\u5e8f\u81ea\u7136\u7ec8\u6b62\u89e6\u53d1\uff09\uff1b
\u5728windows\u4e2d\u662f%errorlevel%\u73af\u5883\u53d8\u91cf\u503c
\u5728python\u4e2d\u7684os.system\u65b9\u6cd5\u8bbf\u95ee\u4e00\u4e2a\u5916\u90e8\u7a0b\u5e8f\u65f6
e.g.
import os
a=os.system("outsidecode.py")
print(a)
#\u4f60\u80fd\u591f\u770b\u5230\u7a0b\u5e8f\u7684\u8fd4\u56de\u503c\uff0c
#\u591a\u6570\u60c5\u51b5\u4e0b\uff0c0\u4ee3\u8868\u201c\u6b63\u5e38\u8fd0\u884c\u201d
#\u5176\u4ed6\u503c\u4ee3\u8868\u51fa\u9519
\u8fd9\u6837\uff0c\u5904\u7406\u9519\u8bef\u7684\u80fd\u529b\u5c31\u7531\u4ee3\u7801\u4e4b\u5185\u7684try-except-finally\u5ef6\u4f38\u5230\u4e86\u5916\u90e8\u7a0b\u5e8f\uff0c\u5bf9\u4e8e\u6279\u5904\u7406\uff0c\u670d\u52a1\u5668\uff0c\u5927\u578b\u8f6f\u4ef6\u7b49\u6709\u7740\u91cd\u8981\u7684\u610f\u4e49\uff1b\uff08\u53ef\u4ee5\u5728\u81ea\u5df1\u7684\u4ee3\u7801\u91cc\u8bd5\u8bd5^_^)

\u4f7f\u7528\u548c\u7406\u89e3\u591a\u6837\u7684\u8fd4\u56de\u503c\uff0c\u6709\u52a9\u4e8e\u5f00\u53d1\u8005\u53ca\u65f6\u53d1\u73b0\u9519\u8bef\uff0c\u8282\u7ea6\u8c03\u8bd5\u6210\u672c\uff0c\u627e\u5230\u5e94\u5bf9\u65b9\u6cd5\uff0c\u63d0\u9ad8\u4ee3\u7801\u8d28\u91cf

python \u51fd\u6570\u8fd4\u56de\u503c\u6709\u4e24\u79cd\u5f62\u5f0f\uff1a
1 \u8fd4\u56de\u4e00\u4e2a\u503c\u3002
2 \u8fd4\u56de\u591a\u4e2a\u503c\u3002

\u73b0\u770b\u770b\u8fd4\u56de\u4e00\u4e2a\u503c\u7684\u5427\u3002
def firstvalue(a,b):
c = a + b
return c
print firstvalue(1,2)\u7ed3\u679c:3
\u518d\u770b\u770b\u8fd4\u56de\u591a\u4e2a\u503c\u7684\uff1a \u90a3\u600e\u4e48\u53ef\u4ee5\u8fd4\u56de\u591a\u4e2a\u503c\u5462\uff0c\u5176\u4ed6\u7684\u8bed\u8a00\u4e00\u822c\u8c03\u7528\u51fd\u6570\u7684\u8bdd\uff0c\u53ea\u80fd\u8fd4\u56de\u4e00\u4e2a\u503c\uff0c\u53ef\u80fd\u6211\u4e0d\u592a\u719f\u6089\u6240\u6709\u7684\u8bed\u8a00\uff0c\u6211\u77e5\u9053\u7684\u8bed\u8a00\u53ea\u80fd\u8fd4\u56de\u4e00\u4e2a\u503c\uff0c\u800cpython\u53ef\u4ee5\u8fd4\u56de\u591a\u4e2a\u503c\uff0c\u611f\u89c9\u975e\u5e38\u65b9\u4fbf,\u53d1\u4ee3\u7801\u770b\u4e0b\uff1a
def secondvalue(a,b):
c = a + b
return (a,b,c)

x,y,z = secondvalue(1,2)
print 'x:',x,'y:',y,'z:',z

首先,代码有误,你想调用的应该是
sorted([4,3,2,1])
reversed([4,3,2,1])

然后,你所说的reversed的返回值类型也不正确。
sorted返回的是list,reversed返回的是iterator。
list你应该很熟悉了。iterator和list是完全不同的东西。简单的说iterator只是提供一个接口,每次迭代可以产生一个值,到没有值为止。iterator在很多语言里面都有实现。在python里面主要用在for循环和list comprehension。

iterator和list/tuple/dict/set等容器的关系:
1.python内置的容器类几乎都实现了iterator接口。
显式获取某个容器的iterator可以调用iter函数:
l = [1,2,3,4]
i = iter(l)
//现在i就是一个list iterator。可以用来遍历l这个list.
i.next() # 1
i.next() # 2
//每一个iterator都必须实现next方法。并且在没有元素时抛出StopIteration异常。

在for语句和list comprehension中,都是隐式调用了这个函数。所以可以直接
for obj in some_container:
pass

2.某些容器可以通过iterator进行初始化,比如list
l = [1,2,3,4]
i = iter(l)
l2 = list(i)

最后,没有列表和列表对象这种说法。这两者一般都是指列表对象(instance of the type list)。如果你是想说列表类(the list type)本身,可以这样得到:
type([])
或者
[].__class__

我举个例子说明一下吧

a = sorted( ( 1 ,2 ,3 ,4 ) )
b = reversed( ( 1 ,2 ,3 ,4 ) )
print( type( a ) ,a )
print( type( b ) ,b )

打印的结果是
<class 'list'> [1, 2, 3, 4]
<class 'reversed'> <reversed object at 0x00DB7130>

第一个sorted我输入的参数是tuple,返回的是一个list类型的对象,所有已经数据都进行计算好,所以print输出时调用的是list的__str__接口.

第二个reversed我输入的同样是一个tuple,但是返回的数据却并不是list,而是一个reversed类型的对象,而这个对象没有实现__str__接口,因此print调用的是基类object的__repr__接口,打印的是对象的信息,而是对象的信息.

你提的问题有点模糊,不应该是"列表和列表对象",应该是"列表和迭代器"吧.
打印reversed对象的属性
__class__
__delattr__
__doc__
__eq__
__format__
__ge__
__getattribute__
__gt__
__hash__
__init__
__iter__
__le__
__length_hint__
__lt__
__ne__
__new__
__next__
__reduce__
__reduce_ex__
__repr__
__setattr__
__sizeof__
__str__
__subclasshook__

会发现reversed并不支持索引,而是支持__iter__和__next__,这个就是一个迭代器,迭代器的优点就是不必计算所有的数据,节省内存和运算时间,因为reversed的语义是将原来的序列反转,所以要求输入的参数的序列是已知的.
而sorted的输入参数和输出列表的顺序没有直接的关联,因此需要转换成list,计算全部的数据后才能返回,不能返回迭代器.

这个就是两个函数的差别.

再举个例子,如果在sorted和reversed中的参数输入迭代器的话会发生什么呢

a = sorted( i for i in range( 4 ) )
b = reversed( i for i in range( 4 ) )

[0, 1, 2, 3]
Traceback (most recent call last):
File "1.py", line 87, in <module>
b = reversed( i for i in range( 4 ) )
TypeError: argument to reversed() must be a sequence

可以看到sorted是可以正常返回的,但reversed就不行,因为reversed不能计算迭代器的数据顺序.

  • python鍑芥暟杩斿洖鍊涓衡漣d鈥:鈥23鈥,濡備綍鑾峰彇23
    绛旓細鎵浠ユ渶濂藉氨鍒ゆ柇鏄惁涓0灏卞彲浠ヤ簡,瀹炲湪瑕佸垽鏂嚜宸卞啓鐨刢绋嬪簭杩斿洖鍊,寤鸿杩斿洖0,1,2,3绛夊,鍑洪敊杩斿洖 -1銆傚彟澶,鎴戦亣鍒颁竴娆℃槑鏄庡鐞嗗ソ浜嗚繑鍥炲,c绋嬪簭璋冭瘯淇℃伅鎻愮ず涔熻杩斿洖鍊0浜,缁撴灉python鑾峰彇鍒扮殑鏄 -1,鑰屼笖鏃犺c绋嬪簭杩斿洖澶氬皯,python閮借幏鍙-1銆傚悗鏉ユ帓鏌绋嬪簭鐨勯棶棰,鍙戠幇鍘熸潵鏄洜涓烘垜杩欎釜python绋嬪簭鏈韩鏄敱鍙︿竴涓狢...
  • Python鎵撳嵃print杩斿洖鍊涓篘one鏄庝箞鍥炰簨?
    绛旓細鍒楄〃鐨剅everse鏂规硶浼氬弽杞垪琛ㄥ苟杩斿洖None锛屽浘涓墦鍗扮殑鏄痳everse鐨勮繑鍥炲銆傝杩斿洖涓涓弽杞殑鏂板垪琛(涓嶅弽杞師鍒楄〃)锛屽簲璇ョ敤鍐呯疆鍑芥暟reversed锛屽锛歭=[1,2,3]l2=list(reversed(l))涔熷彲浠ョ敤[::-1]锛屽锛歭=[1,2,3]l2=l[::-1]涓嬪浘鏄竴涓緥瀛愶細...
  • 鍦╬ython涓,鍑芥暟float('3.6')鐨勮繑鍥炲鏄粈涔?
    绛旓細鍑芥暟鐨勮繑鍥炲鏄诞鐐规暟銆鍦≒ython涓锛屾槸涓涓唴缃嚱鏁帮紝鍙互灏嗗瓧绗︿覆銆佹暣鏁版垨鍏朵粬鏁板瓧绫诲瀷杞崲涓烘诞鐐规暟绫诲瀷銆傚湪杩欎釜渚嬪瓙涓紝瀛楃涓茶杞崲涓烘诞鐐规暟銆俧loat('3.6')3.6 float()'3.6'3.6
  • 鍦╬ython涓,x=10.347,鍑芥暟round(x,2)鐨勮繑鍥炲鏄?
    绛旓細10.35銆傛敞鎰忥紒娉ㄦ剰锛佹敞鎰忥紒round()骞朵笉鏄洓鑸嶄簲鍏ワ紝鑰屾槸鍚戞渶杩戝煎彇鏁达紝濡傛灉涓庡墠鍚庝袱涓暣鏁扮殑宸间竴鏍凤紝鍒欎細鍙栧伓鏁扮殑涓杈广備妇渚嬶細round(2.5)=2, round(3.5)=4銆傞檮鎴戠殑鍗氬锛Python3涓殑鍦版澘闄や笌娴偣鏁板洓绉嶅彇鏁存柟寮
  • python涓涓涓嚱鏁板彲浠杩斿洖澶氫釜鍊煎悧
    绛旓細涓鑸儏鍐典笅锛屼竴涓嚱鏁板彧鏈変竴涓杩斿洖鍊锛Python涔熸槸濡傛锛屽彧鏄疨ython鍑芥暟鍙互閫氳繃杩斿洖鍒楄〃鎴栧厓缁勭殑鏂瑰紡灏嗚繑鍥炵殑澶氫釜鍊间繚瀛樺埌搴忓垪涓紝浠庤岄棿鎺ヨ揪鍒拌繑鍥炲涓肩殑鐩殑銆傝鏄庯細鈶犲皢瑕佽繑鍥炵殑澶氫釜鍊兼彁鍓嶅瓨鍌ㄥ湪鍒楄〃鎴栧厓缁勪腑锛岀劧鍚庡嚱鏁拌繑鍥炶鍒楄〃鎴栧厓缁勩傗憽鍑芥暟鐩存帴杩斿洖澶氫釜鍊硷紝鐢ㄩ楀彿鍒嗛殧锛孭ython浼氳嚜鍔ㄥ皢澶氫釜鍊煎皝瑁呭埌涓...
  • 涓嶇杈撳叆浠涔python3.x涓璱nput鍑芥暟鐨勮繑鍥炲鎬绘槸瀛
    绛旓細鍑芥暟鐨勮繑鍥炲鏄瓧绗︿覆銆傛牴鎹煡璇㈢浉鍏冲叕寮淇℃伅鏄剧ず锛屽洜涓哄瓧绗︿覆鏁扮粍p鏄釜灞閮ㄥ彉閲忥紝瀛樺湪鏍堝唴锛屽綋瀛愬嚱鏁拌繑鍥炴椂锛屾爤绌洪棿涔熶細琚攢姣侊紝鎵浠ヤ笉绠¤緭鍏ヤ粈涔python3.x涓璱nput鍑芥暟鐨勮繑鍥炲兼绘槸瀛楃涓层
  • python缂栧啓绋嬪簭,鍒╃敤鍏冪粍浣滀负鍑芥暟鐨勮繑鍥炲,姹傜郴鍒楃被鍨嬬殑鏈澶у笺佹渶...
    绛旓細1銆侀鍏堬紝瀹氫箟涓涓暟缁勶紝鍒濆间负0銆2銆佺敤for寰幆锛屾帶鍒惰緭鍏ユ暣鏁扮殑涓暟銆3銆佸皢杈撳叆鐨勬暣鏁帮紝淇濆瓨鍦ㄦ暟缁勪腑銆4銆佺敤鍑芥暟min鍒ゆ柇杈撳叆鏁存暟鐨勬渶灏忓硷紝淇濆瓨鍒板彉閲忎腑銆5銆佺劧鍚庯紝鐢ㄥ嚱鏁癿ax鍒ゆ柇杈撳叆鏁存暟鐨勬渶澶у硷紝淇濆瓨鍦ㄥ彉閲忎腑銆6銆佹渶鍚庯紝杈撳嚭鏁存暟涓殑鏈灏忓煎拰鏈澶у笺7銆佽繍琛岀▼搴忥紝杈撳叆涓変釜涓浣嶆暣鏁帮紝鐢佃剳浼...
  • return鍦╬ython涓鐢ㄦ硶
    绛旓細鍦≒ython涓锛宺eturn鐢ㄦ硶鏄細杩斿洖鍊銆佺┖杩斿洖銆1銆佽繑鍥炲硷細鍑芥暟鐨勪富瑕佺洰鐨勬槸鎵ц涓浜涙搷浣滃苟杩斿洖缁撴灉銆傞氳繃浣跨敤return锛屽嚱鏁板彲浠ュ皢璁$畻鍚庣殑缁撴灉杩斿洖缁欏嚱鏁扮殑璋冪敤鑰呫杩斿洖鐨鍊煎彲浠ユ槸浠讳綍鏁版嵁绫诲瀷锛屼緥濡傛暣鏁般佹诞鐐规暟銆佸瓧绗︿覆銆佸厓缁勩佸垪琛ㄣ佸瓧鍏哥瓑銆2銆佺┖杩斿洖锛氭湁鏃跺嚱鏁板苟涓嶉渶瑕佽繑鍥炲叿浣撶殑鍊硷紝鍙渶绠鍗曞湴缁撴潫鎵ц...
  • Python鎺у埗鍙拌緭鍏ユ暣鏁,浼犲叆getDict鏂规硶,骞舵墦鍗杩斿洖鍊?
    绛旓細杩欓噷鎻愪緵涓涓ず渚嬩唬鐮侊紝婕旂ず濡備綍鍦 Python 鎺у埗鍙颁腑杈撳叆鏁存暟锛屽皢鍏朵紶鍏 getDict 鏂规硶锛屽苟鎵撳嵃杩斿洖鍊锛python 瀹氫箟涓涓 getDict 鏂规硶锛屾帴鏀朵竴涓暣鏁颁綔涓哄弬鏁 def getDict(num):my_dict = {} for i in range(1, num+1):my_dict[i] = i*i return my_dict 鍦ㄦ帶鍒跺彴涓緭鍏ヤ竴涓暣鏁 num = int(...
  • python鍑芥暟濡備綍鍚屾椂澶勭悊杩斿洖鍊浠ュ強杩斿洖鍐呭?
    绛旓細python鏀寔杩斿洖澶氫釜杩斿洖鍊锛屾墍浠ヤ綘鍙互鑰冭檻杩斿洖涓や釜鍊兼潵瑙e喅銆傚弬鑰冧唬鐮佸拰濡備綍璋冪敤绀轰緥濡備笅锛
  • 扩展阅读:扫一扫题目出答案 ... return true python ... python怎么撤回上一步 ... python撤销返回上一步 ... maya python 的返回值 ... python返回一个函数 ... python中返回第几行 ... 关于python非零返回问题 ... python返回多个值如何接收 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网