這篇文章給大家介紹python中有哪些流程控制函數(shù),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
shell腳本是由系統(tǒng)命令、變量、流程控制三者組合而成的;
類比python程序,與shell中能夠?qū)崿F(xiàn)很多功能的系統(tǒng)命令類似,python有很多可以實(shí)現(xiàn)不同功能的模塊;
變量方面,shell腳本有系統(tǒng)變量,有普通變量,有特殊位置變量,有特殊變量調(diào)用方式,有單個(gè)變量,也有數(shù)組,而python與一般高級(jí)語言一樣,變量有名稱、數(shù)據(jù)類型、調(diào)用方式(操作符和內(nèi)置函數(shù));
在流程控制方面,shell與各種高級(jí)語言都是類似的,基本的流程控制有順序、條件、循環(huán)三種方式,主要也是if,for,break,continue這幾種方式實(shí)現(xiàn)。
另外兩者處理基本內(nèi)容,在編程思想方面更要深刻立即,有了程序思維,才可以編寫好程序。
我編寫了一個(gè)總結(jié)python流程控制和函數(shù)的腳本,腳本內(nèi)容如下:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
#################
#流程控制
#################
print '''
流程控制,是程序?qū)崿F(xiàn)邏輯的重要方法,與程序的流程圖對(duì)應(yīng)。
一般的流程分為順序、條件、循環(huán)三種方式,順序執(zhí)行比較簡(jiǎn)單,與自頂向下,面向過程的思路類似,條件判斷和循環(huán)控制就需要專門的語句和格式來實(shí)現(xiàn)。
流程控制語句,用來實(shí)現(xiàn)對(duì)程序流程的選擇、循環(huán)和返回等進(jìn)行控制。
python中的主要流程控制包括 if判斷,for循環(huán),break跳出,continue繼續(xù)等語句。
'''
print '''
程序要控制流程,就要對(duì)程序進(jìn)行分塊,對(duì)于代碼來說,就有了“程序塊”和“作用域”的概念,大多數(shù)高級(jí)程序中,程序塊和作用域有不同的概念。
程序塊結(jié)構(gòu),是一種程序結(jié)構(gòu)形式,使程序變得清晰,便于閱讀和修改。比如C、C++允許程序員按照自己的習(xí)慣在不同行之間,采取任意對(duì)齊方式。
作用域,是按照變量或者函數(shù)的可見性定義的程序子集。如果某個(gè)符號(hào)的名稱在給定的點(diǎn)是可見的,則稱該符號(hào)在作用域內(nèi)。如C、C++采用大括號(hào){}表達(dá)作用域。
python中用“縮進(jìn)”這一種方式,同時(shí)表達(dá)程序塊和作用域的概念,相同縮進(jìn)范圍內(nèi)的代碼在一個(gè)程序塊和作用域,且同一個(gè)程序塊和作用域不能有不同的縮進(jìn)。
python中用冒號(hào):作為程序塊標(biāo)記關(guān)鍵字,每個(gè)冒號(hào):后面的程序塊必須有相同的縮進(jìn),縮進(jìn)不同就會(huì)報(bào)錯(cuò)。
高級(jí)語言允許定義空作用域,python必須有縮進(jìn),所以可以用pass來定義作用域,但不執(zhí)行任何動(dòng)作。
'''
#條件判斷
print '''
條件判斷,是依據(jù)指定的變量或表達(dá)式的結(jié)果,決定后續(xù)運(yùn)行的程序,最常用的是if-else指令,可以根據(jù)條件是否成立來決定后續(xù)的程序。
if-else判斷可以單個(gè)執(zhí)行,也可以組合多個(gè)指令進(jìn)行復(fù)雜的判斷。
python中的if語句有3中語法形式。
#判斷if格式一:if條件為真,則執(zhí)行某個(gè)代碼塊
if expression1:
block_for_True
#判斷if格式二:if條件為真,則執(zhí)行某塊代碼;如果為假,則執(zhí)行else下的代碼塊
if expression1:
block_for_True
else:
block_for_False
#判斷fi格式三:if條件為真,則執(zhí)行某塊代碼;如果為假,則執(zhí)行elif的條件判斷
if expression1:
block_for_expression1
elif expression2:
block_for_expression2
elif expression3:
block_for_expression3
else:
block_for_False
復(fù)雜判斷,每個(gè)if,elif,else塊中都可以放入多條語句,也可以放入判斷或循環(huán).
'''
#條件判斷 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"
#循環(huán)控制
print '''
循環(huán)控制,是因?yàn)樵趯?shí)際程序開發(fā)中,有許多具有規(guī)律性的重復(fù)操作,因此程序中需要重復(fù)執(zhí)行某些語句。
一組被重復(fù)執(zhí)行的語句,叫循環(huán)體,能否繼續(xù)重復(fù),則取決于循環(huán)的終止條件。
循環(huán)語句有循環(huán)體和循環(huán)終止條件兩部分組成。python中循環(huán)語句有while語句和for語句兩種,while語句先循環(huán),達(dá)到條件時(shí)終止循環(huán),要避免死循環(huán)。
for循環(huán)先有條件判斷,后面在執(zhí)行循環(huán)體,容易避免死循環(huán)。
'''
print '''
while語句的語法,判斷條件為真,則執(zhí)行循環(huán)體,一直到表達(dá)式為假,終止執(zhí)行,語法為:
while expression:
repeat_block
'''
#while循環(huán)程序示例:
myList = [ 'English', 'Chinese', 'Japanese', 'German', 'France' ]
while len(myList) > 0:
print "pop element out:", myList.pop()
print '''
python中的for語句與C#,java中的foreach語句類似,語法結(jié)構(gòu)為:
for element in iterable:
repeat_block
含義為針對(duì)iterable中每個(gè)元素執(zhí)行repeat_block,在循環(huán)體中可以以變量名element來訪問當(dāng)前元素。循環(huán)內(nèi)容可以是序列類型,集合set,或迭代器等。
在開發(fā)比較復(fù)雜的程序時(shí),while或for循環(huán)語句的循環(huán)體,有時(shí)需要提前結(jié)束整個(gè)循環(huán),或者在本輪尚未結(jié)束時(shí)提前開始下一輪循環(huán),這就需要break或continue語句。
break語句會(huì)提前結(jié)束整個(gè)循環(huán);
continue會(huì)在本輪循環(huán)體沒有結(jié)束時(shí),直接開始下一輪循環(huán)。
'''
#for循環(huán)程序示例
myList = [ 'English', 'Chinese', 'Japanese', 'German', 'France' ]
for language in myList:
print "Current element is :", language
#循環(huán)控制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!"
#################
#函數(shù)
#################
print '''
從面向過程的編程方法,到函數(shù)式編程,就是函數(shù)在程序中起到的巨大作用。
在編程中使用函數(shù),可以寫出優(yōu)雅的程序結(jié)構(gòu),模塊化的結(jié)構(gòu),可以使程序簡(jiǎn)單化,提高可讀性和可維護(hù)性。
函數(shù)有三個(gè)要素:函數(shù)名,參數(shù),函數(shù)體;函數(shù)還可以根據(jù)需要,設(shè)置返回值。
python中函數(shù)定義的關(guān)鍵字是def,函數(shù)體這一程序塊,還是用冒號(hào):作為關(guān)鍵字。
python中返回值可以是0個(gè)或多個(gè),無需顯示定義返回值的數(shù)量和類型,只需要用return關(guān)鍵字返回,返回值只有值,調(diào)用時(shí)需要重新定義變量才能使用;
函數(shù)的參數(shù)可以是任意個(gè),可以只定義參數(shù)名,也可以在定義參數(shù)名后,給參數(shù)定義默認(rèn)值,但有默認(rèn)值的參數(shù)一定要在后面;
在調(diào)用函數(shù),傳入?yún)?shù)值時(shí),可以按照參數(shù)定義順序只傳入值,也可以不按順序,傳入命名參數(shù)和值;
'''
#一般函數(shù)與返回值調(diào)用示例
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()
#帶默認(rèn)值的函數(shù)調(diào)用示例
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()
#不同方式參數(shù)賦值的函數(shù)調(diào)用示例
def sum_03(x, y, z):
return x + y + z
def main_03():
#下面兩種調(diào)用方式,意義相同
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 '''
變長(zhǎng)參數(shù)的函數(shù),就是參數(shù)個(gè)數(shù)可變、參數(shù)類型不定的函數(shù)。變長(zhǎng)參數(shù)可以為函數(shù)設(shè)計(jì)提供更大的靈活性。
python中允許定義兩種類型的函數(shù)變長(zhǎng)參數(shù):
元組tuple變長(zhǎng)參數(shù):適用于未知參數(shù)的數(shù)量不固定,但在函數(shù)中使用這些參數(shù)無須知道參數(shù)名字的場(chǎng)合。在函數(shù)定義中用單星號(hào)*表示。
字典dict變長(zhǎng)參數(shù): 適用于未知參數(shù)的數(shù)量不固定,而且在函數(shù)使用參數(shù)時(shí)需要知道參數(shù)名字的場(chǎng)合。在函數(shù)定義中,用雙型號(hào)**表示。
'''
#使用元組tuple作為變長(zhǎng)參數(shù)的示例
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作為變長(zhǎng)參數(shù)的示例
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 '''
匿名函數(shù) Anonymous Function是一類無須定義函數(shù)名的函數(shù)或子程序,一般用于值在代碼中存在一次函數(shù)引用的場(chǎng)合。
因?yàn)橹恍枰靡淮危詿o須聲明。python中用lambda語法定義匿名函數(shù),只需表達(dá)式,而無須聲明。
除了沒有參數(shù)名,匿名函數(shù)定義和一般函數(shù)的定義都相同。
匿名函數(shù)定義格式如下:
lambda [arg1, arg2, ... ,argN]: expression
print (lambda x, y: x - y)(3, 4)
'''
#匿名函數(shù)示例如下
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()
執(zhí)行結(jié)果如下:
# python func.py
流程控制,是程序?qū)崿F(xiàn)邏輯的重要方法,與程序的流程圖對(duì)應(yīng)。
一般的流程分為順序、條件、循環(huán)三種方式,順序執(zhí)行比較簡(jiǎn)單,與自頂向下,面向過程的思路類似,條件判斷和循環(huán)控制就需要專門的語句和格式來實(shí)現(xiàn)。
流程控制語句,用來實(shí)現(xiàn)對(duì)程序流程的選擇、循環(huán)和返回等進(jìn)行控制。
python中的主要流程控制包括 if判斷,for循環(huán),break跳出,continue繼續(xù)等語句。
程序要控制流程,就要對(duì)程序進(jìn)行分塊,對(duì)于代碼來說,就有了“程序塊”和“作用域”的概念,大多數(shù)高級(jí)程序中,程序塊和作用域有不同的概念。
程序塊結(jié)構(gòu),是一種程序結(jié)構(gòu)形式,使程序變得清晰,便于閱讀和修改。比如C、C++允許程序員按照自己的習(xí)慣在不同行之間,采取任意對(duì)齊方式。
作用域,是按照變量或者函數(shù)的可見性定義的程序子集。如果某個(gè)符號(hào)的名稱在給定的點(diǎn)是可見的,則稱該符號(hào)在作用域內(nèi)。如C、C++采用大括號(hào){}表達(dá)作用域。
python中用“縮進(jìn)”這一種方式,同時(shí)表達(dá)程序塊和作用域的概念,相同縮進(jìn)范圍內(nèi)的代碼在一個(gè)程序塊和作用域,且同一個(gè)程序塊和作用域不能有不同的縮進(jìn)。
python中用冒號(hào):作為程序塊標(biāo)記關(guān)鍵字,每個(gè)冒號(hào):后面的程序塊必須有相同的縮進(jìn),縮進(jìn)不同就會(huì)報(bào)錯(cuò)。
高級(jí)語言允許定義空作用域,python必須有縮進(jìn),所以可以用pass來定義作用域,但不執(zhí)行任何動(dòng)作。
條件判斷,是依據(jù)指定的變量或表達(dá)式的結(jié)果,決定后續(xù)運(yùn)行的程序,最常用的是if-else指令,可以根據(jù)條件是否成立來決定后續(xù)的程序。
if-else判斷可以單個(gè)執(zhí)行,也可以組合多個(gè)指令進(jìn)行復(fù)雜的判斷。
python中的if語句有3中語法形式。
#判斷if格式一:if條件為真,則執(zhí)行某個(gè)代碼塊
if expression1:
block_for_True
#判斷if格式二:if條件為真,則執(zhí)行某塊代碼;如果為假,則執(zhí)行else下的代碼塊
if expression1:
block_for_True
else:
block_for_False
#判斷fi格式三:if條件為真,則執(zhí)行某塊代碼;如果為假,則執(zhí)行elif的條件判斷
if expression1:
block_for_expression1
elif expression2:
block_for_expression2
elif expression3:
block_for_expression3
else:
block_for_False
復(fù)雜判斷,每個(gè)if,elif,else塊中都可以放入多條語句,也可以放入判斷或循環(huán).
Alert
The param is not set
循環(huán)控制,是因?yàn)樵趯?shí)際程序開發(fā)中,有許多具有規(guī)律性的重復(fù)操作,因此程序中需要重復(fù)執(zhí)行某些語句。
一組被重復(fù)執(zhí)行的語句,叫循環(huán)體,能否繼續(xù)重復(fù),則取決于循環(huán)的終止條件。
循環(huán)語句有循環(huán)體和循環(huán)終止條件兩部分組成。python中循環(huán)語句有while語句和for語句兩種,while語句先循環(huán),達(dá)到條件時(shí)終止循環(huán),要避免死循環(huán)。
for循環(huán)先有條件判斷,后面在執(zhí)行循環(huán)體,容易避免死循環(huán)。
while語句的語法,判斷條件為真,則執(zhí)行循環(huán)體,一直到表達(dá)式為假,終止執(zhí)行,語法為:
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語句類似,語法結(jié)構(gòu)為:
for element in iterable:
repeat_block
含義為針對(duì)iterable中每個(gè)元素執(zhí)行repeat_block,在循環(huán)體中可以以變量名element來訪問當(dāng)前元素。循環(huán)內(nèi)容可以是序列類型,集合set,或迭代器等。
在開發(fā)比較復(fù)雜的程序時(shí),while或for循環(huán)語句的循環(huán)體,有時(shí)需要提前結(jié)束整個(gè)循環(huán),或者在本輪尚未結(jié)束時(shí)提前開始下一輪循環(huán),這就需要break或continue語句。
break語句會(huì)提前結(jié)束整個(gè)循環(huán);
continue會(huì)在本輪循環(huán)體沒有結(jié)束時(shí),直接開始下一輪循環(huán)。
Current element is : English
Current element is : Chinese
Current element is : Japanese
Current element is : German
Current element is : France
Quit loop
從面向過程的編程方法,到函數(shù)式編程,就是函數(shù)在程序中起到的巨大作用。
在編程中使用函數(shù),可以寫出優(yōu)雅的程序結(jié)構(gòu),模塊化的結(jié)構(gòu),可以使程序簡(jiǎn)單化,提高可讀性和可維護(hù)性。
函數(shù)有三個(gè)要素:函數(shù)名,參數(shù),函數(shù)體;函數(shù)還可以根據(jù)需要,設(shè)置返回值。
python中函數(shù)定義的關(guān)鍵字是def,函數(shù)體這一程序塊,還是用冒號(hào):作為關(guān)鍵字。
python中返回值可以是0個(gè)或多個(gè),無需顯示定義返回值的數(shù)量和類型,只需要用return關(guān)鍵字返回,返回值只有值,調(diào)用時(shí)需要重新定義變量才能使用;
函數(shù)的參數(shù)可以是任意個(gè),可以只定義參數(shù)名,也可以在定義參數(shù)名后,給參數(shù)定義默認(rèn)值,但有默認(rèn)值的參數(shù)一定要在后面;
在調(diào)用函數(shù),傳入?yún)?shù)值時(shí),可以按照參數(shù)定義順序只傳入值,也可以不按順序,傳入命名參數(shù)和值;
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
變長(zhǎng)參數(shù)的函數(shù),就是參數(shù)個(gè)數(shù)可變、參數(shù)類型不定的函數(shù)。變長(zhǎng)參數(shù)可以為函數(shù)設(shè)計(jì)提供更大的靈活性。
python中允許定義兩種類型的函數(shù)變長(zhǎng)參數(shù):
元組tuple變長(zhǎng)參數(shù):適用于未知參數(shù)的數(shù)量不固定,但在函數(shù)中使用這些參數(shù)無須知道參數(shù)名字的場(chǎng)合。在函數(shù)定義中用單星號(hào)*表示。
字典dict變長(zhǎng)參數(shù): 適用于未知參數(shù)的數(shù)量不固定,而且在函數(shù)使用參數(shù)時(shí)需要知道參數(shù)名字的場(chǎng)合。在函數(shù)定義中,用雙型號(hào)**表示。
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
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
The book information are as follow:
Category : Finance
Price : 105
Name : Enterprise Audit
匿名函數(shù) Anonymous Function是一類無須定義函數(shù)名的函數(shù)或子程序,一般用于值在代碼中存在一次函數(shù)引用的場(chǎng)合。
因?yàn)橹恍枰靡淮危詿o須聲明。python中用lambda語法定義匿名函數(shù),只需表達(dá)式,而無須聲明。
除了沒有參數(shù)名,匿名函數(shù)定義和一般函數(shù)的定義都相同。
匿名函數(shù)定義格式如下:
lambda [arg1, arg2, ... ,argN]: expression
print (lambda x, y: x - y)(3, 4)
2017-03-09 20:20:31.264415
I
關(guān)于python中有哪些流程控制函數(shù)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。