python學習一
Python簡介
python的創始人:吉多.範羅蘇姆(Guido van Rossum)
1989年聖誕節期間,作為ABC語言的一種繼承
最新TIOBE排行python語言排名第四(2016),Python運用越來越廣泛。
目前Python擅長應用領域:
WEB開發:眾多的WEB框架,Youtube、Dropbox等都是用的Python開發的,典型框架有Django、pyramid、tornado、bottle、flask、webpy
科學運算:SciPy、ipython、pandas
運維自動化:openstack、saltstack、ansible、騰訊藍鯨
圖形GUI:PyQT、WxPython、Kivy
網絡編程:Twisted、Requests、Scrapy、Paramiko
關於運維是否需要會編程?
未來的必然趨勢“運維自動化”
http://3060674.blog.51cto.com/3050674/1598255
運維會開發後能做什麽?
開發各種自動化工具,定制各種開源軟件
評估和優化業務技術架構
開發公司的內部辦公系統、CRM、網站等
什麽都能做的的全棧工程師
Python是門什麽樣的語言?
編程語言的分類:
1.1 編譯型:一次性把源程序生成可執行的機器碼,再執行。
1.2 解釋型:一邊解釋一邊執行。(易移植)
編譯型 解釋型 混合型 C JavaScript Java C++ Python C# GO Ruby Swift PHP Object-C Perl Pascal Erlang
2.1 動態語言:在運行期間才去做數據類型檢查。包括:Python、Ruby
2.2 靜態語言:在編譯期間就檢查數據類型。包括:C/C++、C#、JAVA
3.1 強類型定義語言:強制數據類型定義的語言。一旦一個變量被指定了數據類型,如不強制轉換,那麽它永遠是這個數據類型。(安全語言)
3.2 弱類型定義語言:數據類型可以被忽悠的語言。一個變量的數據類型可以賦不同的數據類型(非安全語言)
Python語言是解釋型動態強類型定義語言。
python2.x是弱類型定義語言!!!
Python的優缺點
優點
1、易學,應為範圍廣泛。
2、開發效率非常高,強大的第三方庫。
3、高級語言。
4、可移植性(避免使用依賴於系統的特性,幾乎可以在市場上的所有的系統平臺上運行)。
5、可擴展性(能c/c++等其它語言程序)。
6、可嵌入性(可把python嵌入C/C++程序,為用戶提供腳本功能)。
缺點
1、速度慢。
2、代碼不能加密,作為解釋型語言,它的代碼是以明文形式存儲的。
3、線程不能利用多CPU。GIL即全局解釋器鎖,是程序設計語言解釋器用於同步線程的工具,使任何時刻僅有一個線程在執行。Python的線程是操作系統的原生線程,liunx:pthread,windows:Win thread,完全由操作系統調度線程的執行。一個python解釋器內有一條主線程和多條用戶程序的執行線程。
Python解釋器
CPython 常用的解釋器,官方提供。liunx系統默認使用。
IPython 交互解釋器,用In 【序號】:作提示符。
PyPy 另一個Python解釋器,執行速度快。
Jython Java平臺上Python的解釋器
IronPython .Net平臺上的pythong解釋器
註:CPython使用最廣泛,如果在java或.Net平臺上用python最好的辦法是通過調用來交互,確保程序之間的獨立性。
Python發展史
Python2.x
過度版本Python2.6-2.7(2020年停止支持)
Python3.x(不兼容Python2.x)
PYTHON 2 OR 3 選擇
python2.x
已經是過去式,2020將不再提供相應的官網支持
是弱定義語言,不安全的語言
python3.x
現在正在使用,未來的希望。支持unicode、等新的語言規範
新的庫更新將只在3.x中實現,不在支持2.x
是強定義語言,安全的程序語言
python3.x不再向下兼容2.x
註:TWISTED 是不完全支持3.x,2017年了是否已經能支持?確認一下。
PYTHON 安裝
Windows下安裝
下載安裝包(3.6)http://www.python.org/downloads/
安裝 默認安裝路徑:C:\Users\Administrator\AppData\Local\Programs\Python\Python36
配置環境變量(environment variables)
Python3.6安裝更簡單,有自動添加環境變量安裝選項、下載標準庫安裝選項等,默認安裝路徑也有所改動。
linux、Mac 1.系統原裝python 2.如是2.x,更新至3.x
第一個Python程序“Hello World”
print(“Hello World!”)
在linux下創建一個文件hello.py並輸入
pring("Hello Word!") 然後執行命令python hello.py,輸出
指定解釋器
要想類似執行shell腳本一樣執行python腳本,就需要在文件頭部指定解釋器。如:
#!/usr/bin/emv python print("Hello World!") 這樣就可以執行:./hello.py
註意:
執行前需要給予hello.py執行權限,chmod 755 hello.py
#!/usr/bin/emv python(找環境變量中的默認的解釋器)和#!/usr/bin/python(指定此解釋器)聲明的區別,強烈推薦使用#!/usr/bin/env python方式聲明。
在交互器中執行
我們可以直接在python自帶的交互器運行代碼
在命令行模式下輸入“python”就可以進入到python交互器,輸入python代碼即可直接執行。
變量
變量是用來存儲程序過程中的結果,以備調用。
變量定義規則:
1、由字母、數字、下劃線組成
2、第一個字符不能是數字
3、一下關鍵字不能聲明為變量名:and,as,assert,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,print,raise,return,try,while,with,yield
註:在程序中變量名使用有意義的英文單詞,避免使用拼音、中文(Python3.x可以使用中文)
變量賦值
name = "asdfa"
name2 = name
print(name,name2)
name = "ffff"
print("what is the value of name2 now?")
註:name2還是asdfa,name更新為ffff
字符編碼
Python解釋器在加載.py文件中的代碼時,會對內容進行編碼(默認是ASCII)。
ASCII:是基於拉丁字母的電腦編碼系統,主要用於下士現代英語和其它西歐語言,最多用8位(一個字節)表示。即:2**8=256-1,ASCII碼只能表示255個符號。
GB2312為中文字符集
GB2312(1980):117445個字符
GBK1.0(1995):21886個符號
GB18030(2000):27484個漢字
Unicode
UTF-8
2bytes所以字符統一都是這麽2位
utf-8是變長的,其中: en-1byte,zh-3bytes
註:python3.x默認使用utf-8字符集,所以它是可以直接支持中文的;python2.0默認使用ASCII字符集,需要在代碼內進行字符集的聲明 -* -coding:utf-8 -*-
註釋
當行註釋:# 註釋內容,可以註釋單行。
多行註釋:‘‘‘ 註釋內容 ‘‘‘, 分別以三個引號開頭和結尾作為多行註釋。還可以作為一個多行的字符串賦值方式。
用戶輸入
#!/usr/bin/env python
—* — coding:utf-8 _* _
username=input("username:") password=input("password:") print(username,password)
輸出如下格式:
------- info of $ -----
Name:
Age:
Job:
Salary:
方式1(不推薦使用):
#!/usr/bin/env python
name=input("username:")
age=input("Age:")
job=input("Job:")
salary=input("Salary:")
info = ‘‘‘
----------info of ‘‘‘+name+‘‘‘--------
Name:‘‘‘ +name +‘‘‘
Age:‘‘‘ +age+‘‘‘
Job:‘‘‘ +job+ ‘‘‘
Salary:‘‘‘ +salary
print(info)
方式2:
#!/usr/bin/env python
name=input("username:")
age=input("Age:")
job=input("Job:")
salary=input("Salary:")
info = ‘‘‘
----------info of %s --------
Name:%s
Age:%s
Job:%s
Salary:%s
‘‘‘%(name,name,age,job,salary)
print(info)
%s 輸出字符串;%d 輸出整數;%f 輸出浮點數。
方式3(推薦使用)
#!/usr/bin/env python
name=input("username:")
age=input("Age:")
job=input("Job:")
salary=input("Salary:")
info = ‘‘‘
----------info of {—name} --------
Name:{_name}
Age:{_age}
Job:{_job}
Salary:{_salary}
‘‘‘.format(_name=name, _age=age, _job=job, _salary=salary)
print(info)
方式4
#!/usr/bin/env python
name=input("username:")
age=input("Age:")
job=input("Job:")
salary=input("Salary:")
info = ‘‘‘
----------info of {0} --------
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
‘‘‘.format(name,age,job,salary)
print(info)
密碼密文輸入(模塊初識)
使用模塊:import getpass
password=getpass.getpass("password:")
註:getpass在pytharm中使用有問題。
if else流程判斷
#!/user/bin/env python
import getpass
_username=‘abc‘
_password=‘abc123
username=input("username:")
password=getpass.getpass("password:")
if _usernameusername and _passwordpassword:
print("Welcome user {name} login...".format(name=username))else:
print("Invalid username of password!")
註:python中下級代碼必須縮進。
猜年齡
#!/user/bin/env python
age_of_old=38
guess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.")
elif guess_age > age_of_old:
print("think smaller...")
else:
print("think bigger!")
while 循環
可重復的猜年齡
#!/user/bin/env python
age_of_old=38
count = 0
while True:
if count == 3:
breakguess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.") breakelif guess_age > age_of_old:
print("think smaller...")else:
print("think bigger!")count +=1
優化後
#!/user/bin/env python
age_of_old=38
count = 0
while count <3:
guess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.") breakelif guess_age > age_of_old:
print("think smaller...")else:
print("think bigger!")count +=1
eles:
print("you have tried too many times..fuck off")
for循環
for i in range(10): 相當於i在“0、1、2、3、4、5、6、7、8、9”中每次取一個值
print("loop",i)
猜年齡程序用for循環
#!/user/bin/env python
age_of_old=38
for i in range(3):
guess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.") breakelif guess_age > age_of_old:
print("think smaller...")else:
print("think bigger!")eles:
print("you have tried too many times..fuck off")
註:for i in range(1,10,3)中“1”為數字組的開始值,“10”為數據結束值,“3”為步進(調整數組的值的數量)。
進一步完善的猜年齡遊戲
#!/user/bin/env python
age_of_old=38
count=0
while count <3:
guess_age=int(input("guess age:"))
if guess_age == age_of_old:
print("yes,you got it.") breakelif guess_age > age_of_old:
print("think smaller...")else:
print("think bigger!")count +=1
if count == 3:
countine_confirm = input("do you want to keep guessing..?") if countine_confirm !="n": count=0eles:
print("you have tried too many times..fuck off")
註:continue 為跳出本次循環進入下一次循環,break為結束整個循環。
小測試:
for i in range(10):
print("--------",i)
if i > 5 and i<8:
continuefor j in range(10):
print(j)
python學習一