python流程控制、函数总结

    shell脚本是由系统命令、变量、流程控制三者组合而成的;
    类比python程序,与shell中能够实现很多功能的系统命令类似,python有很多可以实现不同功能的模块;
    变量方面,shell脚本有系统变量,有普通变量,有特殊位置变量,有特殊变量调用方式,有单个变量,也有数组,而python与一般高级语言一样,变量有名称、数据类型、调用方式(操作符和内置函数);
    在流程控制方面,shell与各种高级语言都是类似的,基本的流程控制有顺序、条件、循环三种方式,主要也是if,for,break,continue这几种方式实现。
    另外两者处理基本内容,在编程思想方面更要深刻立即,有了程序思维,才可以编写好程序。

    我编写了一个总结python流程控制和函数的脚本,脚本内容如下:


点击(此处)折叠或打开

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


  3. #################
  4. #流程控制
  5. #################

  6. print '''
  7. 流程控制,是程序实现逻辑的重要方法,与程序的流程图对应。
  8. 一般的流程分为顺序、条件、循环三种方式,顺序执行比较简单,与自顶向下,面向过程的思路类似,条件判断和循环控制就需要专门的语句和格式来实现。
  9. 流程控制语句,用来实现对程序流程的选择、循环和返回等进行控制。
  10. python中的主要流程控制包括 if判断,for循环,break跳出,continue继续等语句。
  11. '''
  12. print
  13. print '''
  14. 程序要控制流程,就要对程序进行分块,对于代码来说,就有了“程序块”和“作用域”的概念,大多数高级程序中,程序块和作用域有不同的概念。
  15.     程序块结构,是一种程序结构形式,使程序变得清晰,便于阅读和修改。比如C、C++允许程序员按照自己的习惯在不同行之间,采取任意对齐方式。
  16.     作用域,是按照变量或者函数的可见性定义的程序子集。如果某个符号的名称在给定的点是可见的,则称该符号在作用域内。如C、C++采用大括号{}表达作用域。
  17. python中用“缩进”这一种方式,同时表达程序块和作用域的概念,相同缩进范围内的代码在一个程序块和作用域,且同一个程序块和作用域不能有不同的缩进。
  18. python中用冒号:作为程序块标记关键字,每个冒号:后面的程序块必须有相同的缩进,缩进不同就会报错。
  19. 高级语言允许定义空作用域,python必须有缩进,所以可以用pass来定义作用域,但不执行任何动作。
  20. '''
  21. print

  22. #条件判断
  23. print '''
  24. 条件判断,是依据指定的变量或表达式的结果,决定后续运行的程序,最常用的是if-else指令,可以根据条件是否成立来决定后续的程序。
  25. if-else判断可以单个执行,也可以组合多个指令进行复杂的判断。
  26. python中的if语句有3中语法形式。
  27. #判断if格式一:if条件为真,则执行某个代码块
  28. if expression1:
  29.     block_for_True

  30. #判断if格式二:if条件为真,则执行某块代码;如果为假,则执行else下的代码块
  31. if expression1:
  32.     block_for_True
  33. else:
  34.     block_for_False

  35. #判断fi格式三:if条件为真,则执行某块代码;如果为假,则执行elif的条件判断
  36. if expression1:
  37.      block_for_expression1
  38. elif expression2:
  39.     block_for_expression2
  40. elif expression3:
  41.     block_for_expression3
  42. else:
  43.     block_for_False

  44. 复杂判断,每个if,elif,else块中都可以放入多条语句,也可以放入判断或循环.
  45. '''
  46. #条件判断 if-elfi-else 程序示例:
  47. import sys

  48. param = None

  49. if len(sys.argv) > 1:
  50.     param = int(sys.argv[1])

  51. if param is None:
  52.     print "Alert"
  53.     print "The param is not set"
  54. elif param < -10:
  55.     print "The param is samll"
  56. elif param > 10:
  57.     print "The param is big"
  58. else:
  59.     print "The param is middle"

  60. #循环控制
  61. print '''
  62. 循环控制,是因为在实际程序开发中,有许多具有规律性的重复操作,因此程序中需要重复执行某些语句。
  63. 一组被重复执行的语句,叫循环体,能否继续重复,则取决于循环的终止条件。
  64. 循环语句有循环体和循环终止条件两部分组成。python中循环语句有while语句和for语句两种,while语句先循环,达到条件时终止循环,要避免死循环。
  65. for循环先有条件判断,后面在执行循环体,容易避免死循环。
  66. '''
  67. print

  68. print '''
  69. while语句的语法,判断条件为真,则执行循环体,一直到表达式为假,终止执行,语法为:
  70. while expression:
  71.         repeat_block
  72. '''
  73. #while循环程序示例:
  74. myList = [ 'English', 'Chinese', 'Japanese', 'German', 'France' ]
  75. while len(myList) > 0:
  76.     print "pop element out:", myList.pop()

  77. print '''
  78. python中的for语句与C#,java中的foreach语句类似,语法结构为:
  79. for element in iterable:
  80.         repeat_block

  81. 含义为针对iterable中每个元素执行repeat_block,在循环体中可以以变量名element来访问当前元素。循环内容可以是序列类型,集合set,或迭代器等。
  82.     在开发比较复杂的程序时,while或for循环语句的循环体,有时需要提前结束整个循环,或者在本轮尚未结束时提前开始下一轮循环,这就需要break或continue语句。
  83.     break语句会提前结束整个循环;
  84.     continue会在本轮循环体没有结束时,直接开始下一轮循环。
  85. '''
  86. #for循环程序示例
  87. myList = [ 'English', 'Chinese', 'Japanese', 'German', 'France' ]
  88. for language in myList:
  89.     print "Current element is :", language

  90. #循环控制break和continue程序示例:
  91. count=0
  92. while True:
  93.     #input = raw_input("Enter quit: ")
  94.     input = "quit"
  95.     # check for valid passwd
  96.     if input == "quit":
  97.         break
  98.     count = count + 1
  99.     if count%3 > 0:
  100.         continue
  101.     print "Please input quit!"

  102. print "Quit loop successfully!"


  103. #################
  104. #函数
  105. #################
  106. print '''
  107. 从面向过程的编程方法,到函数式编程,就是函数在程序中起到的巨大作用。
  108. 在编程中使用函数,可以写出优雅的程序结构,模块化的结构,可以使程序简单化,提高可读性和可维护性。
  109. 函数有三个要素:函数名,参数,函数体;函数还可以根据需要,设置返回值。
  110. python中函数定义的关键字是def,函数体这一程序块,还是用冒号:作为关键字。
  111.     python中返回值可以是0个或多个,无需显示定义返回值的数量和类型,只需要用return关键字返回,返回值只有值,调用时需要重新定义变量才能使用;
  112.     函数的参数可以是任意个,可以只定义参数名,也可以在定义参数名后,给参数定义默认值,但有默认值的参数一定要在后面;
  113.     在调用函数,传入参数值时,可以按照参数定义顺序只传入值,也可以不按顺序,传入命名参数和值;
  114. '''
  115. #一般函数与返回值调用示例
  116. def sum_01(x, y):
  117.     return x+y

  118. def total(x, y, z):
  119.     sum_of_two = sum_01(x, y)
  120.     sum_of_three = sum_01(sum_of_two, z)
  121.     return sum_of_two, sum_of_three

  122. def main_01():
  123.     print "return of sum:", sum_01(4, 6)
  124.     x, y = total(2, 6, 8)
  125.     print "return of total:", x, ", ", y

  126. main_01()

  127. #带默认值的函数调用示例
  128. def sum_02(x, y=10):
  129.     return x+y

  130. def main_02():
  131.     print "return of sum(2, 3):", sum_02(2, 3)
  132.     print "return of sum(-4)", sum_02(-4)
  133.     
  134. main_02()

  135. #不同方式参数赋值的函数调用示例
  136. def sum_03(x, y, z):
  137.     return x + y + z

  138. def main_03():
  139.     #下面两种调用方式,意义相同
  140.     ret1 = sum_03(1, 2, 3)
  141.     ret2 = sum_03(y=2, z=3, x=1)
  142.     
  143.     print "return of sum_03(1, 2, 3):", ret1
  144.     print "return of sum_03(y=2, z=3, x=1):", ret2

  145. main_03()

  146. print
  147. print '''
  148. 变长参数的函数,就是参数个数可变、参数类型不定的函数。变长参数可以为函数设计提供更大的灵活性。
  149. python中允许定义两种类型的函数变长参数:
  150.     元组tuple变长参数:适用于未知参数的数量不固定,但在函数中使用这些参数无须知道参数名字的场合。在函数定义中用单星号*表示。
  151.     字典dict变长参数: 适用于未知参数的数量不固定,而且在函数使用参数时需要知道参数名字的场合。在函数定义中,用双型号**表示。
  152. '''
  153. #使用元组tuple作为变长参数的示例
  154. def show_message(message, *tupleName):
  155.     for name in tupleName:
  156.         print message, ", ", name

  157. def main_tuple():
  158.     show_message("Good Morring", "Jack", "Evans", "Rose Hasa", 893, "Zion" )

  159. main_tuple()

  160. #使用字典dict作为变长参数的示例
  161. def check_book(**dictParam ):
  162.     if dictParam.has_key('Price'):
  163.         price = int(dictParam['Price'])
  164.         if price > 100:
  165.             print "*******I want buy this book!*******"
  166.     print "The book information are as follow:"
  167.     for key in dictParam.keys():
  168.         print key, ": ", dictParam[key]
  169.     print ""
  170.     
  171. def main_dict():
  172.     check_book( author = 'James', Title = 'Economics Introduction' )
  173.     check_book( author = 'Linda', Title = 'Deepin in python', Date = '2015-5-1', Price = 302 )
  174.     check_book( Date = '2002-3-19', Title = 'Cooking book', Price = 20 )
  175.     check_book( author = 'Jinker Landy', Title = 'How to keep healthy' )
  176.     check_book( Category = 'Finance', Name = 'Enterprise Audit', Price = 105 )

  177. main_dict()

  178. print
  179. print '''
  180. 匿名函数 Anonymous Function是一类无须定义函数名的函数或子程序,一般用于值在代码中存在一次函数引用的场合。
  181. 因为只需要引用一次,所以无须声明。python中用lambda语法定义匿名函数,只需表达式,而无须声明。
  182. 除了没有参数名,匿名函数定义和一般函数的定义都相同。
  183. 匿名函数定义格式如下:
  184. lambda [arg1, arg2, ... ,argN]: expression
  185. print (lambda x, y: x - y)(3, 4)
  186. '''
  187. #匿名函数示例如下
  188. import datetime

  189. def nameFunc(a):
  190.     return " I'm named function with param %s " % a
  191.     
  192. def call_func(func, param):
  193.     print datetime.datetime.now()
  194.     print func(param)
  195.     print ""

  196. def main_lambda():
  197.     call_func(nameFunc, 'hello')
  198.     call_func(lambda x: x*2, 9)
  199.     call_func(lambda y: y*y, -4)
  200.         
  201. main_lambda()


    执行结果如下:


