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 解釋型:一邊解釋一邊執行。(易移植)

編譯型解釋型混合型
CJavaScriptJava
C++PythonC#
GORuby
SwiftPHP
Object-CPerl
PascalErlang
  • 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

  1. 已經是過去式,2020將不再提供相應的官網支持

  2. 是弱定義語言,不安全的語言

python3.x

  1. 現在正在使用,未來的希望。支持unicode、等新的語言規範

  2. 新的庫更新將只在3.x中實現,不在支持2.x

  3. 是強定義語言,安全的程序語言

  4. python3.x不再向下兼容2.x

注:TWISTED 是不完全支持3.x,2017年了是否已經能支持?確認一下。


PYTHON 安裝

  • Windows下安裝

  1. 下載安裝包(3.6)http://www.python.org/downloads/

  2. 安裝 默認安裝路徑:C:\Users\Administrator\AppData\Local\Programs\Python\Python36

  3. 配置環境變量(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個符號。 p_w_picpath

  • 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:

break

guess_age=int(input("guess age:"))

if guess_age == age_of_old:

print("yes,you got it.")

  break

elif 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.")

  break

elif 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.")

  break

elif 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.")

  break

elif 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=0

eles:

print("you have tried too many times..fuck off")

  • 注:continue 爲跳出本次循環進入下一次循環,break爲結束整個循環。

小測試:

for i in range(10):

print("--------",i)

if i > 5 and i<8:

continue

for j in range(10):

print(j)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章