python流程控制、函數總結

    shell腳本是由系統命令、變量、流程控制三者組合而成的;
    類比python程序,與shell中能夠實現很多功能的系統命令類似,python有很多可以實現不同功能的模塊;
    變量方面,shell腳本有系統變量,有普通變量,有特殊位置變量,有特殊變量調用方式,有單個變量,也有數組,而python與一般高級語言一樣,變量有名稱、數據類型、調用方式(操作符和內置函數);
    在流程控制方面,shell與各種高級語言都是類似的,基本的流程控制有順序、條件、循環三種方式,主要也是if,for,break,continue這幾種方式實現。
    另外兩者處理基本內容,在編程思想方面更要深刻立即,有了程序思維,纔可以編寫好程序。

    我編寫了一個總結python流程控制和函數的腳本,腳本內容如下:

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

#################
#流程控制
#################
print '''
流程控制,是程序實現邏輯的重要方法,與程序的流程圖對應。
一般的流程分爲順序、條件、循環三種方式,順序執行比較簡單,與自頂向下,面向過程的思路類似,條件判斷和循環控制就需要專門的語句和格式來實現。
流程控制語句,用來實現對程序流程的選擇、循環和返回等進行控制。
python中的主要流程控制包括 if判斷,for循環,break跳出,continue繼續等語句。
'''
print
print '''
程序要控制流程,就要對程序進行分塊,對於代碼來說,就有了“程序塊”和“作用域”的概念,大多數高級程序中,程序塊和作用域有不同的概念。
    程序塊結構,是一種程序結構形式,使程序變得清晰,便於閱讀和修改。比如C、C++允許程序員按照自己的習慣在不同行之間,採取任意對齊方式。
    作用域,是按照變量或者函數的可見性定義的程序子集。如果某個符號的名稱在給定的點是可見的,則稱該符號在作用域內。如C、C++採用大括號{}表達作用域。
python中用“縮進”這一種方式,同時表達程序塊和作用域的概念,相同縮進範圍內的代碼在一個程序塊和作用域,且同一個程序塊和作用域不能有不同的縮進。
python中用冒號:作爲程序塊標記關鍵字,每個冒號:後面的程序塊必須有相同的縮進,縮進不同就會報錯。
高級語言允許定義空作用域,python必須有縮進,所以可以用pass來定義作用域,但不執行任何動作。
'''
print
#條件判斷
print '''
條件判斷,是依據指定的變量或表達式的結果,決定後續運行的程序,最常用的是if-else指令,可以根據條件是否成立來決定後續的程序。
if-else判斷可以單個執行,也可以組合多個指令進行復雜的判斷。
python中的if語句有3中語法形式。
#判斷if格式一:if條件爲真,則執行某個代碼塊
if expression1:
    block_for_True
#判斷if格式二:if條件爲真,則執行某塊代碼;如果爲假,則執行else下的代碼塊
if expression1:
    block_for_True
else:
    block_for_False
#判斷fi格式三:if條件爲真,則執行某塊代碼;如果爲假,則執行elif的條件判斷
if expression1:
     block_for_expression1
elif expression2:
    block_for_expression2
elif expression3:
    block_for_expression3
else:
    block_for_False
複雜判斷,每個if,elif,else塊中都可以放入多條語句,也可以放入判斷或循環.
'''
#條件判斷 if-elfi-else 程序示例:
import sys
param = None
if len(sys.argv) > 1:
    param = int(sys.argv[1])
if param is None:
    print "Alert"
    print "The param is not set"
elif param < -10:
    print "The param is samll"
elif param > 10:
    print "The param is big"
else:
    print "The param is middle"
#循環控制
print '''
循環控制,是因爲在實際程序開發中,有許多具有規律性的重複操作,因此程序中需要重複執行某些語句。
一組被重複執行的語句,叫循環體,能否繼續重複,則取決於循環的終止條件。
循環語句有循環體和循環終止條件兩部分組成。python中循環語句有while語句和for語句兩種,while語句先循環,達到條件時終止循環,要避免死循環。
for循環先有條件判斷,後面在執行循環體,容易避免死循環。
'''
print
print '''
while語句的語法,判斷條件爲真,則執行循環體,一直到表達式爲假,終止執行,語法爲:
while expression:
        repeat_block
'''
#while循環程序示例:
myList = [ 'English', 'Chinese', 'Japanese', 'German', 'France' ]
while len(myList) > 0:
    print "pop element out:", myList.pop()
print '''
python中的for語句與C#,java中的foreach語句類似,語法結構爲:
for element in iterable:
        repeat_block
含義爲針對iterable中每個元素執行repeat_block,在循環體中可以以變量名element來訪問當前元素。循環內容可以是序列類型,集合set,或迭代器等。
    在開發比較複雜的程序時,while或for循環語句的循環體,有時需要提前結束整個循環,或者在本輪尚未結束時提前開始下一輪循環,這就需要break或continue語句。
    break語句會提前結束整個循環;
    continue會在本輪循環體沒有結束時,直接開始下一輪循環。
'''
#for循環程序示例
myList = [ 'English', 'Chinese', 'Japanese', 'German', 'France' ]
for language in myList:
    print "Current element is :", language
#循環控制break和continue程序示例:
count=0
while True:
    #input = raw_input("Enter quit: ")
    input = "quit"
    # check for valid passwd
    if input == "quit":
        break
    count = count + 1
    if count%3 > 0:
        continue
    print "Please input quit!"
print "Quit loop successfully!"

#################
#函數
#################
print '''
從面向過程的編程方法,到函數式編程,就是函數在程序中起到的巨大作用。
在編程中使用函數,可以寫出優雅的程序結構,模塊化的結構,可以使程序簡單化,提高可讀性和可維護性。
函數有三個要素:函數名,參數,函數體;函數還可以根據需要,設置返回值。
python中函數定義的關鍵字是def,函數體這一程序塊,還是用冒號:作爲關鍵字。
    python中返回值可以是0個或多個,無需顯示定義返回值的數量和類型,只需要用return關鍵字返回,返回值只有值,調用時需要重新定義變量才能使用;
    函數的參數可以是任意個,可以只定義參數名,也可以在定義參數名後,給參數定義默認值,但有默認值的參數一定要在後面;
    在調用函數,傳入參數值時,可以按照參數定義順序只傳入值,也可以不按順序,傳入命名參數和值;
'''
#一般函數與返回值調用示例
def sum_01(x, y):
    return x+y
def total(x, y, z):
    sum_of_two = sum_01(x, y)
    sum_of_three = sum_01(sum_of_two, z)
    return sum_of_two, sum_of_three
def main_01():
    print "return of sum:", sum_01(4, 6)
    x, y = total(2, 6, 8)
    print "return of total:", x, ", ", y
main_01()
#帶默認值的函數調用示例
def sum_02(x, y=10):
    return x+y
def main_02():
    print "return of sum(2, 3):", sum_02(2, 3)
    print "return of sum(-4)", sum_02(-4)
    
main_02()
#不同方式參數賦值的函數調用示例
def sum_03(x, y, z):
    return x + y + z
def main_03():
    #下面兩種調用方式,意義相同
    ret1 = sum_03(1, 2, 3)
    ret2 = sum_03(y=2, z=3, x=1)
    
    print "return of sum_03(1, 2, 3):", ret1
    print "return of sum_03(y=2, z=3, x=1):", ret2
main_03()
print
print '''
變長參數的函數,就是參數個數可變、參數類型不定的函數。變長參數可以爲函數設計提供更大的靈活性。
python中允許定義兩種類型的函數變長參數:
    元組tuple變長參數:適用於未知參數的數量不固定,但在函數中使用這些參數無須知道參數名字的場合。在函數定義中用單星號*表示。
    字典dict變長參數: 適用於未知參數的數量不固定,而且在函數使用參數時需要知道參數名字的場合。在函數定義中,用雙型號**表示。
'''
#使用元組tuple作爲變長參數的示例
def show_message(message, *tupleName):
    for name in tupleName:
        print message, ", ", name
def main_tuple():
    show_message("Good Morring", "Jack", "Evans", "Rose Hasa", 893, "Zion" )
