[英]Python function walkthrough
我一直在研究python問題,以准備考試。 在網上搜索試圖查找類似功能/文檔以清除問題后,我陷入了僵局。 這段代碼需要我們手動確定確切的輸出,我發現很難真正解釋該函數到底在做什么,但是實際上已經運行了腳本以仔細查看是否可以清除所有問題。 我能夠確定為什么某些結果是這樣的。
#!/usr/bin/python
y=5
def fun(i, x=[3,4,5], y=3):
print i, x,
y += 2
if y != 5:
print y,
print
return y
a = ["a", "b", "c", "d", "e", "f"]
a[1] = 'x'
fun(0)
fun(1, a)
a.append("x")
fun(2, a, 1)
fun(3, a[2:6])
fun(4, 4)
fun(5, a[:4])
fun(6, a[-3:-1])
s = "go python!"
fun(7, s)
fun(8, s[3:4])
fun(9, s[6])
fun(10, s)
fun(11, s[len(s)-1])
fun(12, s.split(" ")[1])
h = { "yes":2, 4:"no", 'maybe':5}
h['sortof'] = "6"
fun(13, h)
fun(14, h.keys())
h[0] = 4
h['never'] = 7
fun(15, h)
del( h[4] )
fun(16, h)
stooges = [ ["l", "c", "m"], 6, {'c':'d', 'e':'f'}, [ "x", "y"]]
fun(17, stooges)
fun(18, stooges[1])
fun(19, stooges[3][1])
print "20", fun(14, stooges[0][0], 7)
輸出如下。
0 [3, 4, 5]
1 ['a', 'x', 'c', 'd', 'e', 'f']
2 ['a', 'x', 'c', 'd', 'e', 'f', 'x'] 3
3 ['c', 'd', 'e', 'f']
4 4
5 ['a', 'x', 'c', 'd']
6 ['e', 'f']
7 go python!
8 p
9 h
10 go python!
11 !
12 python!
13 {'maybe': 5, 'yes': 2, 4: 'no', 'sortof': '6'}
14 ['maybe', 'yes', 4, 'sortof']
15 {0: 4, 4: 'no', 'maybe': 5, 'never': 7, 'sortof': '6', 'yes': 2}
16 {0: 4, 'maybe': 5, 'never': 7, 'sortof': '6', 'yes': 2}
17 [['l', 'c', 'm'], 6, {'c': 'd', 'e': 'f'}, ['x', 'y']]
18 6
19 y
20 14 l 9
9
當調用fun(0)
,我知道0會簡單地傳遞給函數中的i,該函數會打印i和x的值,從而得出0 [3,4,5]。 我還注意到,對於fun(1,a),它再次將1傳遞給函數i並輸出1,但是這次而不是輸出x,而是輸出a的值,這是一個可變的列表,用a[1]='x'
進行a[1]='x'
更改...基本上來說,我不確定我確切地了解函數中發生了什么,盡管研究輸出使它更有意義,但我真的很想參加該考試,以准備一個肯定會出現的問題。 到目前為止,僅僅因為這樣的問題,我對表現良好的信心就很低,因為它將獲得很多成績。 真希望有人能幫助我並解釋該功能的作用。 本學期我們已經完成了編程工作,但是沒有什么不切實際的。 提前致謝。
您的代碼段中發生了很多事情。 因此,為了保持答案的簡潔性(並幫助您更好地學習),我建議使用Python調試器。 使用調試器是您通往專業發展道路的關鍵。 調試器將使您逐行瀏覽代碼,在方法的每一步都檢查所有變量。 這將幫助您了解每個語句如何影響變量。 我真的建議您使用調試器進行本練習。
要開始此:
import pdb # This is the Python debugger module. Comes with Python
y=5
def fun(i, x=[3,4,5], y=3):
print i, x,
y += 2
if y != 5:
print y,
print
return y
pdb.set_trace()
a = ["a", "b", "c", "d", "e", "f"]
a[1] = 'x'
fun(0)
fun(1, a)
a.append("x")
fun(2, a, 1)
當您現在運行該程序時,調試器將在執行a = ["a", "b", "c", "d", "e", "f"]
之前等待輸入。 如果鍵入“ s”並輸入,調試器將執行下一條語句。 隨時可以使用print
命令查看任何變量的值。 EGS。 print a
將顯示您的價值a
在該步驟。 有關更多選項,請參見pdb文檔 。
希望這對您的職業有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.