<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 練習13.參數, 解包, 變量 在這節練習中,我們將學到另外一種將變量傳遞給腳本的方法(腳本就是你寫的 `.py` 程序)。你已經知道,如果要運行 `ex13.py`,只要在命令行運行 `python ex13.py` 就可以了。這句命令中的 `ex13.py` 部分就是所謂的“參數(argument)”,我們現在要做的就是寫一個可以接收參數的腳本。 將下面的程序寫下來,后面你會看到詳細的解釋: ~~~ from sys import argv script, first, second, third = argv print "The script is called:", script print "Your first variable is:", first print "Your second variable is:", second print "Your third variable is:", third ~~~ 第一行代碼中,我們用到一個`import`語句,這是將Python的功能模塊加入你自己腳本的方法。Python 不會一下子將它所有的功能提供給你,而是讓你需要什么就調用什么。這樣可以讓你的程序更加精簡,而后面的程序員看到你的代碼的時候,這些“import”語句可以作為提示,讓他們明白你的代碼用到了哪些功能。 `argv`就是所謂的“參數變量(argument variable)”,它是一個非常標準的編程術語。在其他的編程語言里你也可以看到它。這個變量包含了你傳遞給 Python 的參數。通過后面的練習你將對它有更多的了解。 代碼的第3行將 `argv`進行“解包(unpack)”,與其將所有參數放到同一個變量下面,我們將每個參數賦予一個變量名: script, first, second, 以及 third。這也許看上去有些奇怪,不過”解包”可能是最好的描述方式了。它的含義很簡單:“把 argv 中的東西解包,將所有的參數依次賦予左邊的變量名”。 接下來,就是正常的打印輸出了。 ## 等一下! 功能還有另外一個名字 前面我們使用`import`讓你的程序實現更多的功能,把`import`稱為“功能”。我希望你可以在沒接觸到正式術語的時候就弄懂它的功能。在繼續下去之前, 你需要知道它們的真正名稱:模塊(modules)。 從現在開始我們將把這些我們導入(import)進來的功能稱作模塊。你將看到類似這樣的說法:“你需要把sys模塊import進來。”也有人將它們稱作“庫(libraries)”,不過我們還是叫它們模塊吧。 ## 你看到的結果 像下面的示例一樣將你的腳本運行起來(你必須在命令行里傳遞3個參數): ~~~ $ python ex13.py first 2nd 3rd The script is called: ex13.py Your first variable is: first Your second variable is: 2nd Your third variable is: 3rd ~~~ 如果你每次輸入的參數不一樣,那你看到的輸出結果也會略有不同: ~~~ $ python ex13.py stuff things that The script is called: ex13.py Your first variable is: stuff Your second variable is: things Your third variable is: that $ $ python ex13.py apple orange grapefruit The script is called: ex13.py Your first variable is: apple Your second variable is: orange Your third variable is: grapefruit ~~~ 你可以將`first`, `2nd`, 和 `3rd` 替換成任意你喜歡的3個參數 如果你沒有運行對,你可能會看到的錯誤信息: ~~~ $ python ex13.py first 2nd Traceback (most recent call last): File "ex13.py", line 3, in <module> script, first, second, third = argv ValueError: need more than 3 values to unpack ~~~ ## 附加題 > 1. 給你的腳本三個以下的參數。看看會得到什么錯誤信息。試著解釋一下。 > 1. 再寫兩個腳本,其中一個接受更少的參數,另一個接受更多的參數,在參數解包時給它們取一些有意義的變量名。 > 1. 將 `raw_input` 和 `argv` 一起使用,讓你的腳本從用戶手上得到更多的輸入。 > 1. 記住“模塊(modules)”為你提供額外功能。多讀幾遍把這個詞記住,因為我們后面還會用到它。 ## 常見問題 ### Q:當我運行腳本的時候,有個報錯: `need more than 1 value to unpack`. > 一定記住,關注細節是學習編程的三要素之一。如果你仔細看了我是如何在命令行運行腳本的,你也能把你的腳本正確的運行起來。 ### Q:`argv` 和 `raw_input()`有什么區別? > 它們的不同之處在于要求用戶輸入的位置不同。如果你想讓用戶在命令行輸入你的參數,你應該使用`argv`.,如果你希望用戶在腳本執行的過程中輸入參數,那就就要用到`raw_input()`。 ### Q:命令行輸入的參數是字符串嗎? > 是的,如果你需要輸入數字,可以使用`int()`把他們轉化成整數,可以參考 `int(raw_input())`. ### Q:如何使用命令行? > 通過這節練習,你其實已經快速的學會如何使用命令行了,如果在此階段你想深入學習的話,你可以閱讀這本書的附錄A--命令行速成教程。 ### Q: 我不知道怎樣把`argv` 和 `raw_input()`結合起來使用. > 不要想太多. 用`raw_input()`修改腳本后面的兩行代碼,然后打印輸出就行。然后試試用更多的方式來同時使用這兩種方法修改腳本。 ### Q:為什么我不能這么寫`raw_input('? ') = x`? > 因為這種寫法正好是將它正常運行方法的逆序,按照我的寫法修改,就能正常運行了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看