main_tuple()
#使用字典dict作爲變長參數的示例
def check_book(**dictParam ):
    if dictParam.has_key('Price'):
        price = int(dictParam['Price'])
        if price > 100:
            print "*******I want buy this book!*******"
    print "The book information are as follow:"
    for key in dictParam.keys():
        print key, ": ", dictParam[key]
    print ""
    
def main_dict():
    check_book( author = 'James', Title = 'Economics Introduction' )
    check_book( author = 'Linda', Title = 'Deepin in python', Date = '2015-5-1', Price = 302 )
    check_book( Date = '2002-3-19', Title = 'Cooking book', Price = 20 )
    check_book( author = 'Jinker Landy', Title = 'How to keep healthy' )
    check_book( Category = 'Finance', Name = 'Enterprise Audit', Price = 105 )
main_dict()
print
print '''
匿名函數 Anonymous Function是一類無須定義函數名的函數或子程序,一般用於值在代碼中存在一次函數引用的場合。
因爲只需要引用一次,所以無須聲明。python中用lambda語法定義匿名函數,只需表達式,而無須聲明。
除了沒有參數名,匿名函數定義和一般函數的定義都相同。
匿名函數定義格式如下:
lambda [arg1, arg2, ... ,argN]: expression
print (lambda x, y: x - y)(3, 4)
'''
#匿名函數示例如下
import datetime
def nameFunc(a):
    return " I'm named function with param %s " % a
    
def call_func(func, param):
    print datetime.datetime.now()
    print func(param)
    print ""
def main_lambda():
    call_func(nameFunc, 'hello')
    call_func(lambda x: x*2, 9)
    call_func(lambda y: y*y, -4)
        
main_lambda()


    執行結果如下:

# python func.py
流程控制,是程序實現邏輯的重要方法,與程序的流程圖對應。
一般的流程分爲順序、條件、循環三種方式,順序執行比較簡單,與自頂向下,面向過程的思路類似,條件判斷和循環控制就需要專門的語句和格式來實現。
流程控制語句,用來實現對程序流程的選擇、循環和返回等進行控制。
python中的主要流程控制包括 if判斷,for循環,break跳出,continue繼續等語句。

程序要控制流程,就要對程序進行分塊,對於代碼來說,就有了“程序塊”和“作用域”的概念,大多數高級程序中,程序塊和作用域有不同的概念。
    程序塊結構,是一種程序結構形式,使程序變得清晰,便於閱讀和修改。比如C、C++允許程序員按照自己的習慣在不同行之間,採取任意對齊方式。
    作用域,是按照變量或者函數的可見性定義的程序子集。如果某個符號的名稱在給定的點是可見的,則稱該符號在作用域內。如C、C++採用大括號{}表達作用域。
python中用“縮進”這一種方式,同時表達程序塊和作用域的概念,相同縮進範圍內的代碼在一個程序塊和作用域,且同一個程序塊和作用域不能有不同的縮進。
python中用冒號:作爲程序塊標記關鍵字,每個冒號:後面的程序塊必須有相同的縮進,縮進不同就會報錯。
高級語言允許定義空作用域,python必須有縮進,所以可以用pass來定義作用域,但不執行任何動作。

條件判斷,是依據指定的變量或表達式的結果,決定後續運行的程序,最常用的是if-else指令,可以根據條件是否成立來決定後續的程序。
if-else判斷可以單個執行,也可以組合多個指令進行復雜的判斷。
python中的if語句有3中語法形式。
#判斷if格式一:if條件爲真,則執行某個代碼塊
if expression1:
    block_for_True
#判斷if格式二:if條件爲真,則執行某塊代碼;如果爲假,則執行else下的代碼塊
if expression1:
    block_for_True
else:
    block_for_False
#判斷fi格式三:if條件爲真,則執行某塊代碼;如果爲假,則執行elif的條件判斷
if expression1:
     block_for_expression1
elif expression2:
    block_for_expression2
elif expression3:
    block_for_expression3
else:
    block_for_False