点击(此处)折叠或打开

  1. # python func.py

  2. 流程控制,是程序实现逻辑的重要方法,与程序的流程图对应。
  3. 一般的流程分为顺序、条件、循环三种方式,顺序执行比较简单,与自顶向下,面向过程的思路类似,条件判断和循环控制就需要专门的语句和格式来实现。
  4. 流程控制语句,用来实现对程序流程的选择、循环和返回等进行控制。
  5. python中的主要流程控制包括 if判断,for循环,break跳出,continue继续等语句。



  6. 程序要控制流程,就要对程序进行分块,对于代码来说,就有了“程序块”和“作用域”的概念,大多数高级程序中,程序块和作用域有不同的概念。
  7.     程序块结构,是一种程序结构形式,使程序变得清晰,便于阅读和修改。比如C、C++允许程序员按照自己的习惯在不同行之间,采取任意对齐方式。
  8.     作用域,是按照变量或者函数的可见性定义的程序子集。如果某个符号的名称在给定的点是可见的,则称该符号在作用域内。如C、C++采用大括号{}表达作用域。
  9. python中用“缩进”这一种方式,同时表达程序块和作用域的概念,相同缩进范围内的代码在一个程序块和作用域,且同一个程序块和作用域不能有不同的缩进。
  10. python中用冒号:作为程序块标记关键字,每个冒号:后面的程序块必须有相同的缩进,缩进不同就会报错。
  11. 高级语言允许定义空作用域,python必须有缩进,所以可以用pass来定义作用域,但不执行任何动作。



  12. 条件判断,是依据指定的变量或表达式的结果,决定后续运行的程序,最常用的是if-else指令,可以根据条件是否成立来决定后续的程序。
  13. if-else判断可以单个执行,也可以组合多个指令进行复杂的判断。
  14. python中的if语句有3中语法形式。
  15. #判断if格式一:if条件为真,则执行某个代码块
  16. if expression1:
  17.     block_for_True

  18. #判断if格式二:if条件为真,则执行某块代码;如果为假,则执行else下的代码块
  19. if expression1:
  20.     block_for_True
  21. else:
  22.     block_for_False

  23. #判断fi格式三:if条件为真,则执行某块代码;如果为假,则执行elif的条件判断
  24. if expression1:
  25.      block_for_expression1
  26. elif expression2:
  27.     block_for_expression2
  28. elif expression3:
  29.     block_for_expression3
  30. else:
  31.     block_for_False

  32. 复杂判断,每个if,elif,else块中都可以放入多条语句,也可以放入判断或循环.

  33. Alert
  34. The param is not set

  35. 循环控制,是因为在实际程序开发中,有许多具有规律性的重复操作,因此程序中需要重复执行某些语句。
  36. 一组被重复执行的语句,叫循环体,能否继续重复,则取决于循环的终止条件。
  37. 循环语句有循环体和循环终止条件两部分组成。python中循环语句有while语句和for语句两种,while语句先循环,达到条件时终止循环,要避免死循环。
  38. for循环先有条件判断,后面在执行循环体,容易避免死循环。



  39. while语句的语法,判断条件为真,则执行循环体,一直到表达式为假,终止执行,语法为:
  40. while expression:
  41.         repeat_block

  42. pop element out: France
  43. pop element out: German
  44. pop element out: Japanese
  45. pop element out: Chinese
  46. pop element out: English

  47. python中的for语句与C#,java中的foreach语句类似,语法结构为:
  48. for element in iterable:
  49.         repeat_block

  50. 含义为针对iterable中每个元素执行repeat_block,在循环体中可以以变量名element来访问当前元素。循环内容可以是序列类型,集合set,或迭代器等。
  51.     在开发比较复杂的程序时,while或for循环语句的循环体,有时需要提前结束整个循环,或者在本轮尚未结束时提前开始下一轮循环,这就需要break或continue语句。
  52.     break语句会提前结束整个循环;
  53.     continue会在本轮循环体没有结束时,直接开始下一轮循环。

  54. Current element is : English
  55. Current element is : Chinese
  56. Current element is : Japanese
  57. Current element is : German
  58. Current element is : France
  59. Quit loop

  60. 从面向过程的编程方法,到函数式编程,就是函数在程序中起到的巨大作用。
  61. 在编程中使用函数,可以写出优雅的程序结构,模块化的结构,可以使程序简单化,提高可读性和可维护性。
  62. 函数有三个要素:函数名,参数,函数体;函数还可以根据需要,设置返回值。
  63. python中函数定义的关键字是def,函数体这一程序块,还是用冒号:作为关键字。
  64.     python中返回值可以是0个或多个,无需显示定义返回值的数量和类型,只需要用return关键字返回,返回值只有值,调用时需要重新定义变量才能使用;
  65.     函数的参数可以是任意个,可以只定义参数名,也可以在定义参数名后,给参数定义默认值,但有默认值的参数一定要在后面;
  66.     在调用函数,传入参数值时,可以按照参数定义顺序只传入值,也可以不按顺序,传入命名参数和值;

  67. return of sum: 10
  68. return of total: 8 , 16
  69. return of sum(2, 3): 5
  70. return of sum(-4) 6
  71. return of sum_03(1, 2, 3): 6
  72. return of sum_03(y=2, z=3, x=1): 6


  73. 变长参数的函数,就是参数个数可变、参数类型不定的函数。变长参数可以为函数设计提供更大的灵活性。
  74. python中允许定义两种类型的函数变长参数:
  75.     元组tuple变长参数:适用于未知参数的数量不固定,但在函数中使用这些参数无须知道参数名字的场合。在函数定义中用单星号*表示。
  76.     字典dict变长参数: 适用于未知参数的数量不固定,而且在函数使用参数时需要知道参数名字的场合。在函数定义中,用双型号**表示。

  77. Good Morring , Jack
  78. Good Morring , Evans
  79. Good Morring , Rose Hasa
  80. Good Morring , 893
  81. Good Morring , Zion
  82. The book information are as follow:
  83. Title : Economics Introduction
  84. author : James

  85. *******I want buy this
  86. The book information are as follow:
  87. Date : 2015-5-1
  88. Price : 302
  89. Title : Deepin in python
  90. author : Linda

  91. The book information are as follow:
  92. Date : 2002-3-19
  93. Price : 20
  94. Title : Cooking book

  95. The book information are as follow:
  96. Title : How to keep healthy
  97. author : Jinker Landy

  98. *******I want buy this
  99. The book information are as follow:
  100. Category : Finance
  101. Price : 105
  102. Name : Enterprise Audit



  103. 匿名函数 Anonymous Function是一类无须定义函数名的函数或子程序,一般用于值在代码中存在一次函数引用的场合。
  104. 因为只需要引用一次,所以无须声明。python中用lambda语法定义匿名函数,只需表达式,而无须声明。
  105. 除了没有参数名,匿名函数定义和一般函数的定义都相同。
  106. 匿名函数定义格式如下:
  107. lambda [arg1, arg2, ... ,argN]: expression
  108. print (lambda x, y: x - y)(3, 4)

  109. 2017-03-09 20:20:31.264415
  110.  I

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24638123/viewspace-2135029/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24638123/viewspace-2135029/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值