Python3 中 sys.argv[ ]的用法解釋
sys.argv[]說白了就是一個從程式外部獲取引數的橋樑,這個“外部”很關鍵,所以那些試圖從程式碼來說明它作用的解釋一直沒看明白。因為我們從外部取得的引數可以是多個,所以獲得的是一個列表(list),也就是說sys.argv其實可以看作是一個列表,所以才能用[]提取其中的元素。其第一個元素是程式本身,隨後才依次是外部給予的引數。
下面我們通過一個極簡單的test.py程式的執行結果來說明它的用法。
1 #test.py 2 3 import sys 4 a=sys.argv[0] 5 print(a)
將test.py儲存在c盤的根目錄下。
在程式中找到 ‘執行’->點選->輸入"cmd"->Enter鍵 進入控制檯命令視窗(如下圖),先輸入cd c:\ (作用是將命令路徑改到c盤根目錄),然後輸入test.py執行我們剛剛寫的程式:
得到的結果是C:\test.py,這就是0指程式碼(即此.py程式)本身的意思。
然後我們將程式碼中0改為1 :
a=sys.argv[1]
儲存後,再從控制檯視窗執行,這次我們加上一個引數,輸入:test.py what
得到的結果就是我們輸入的引數what,看到這裡你是不是開始明白了呢。
那我們再把程式碼修改一下:
a=sys.argv[2:]
儲存後,再從控制檯窗臺執行程式,這次多加幾個引數,以空格隔開:
test.py a b c d e f
得到的結果為[‘b’, ’c’, ’d’, ’e’, ’f’]
應該大徹大悟了吧。Sys.argv[ ]其實就是一個列表,裡邊的項為使用者輸入的引數,關鍵就是要明白這引數是從程式外部輸入的,而非程式碼本身的什麼地方,要想看到它的效果就應該 將程式儲存了,從外部來執行程式並給出引數。
例項:test01.py
#conding:utf-8
import sys #匯入sys模組
print(sys.argv[1:3]) # 列印sys.argv的第1個引數到第三個引數,不包含第三個引數,返回的值是一個list
#結果如下:
#py -3 test04.py a b c d e f
#['a', 'b']
例項:test02.py
#conding:utf-8
import sys #匯入sys模組
print(sys.argv[1:5:2])
print(sys.argv[-1])
print(sys.argv[::-1])
#結果如下:
#py -3 test05.py a b c d e f
# ['a', 'c']
# f
#['f', 'e', 'd', 'c', 'b', 'a', '1234.py']
通過如上示例,應該明白sys.argv的使用和暫時的結果.
sys.argv就是將程式本身和給程式引數返回一個list,這個list中的索引為0的就是程式本身.因此,裡面的給sys.argv的引數就是list索引.
三、解決問題:
sys.argv[-1]返回的是呼叫test**.py後緊跟的所有引數中最後一個,是一個list中的最後一個元素,而這個list是這樣的:它是sys模組下的一個全域性變數,第一個元素是模組名sys.argv[0]、後面是依次傳入的引數sys.argv[1]、sys.argv[2]或sys.argv[-1]、sys.argv[-2]。
相關文章
- Python中 sys.argv[]的用法解釋Python
- Python3中*和**運算子的用法詳解!Python
- Python3中strip()、lstrip()、rstrip()用法詳解Python
- Python3 中 configparser 模組解析配置的用法詳解Python
- python中yield的用法詳解——最簡單,最清晰的解釋Python
- try/catch 的解釋與用法
- Python 中的 sys.argv 是個什麼鬼?Python
- Python中的sys.argv是什麼含義Python
- Python3 range() 函式用法Python函式
- Python3中urlopen()詳解Python
- MySQL中BETWEEN子句的用法詳解MySql
- 詳解MySQL中WHERE子句的用法MySql
- Java 中 this 和 super 的用法詳解Java
- Selenium用法詳解 - - python3 selenium3自動環境搭建Python
- Python3中使用PyMongo的方法詳解PythonGo
- 詳解Vue中watch的高階用法Vue
- 詳解Go regexp包中 ReplaceAllString 的用法Go
- Lombok中@Builder和@SuperBuilder註解的用法LombokUI
- statement 、prepareStatement的用法和解釋REST
- SpringMVC中@RequestMapping註解中的return “redirect:/“;跟return““的用法。SpringMVCAPP
- java中printf中用法詳解Java
- AngularJS select中ngOptions用法詳解AngularJSGo
- Python3 關鍵字nonlocal和global的用法與區別Python
- Java中名詞的解釋Java
- 帶你瞭解資料庫中group by的用法資料庫
- 帶你瞭解資料庫中JOIN的用法資料庫
- Nmap在實戰中的高階用法(詳解)
- 瞭解css中偽元素 before和after的用法CSS
- 專案中關於解構的常用用法
- Oralce 使用SQL中的exists 和not exists 用法詳解SQL
- ES6中Promise用法詳解Promise
- js中的this用法JS
- Python3中的運算子Python
- axios的用法詳解iOS
- 詳解C++的模板中typename關鍵字的用法C++
- 不求甚解--詳解ansible-playbook中roles的用法
- Python中dumps, loads dump, load用法詳解Python
- 轉:SVN中trunk,branches,tags用法詳解