W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
在這節(jié)練習中,我們將學到另外一種將變量傳遞給腳本的方法(腳本就是你寫的 .py
程序)。你已經知道,如果要運行 ex13.py
,只要在命令行運行 python ex13.py
就可以了。這句命令中的 ex13.py
部分就是所謂的“參數(argument)”,我們現(xiàn)在要做的就是寫一個可以接收參數的腳本。
將下面的程序寫下來,后面你會看到詳細的解釋:
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
讓你的程序實現(xiàn)更多的功能,把import
稱為“功能”。我希望你可以在沒接觸到正式術語的時候就弄懂它的功能。在繼續(xù)下去之前, 你需要知道它們的真正名稱:模塊(modules)。
從現(xiàn)在開始我們將把這些我們導入(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
- 給你的腳本三個以下的參數??纯磿玫绞裁村e誤信息。試著解釋一下。
- 再寫兩個腳本,其中一個接受更少的參數,另一個接受更多的參數,在參數解包時給它們取一些有意義的變量名。
- 將
raw_input
和argv
一起使用,讓你的腳本從用戶手上得到更多的輸入。- 記住“模塊(modules)”為你提供額外功能。多讀幾遍把這個詞記住,因為我們后面還會用到它。
need more than 1 value to unpack
.一定記住,關注細節(jié)是學習編程的三要素之一。如果你仔細看了我是如何在命令行運行腳本的,你也能把你的腳本正確的運行起來。
argv
和 raw_input()
有什么區(qū)別?它們的不同之處在于要求用戶輸入的位置不同。如果你想讓用戶在命令行輸入你的參數,你應該使用
argv
.,如果你希望用戶在腳本執(zhí)行的過程中輸入參數,那就就要用到raw_input()
。
是的,如果你需要輸入數字,可以使用
int()
把他們轉化成整數,可以參考int(raw_input())
.
通過這節(jié)練習,你其實已經快速的學會如何使用命令行了,如果在此階段你想深入學習的話,你可以閱讀這本書的附錄A--命令行速成教程。
argv
和 raw_input()
結合起來使用.不要想太多. 用
raw_input()
修改腳本后面的兩行代碼,然后打印輸出就行。然后試試用更多的方式來同時使用這兩種方法修改腳本。
raw_input('? ') = x
?因為這種寫法正好是將它正常運行方法的逆序,按照我的寫法修改,就能正常運行了。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: