簡體   English   中英

Python函數演練

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM