pythonreturn怎麼用
㈠ python return用法
return語句就是把執行結果返回到調用的地方,並把程序的控制權一起返回。
Python解釋器易於擴展,可以使用C或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。Python 也可用於可定製化軟體中的擴展程序語言。Python豐富的標准庫,提供了適用於各個主要系統平台的源碼或機器碼。
2021年10月,語言流行指數的編譯器Tiobe將Python加冕為最受歡迎的編程語言,20年來首次將其置於Java、C和JavaScript之上。
相關內容:
Python專用的科學計算擴展庫就更多了,例如如下3個十分經典的科學計算擴展庫:NumPy、SciPy和matplotlib,它們分別為Python提供了快速數組處理、數值運算以及繪圖功能。
因此Python語言及其眾多的擴展庫所構成的開發環境十分適合工程技術、科研人員處理實驗數據、製作圖表,甚至開發科學計算應用程序。2018年3月,該語言作者在郵件列表上宣布Python 2.7將於2020年1月1日終止支持。
㈡ python的return可以返回多個值嗎
函數的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、引用未賦值的變數
(2)pythonreturn怎麼用擴展閱讀:
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模塊。
㈢ python中return和yield怎麼用的兩個有什麼區別
常看到別人使用或討論yield語法,能搜到的中文解釋卻不多,今天決心搞定yield,把暫時的理解貼到這里.
搞定yield之前: 疊代器(iterator)
發現yield: 生成器(constructor)
使用yield: 遞歸調用
1. iterator
疊代器最簡單例子應該是數組下標了,且看下面的c++代碼:
int array[10];
for ( int i = 0; i < 10; i++ )
printf("%d ", array[i]);
疊代器工作在一個容器里(array[10]),它按一定順序(i++)從容器里取出值(array[i])並進行操作(printf("%d ", array[i])。
上面的代碼翻譯成python:
array = [i for i in range(10)]
for i in array:
print i,
for i in array幹了什麼(別亂想)?首先,array作為一個list是個容器,其次list這個內建類型有默認的next行為,python發現這些之後采 取的秘密的沒被各位看到的動作是:拿出array這丫容器的疊代器,從裡面next一下把值給i供for循環主體處置,for把這個值print了。
現在的問題是數據可以做容器疊代,代碼可以嗎?
怎麼不行,碗碟可以用來放菜,wk們不就聯想出用nt盛嗎,當然我們的yield不會那麼yellow + bt
2. constructor
怎麼把函數變成constructor? 在函數體里有yield就行了!
def gen():
print 'enter'
yield 1
print 'next'
yield 2
print 'next again'
for i in gen():
print i
各位!python看到gen函數里出現yield,知道可以用next了,問題是怎麼對代碼這個容器玩next?
從容器里拿到iterator的時候它還什麼也不是,處在容器入口處,對於數組來說就是下標為-1的地方,對於函數來說就是函數入口嘛事沒干,但是萬事俱備就欠next。
開始for i in g,next讓itreator爬行到yield語句存在的地方並返回值,
再次next就再爬到下一個yield語句存在的地方並返回值,依次這樣直到函數返回(容器盡頭)。
您一定看出來上面代碼的輸出是:
enter
1
next
2
next again
如果沒看出來請不要往下看了免得反被yield搞定。
3. 使用yield
yield的代碼疊代能力不但能打斷函數執行還能記下斷點處的數據,下次next書接上回,這正是遞歸函數需要的。
例如中序遍歷二叉樹:
(應該是David Mertz寫的)
def inorder(t):
if t:
for x in inorder(t.left):
yield x
yield t.label
for x in inorder(t.right):
yield x
for n in inorder(tree)
print n
當然yield這種代碼next的能力還可以用在其它方面,發現拍案的在貼咯。