複雜判斷,每個if,elif,else塊中都可以放入多條語句,也可以放入判斷或循環.
Alert
The param is not set
循環控制,是因爲在實際程序開發中,有許多具有規律性的重複操作,因此程序中需要重複執行某些語句。
一組被重複執行的語句,叫循環體,能否繼續重複,則取決於循環的終止條件。
循環語句有循環體和循環終止條件兩部分組成。python中循環語句有while語句和for語句兩種,while語句先循環,達到條件時終止循環,要避免死循環。
for循環先有條件判斷,後面在執行循環體,容易避免死循環。

while語句的語法,判斷條件爲真,則執行循環體,一直到表達式爲假,終止執行,語法爲:
while expression:
        repeat_block
pop element out: France
pop element out: German
pop element out: Japanese
pop element out: Chinese
pop element out: English
python中的for語句與C#,java中的foreach語句類似,語法結構爲:
for element in iterable:
        repeat_block
含義爲針對iterable中每個元素執行repeat_block,在循環體中可以以變量名element來訪問當前元素。循環內容可以是序列類型,集合set,或迭代器等。
    在開發比較複雜的程序時,while或for循環語句的循環體,有時需要提前結束整個循環,或者在本輪尚未結束時提前開始下一輪循環,這就需要break或continue語句。
    break語句會提前結束整個循環;
    continue會在本輪循環體沒有結束時,直接開始下一輪循環。
Current element is : English
Current element is : Chinese
Current element is : Japanese
Current element is : German
Current element is : France
Quit loop successfully!
從面向過程的編程方法,到函數式編程,就是函數在程序中起到的巨大作用。
在編程中使用函數,可以寫出優雅的程序結構,模塊化的結構,可以使程序簡單化,提高可讀性和可維護性。
函數有三個要素:函數名,參數,函數體;函數還可以根據需要,設置返回值。
python中函數定義的關鍵字是def,函數體這一程序塊,還是用冒號:作爲關鍵字。
    python中返回值可以是0個或多個,無需顯示定義返回值的數量和類型,只需要用return關鍵字返回,返回值只有值,調用時需要重新定義變量才能使用;
    函數的參數可以是任意個,可以只定義參數名,也可以在定義參數名後,給參數定義默認值,但有默認值的參數一定要在後面;
    在調用函數,傳入參數值時,可以按照參數定義順序只傳入值,也可以不按順序,傳入命名參數和值;
return of sum: 10
return of total: 8 ,  16
return of sum(2, 3): 5
return of sum(-4) 6
return of sum_03(1, 2, 3): 6
return of sum_03(y=2, z=3, x=1): 6

變長參數的函數,就是參數個數可變、參數類型不定的函數。變長參數可以爲函數設計提供更大的靈活性。
python中允許定義兩種類型的函數變長參數:
    元組tuple變長參數:適用於未知參數的數量不固定,但在函數中使用這些參數無須知道參數名字的場合。在函數定義中用單星號*表示。
    字典dict變長參數: 適用於未知參數的數量不固定,而且在函數使用參數時需要知道參數名字的場合。在函數定義中,用雙型號**表示。
Good Morring ,  Jack
Good Morring ,  Evans
Good Morring ,  Rose Hasa
Good Morring ,  893
Good Morring ,  Zion
The book information are as follow:
Title :  Economics Introduction
author :  James
*******I want buy this book!*******
The book information are as follow:
Date :  2015-5-1
Price :  302
Title :  Deepin in python
author :  Linda
The book information are as follow:
Date :  2002-3-19
Price :  20
Title :  Cooking book
The book information are as follow:
Title :  How to keep healthy
author :  Jinker Landy
*******I want buy this book!*******
The book information are as follow:
Category :  Finance
Price :  105
Name :  Enterprise Audit

匿名函數 Anonymous Function是一類無須定義函數名的函數或子程序,一般用於值在代碼中存在一次函數引用的場合。
因爲只需要引用一次,所以無須聲明。python中用lambda語法定義匿名函數,只需表達式,而無須聲明。
除了沒有參數名,匿名函數定義和一般函數的定義都相同。
匿名函數定義格式如下:
lambda [arg1, arg2, ... ,argN]: expression
print (lambda x, y: x - y)(3, 4)
2017-03-09 20:20:31.264415
 I'm named function with param hello
2017-03-09 20:20:31.264533
18
2017-03-09 20:20:31.264555
16


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