##入門(2)
這一章將繼續講解一些基礎的Python腳本概念,我們將把代碼寫入到一個腳本里面,函數,類和sys模塊。
**Python腳本框架**
下面是一個開始寫Python腳本的基礎例子,開始部分,我么告訴系統需要使用那一個解釋器"#!/usr/bin/env python",然后我們通過"def main():"聲明一個main函數,最后2行代碼有mian()的先執行。你可以定義在你的腳本里面定義其它函數,這樣使得你的代碼更容易的理解和修改維護:
```
#!/usr/bin/python
import <module1>, <module2>
def myFunction():
def main():
myFunction()
if __name__=="__main__":
main()
```
**函數**
一種常見的寫法是把每個功能函數分開寫,執行一些操作之后然后返回結果。下面的這個偽代碼演示的例子就能夠很清晰的解釋這個概念:
```
# 聲明函數/邏輯處理
def MyFunction:
...do work...
return output
#在main函數里面調用:
def main():
output = MyFunction(input)
```
**類**
Python類開始使用的時候會有點困難,因為它是教你以何種方式設計你的代碼,如果你掌握類的概念那么你就可以把數據和定義按照類的邏輯分組,這樣類就擁有了屬性和與之想關聯的方法。當你定義一個類之后,你可以創建一個新的類,然后繼承之前創建的類的屬性和與之相關聯的方法,這編程就叫做面向對象編程。
如果你感到迷惑,那么我建議你先不要去學習類,實際上,你并不需要類。但它可以讓你的代碼減少冗余。下面我們將定義個新的類"Domain"使用"class"關鍵字,當你實例化Domain類型對象的時候,它的類型有多種方式去定義:
```
>>> import os
>>> class Domain:
... def __init__(self, domain, port, protocol):
#通過兩個內部變量存儲變量
... self.domain=domain
... self.port=port
... self.protocol=protocol
#構造一個url的方法
... def URL(self):
... if self.protocol == 'https':
... URL = 'https://'+self.domain+':'+self.port+'/'
... if self.protocol == 'http':
... URL = 'http://'+self.domain+':'+self.port+'/'
... return URL
# 調用os.system中主機命令lookup去解析域名
... def lookup(self):
... os.system("host "+self.domain)
...
>>>
>>> domain=Domain('google.com', '443', 'https')
>>>
>>> dir(domain)
['URL', '__doc__', '__init__', '__module__', 'ip', 'lookup', 'port', 'protocol']
>>> domain.URL()
'https://8.8.8.8:443/'
>>> domain.ip
'8.8.8.8'
>>> domain.port
'443'
>>> domain.protocol
'https'
>>> domain.lookup()
google.com has address 74.125.228.233
google.com has address 74.125.228.227
google.com has address 74.125.228.232
```
正如你所看到的,當你實例化一個Domian類之后你可以運行類中的方法。再次說聲,這個概念最初的時候很容易混亂,尤其是當你剛剛Python和編程的時候。嘗試一下去實現一個新的類在你的Python腳本里面,我發現這是掌握這個概念最好的途徑。
**使用sys處理命令行輸入值**
最好我們來介紹一下sys模塊,它可以讓你讀取從命令終端輸入的值并且幫你引入到腳本里面,它的語法很簡單,sys.agrv[0]就是一個實際的腳本名,并在命令行指定的每個參數后面分配一個下標。下面是一個簡單的例子:
```
#!/usr/bin/python
import sys
script = sys.argv[0]
ip = sys.argv[1]
port = sys.argv[2]
print "[+] The script name is: "+script
print "[+] The IP is: "+ip+" and the port is: "+port
```
當執行這個腳本的時候,并且后面跟三個參數執行之后的結果如下:
```
~$ python sys.py 8.8.8.8 53
[+] The script name is: sys.py
[+] The IP is: 8.8.8.8 and the port is: 53
```
上面的只是一個例子,大家可以繼續去研究其它Python模塊,因為它們能夠放你用最簡單的方式解決你遇到的問題。下一章將會介紹使用Python進行網絡連接并且寫出一個基礎的掃描器.