1. 程式人生 > >Python運維開發基礎01-語法基礎【轉】

Python運維開發基礎01-語法基礎【轉】

博客園 imp 執行命令 引導 inf 目錄 ndt ftw 作用

開篇導語

  • 整個Python運維開發教學采用的是最新的3.5.2版,當遇到2.x和3.x版本的不同點時,會采取演示的方式,讓同學們了解。
  • 教學預計分為四大部分,Python開發基礎,Python開發進階,Python網頁編程,Python項目實戰
  • Python開發基礎分為語法基礎篇,文件基礎篇,函數基礎篇,模塊基礎篇
  • 語法基礎篇中,我著重希望訓練同學的是作為開發應該具備的一種邏輯思路。
  • 文件基礎篇中,我們需要練習的是如何將數據永久性的存儲在硬盤上,提供讀,寫。
  • 函數基礎篇中,我重點是要引導同學們構建出整個代碼架構的編寫設計模式。只有邏輯和架構完全成型同學們才算是從思想上真正進入開發領域的大門。
  • 模塊基礎篇中,我們接觸很多常用的模塊,比如裝飾器和生成器等。並通過這些模塊來繼續完善優化我們對整個代碼架構的設計能力。
  • 至此,我們Python開發基礎部分就結束了,大概60課時,15小節。

一,Python發展介紹

  1. 打開網頁直接念百度百科
  2. 介紹下Python3.X優於Python2.7X的地方
  3. 企業Centos7.0將和Python3.0同步升級

二,Python的基礎環境構建

在編譯之前,我們先yum安裝一些支持程序

yum -y install gcc gcc-c++ make autoconf readline readline-devel

2.1 Centos6.5升級Python2.7和Python3.5程序

升級Python2.7.13

[root@localhost ~]# tar xf Python-2.7.13.tgz -C /usr/src/
[root@localhost ~]# tar xf Python-2.7.13.tgz -C /usr/src/
[root@localhost Python-2.7.13]# ./configure --prefix=/usr/local/python27
[root@localhost Python-2.7.13]# make && make install
[root@localhost python27]# cd /usr/local/python27/
[root@localhost python27]# python -V
Python 2.6.6
[root@localhost python27]# which python
/usr/bin/python
[root@localhost python27]# mv /usr/bin/python /usr/bin/python26
[root@localhost bin]# ln -s /usr/local/python27/bin/python /usr/bin/python 
[root@localhost bin]# python -V
Python 2.7.13

升級Python3.5.2

[root@localhost ~]# tar xf Python-3.5.2.tgz -C /usr/src/
[root@localhost ~]# cd /usr/src/Python-3.5.2/
[root@localhost Python-3.5.2]# ./configure --prefix=/usr/local/python35
[root@localhost Python-3.5.2]# make && make install
[root@localhost python35]# cd /usr/local/python35/bin/
[root@localhost bin]# ln -s /usr/local/python35/bin/python3 /usr/bin/python3
[root@localhost bin]# python3 -V
Python 3.5.2

修復yum倉庫的編譯錯誤

[root@localhost bin]# vim `which yum`
[root@localhost bin]# head -1 `which yum`
#!/usr/bin/python26 #修改這裏

2.2 創建Python的vim初始練習環境

在家目錄創建如下文件和內容

[root@localhost ~]# cat ~/.vimrc 
set cursorline

set tabstop=4

set shiftwidth=4

set expandtab

function PythonHeader()
    call setline(1,"#!/usr/bin/env python3")
    call setline(2,"# -*- coding:utf-8 -*-")
    call setline(3,"# author:你的名字")
    normal G
    normal o
    normal o
endfunc

autocmd BufNewfile *.py call PythonHeader()

map <F5> :!clear ;python3 % <CR>    #用Python3 執行當前shell

三,初識Python

3.1 解析器的寫法

他們的區別?

#!/usr/bin/env python
#!/usr/bin/python

env是一個查找器,它會自動幫我們去找python這個可執行文件位置

3.2 第一個Python程序

在Linux下創建一個文件叫做hello.py

print("hello world!")

然後執行命令:python hello.py

[root@localhost ~]# python3 hello.py 
hello world!

指定解釋器:

如果想用類似於shell腳本一樣的方式執行python腳本,例如:./hello.py,那麽就需要在hello.py文件的頭部指定解釋器,如下:

#代碼演示:

#!/usr/bin/env python3

print ("hello world!")

#輸出結果

[root@localhost ~]# ./hello.py 
hello world!

在交互器中執行代碼

除了把程序寫在文件中,還可以直接調用python自帶的交互器運行代碼。

[root@localhost ~]# python3
Python 3.5.2 (default, Dec 20 2017, 01:15:07) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello world!")
Hello world!

3.3 Python的變量

Python是一種強制編譯型語言,它不需要像類似C語言一樣提前聲明變量的類型,而是根據賦值的內容是什麽自動確定變量的類型

>>> name = 123  #直接賦值數字
>>> type(name)
<class ‘int‘>   #name為整型
>>> name = "hello world"    #賦值字符串
>>> type(name)
<class ‘str‘>   #name為字符串類型
>>> name = "123"    #給數字加雙引號
>>> type (name)
<class ‘str‘>       #也會被Python認為是字符串
>>> name = hello world  #如果字母不加雙引號,Python會認為是數字,因此報錯
  File "<stdin>", line 1
    name = hello world
                     ^
SyntaxError: invalid syntax

變量定義規則:

  • 變量名只能是字母,數字或下劃線的任意組合
  • 變量名的第一個字符不能是數字
  • 以下關鍵字不能聲明為變量名
[‘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‘]

關鍵字是什麽?
類似Python程序默認的類型int,str還有系統環境變量等都是關鍵字

四,思考題與作業:利用Shell實現"模擬用戶登錄程序"

4.1 shell知識補充

(1)break,continue,return,exit循環控制語句作用演示
(2)腳本庫函數functions引用

[root@localhost yunjisuan]# cat test.sh 
#!/bin/bash

. /etc/rc.d/init.d/functions


action "服務運行成功!" /bin/true
action "服務運行失敗!" /bin/false
[root@localhost yunjisuan]# sh test.sh 
服務運行成功!                                             [確定]
服務運行失敗!                                             [失敗]

4.2 shell實現用戶登錄驗證程序

[root@localhost yunjisuan]# cat login.sh 
#!/bin/bash
#user login

User="yunjisuan"
Passwd="666666"
User2="yunjisuan2"
Passwd2="123123"
Lock=""

function Title(){
cat<<KOF
    *************************
    *   1,登錄用戶          *
    *   2,退出              *
    *************************
KOF
}

function Login(){
#用戶登錄功能模塊具體要求:
#0,先判斷用戶名是否被鎖定,如果被鎖定,禁止登陸。
#1,判斷用戶名是否正確,不正確重新輸入
#2,已知用戶名判斷密碼是否正確,如果不正確重新輸入密碼。
#3,密碼輸入3次如果全都錯誤,賬戶鎖定(將用戶名,放進變量Lock裏)
#4,如何放進變量裏:Lock="$Lock $user",通過grep -w精確匹配過濾.
#5,腳本一直不退出。除非,用戶主動退出或者登陸成功!

}

while :
do
    clear
    Title
    read -p "請輸入你的選擇:" Num
    case $Num in
        1)
        Login
        ;;
        2)
        exit
        ;;
        *)
        echo "您的輸入有誤,請重新輸入!"    
        sleep 2
        ;;
    esac
done

轉自
Python運維開發基礎01-語法基礎 - 陳思齊 - 博客園 https://www.cnblogs.com/chensiqiqi/p/9163023.html

Python運維開發基礎01-語法基礎【轉】