Python学习笔记——抽象

简介:

一、def 创建函数

 
  1. #----------------------------------------------------------------------  
  2. def hello(name):  
  3.     """test""" 
  4.     return 'hello, ' + name + '!' 
  5.  
  6. print hello('wisp'
  7.  
  8. 结果为:
  9. hello, wisp!

二、关键字参数

传递参数的时候指定形参,可以不分顺序地向函数传入参数,在创建函数的时候使用关键字也可以成为该参数的默认值。

 
  1. >>> def hello(greeting,name):  
  2.     print '%s,%s!' % (greeting,name)  
  3. >>> hello('hello','wisp')  
  4. hello,wisp!  
  5. >>> hello(greeting='hello',name='wisp')  
  6. hello,wisp! 

使用关键字提供默认值:

 
  1. >>> def hello_new(greeting='hello',name='wisp'):  
  2.     print '%s,%s!' % (greeting,name)  
  3.  
  4. >>> hello_new()  
  5. hello,wisp! 

三、任意长度的参数

在形参前面加"*"号,这样所有的参数会放在同一个元组中,然后使用,如果不提供任何参数,形参就是一个空元组

 
  1. >>> def print_params(*params):  
  2.     print params  
  3.  
  4. >>> print_params('Testing')  
  5. ('Testing',)  
  6. >>> print_params(1,2,3)  
  7. (123

** 号收集关键字

 
  1. >>> def print_params_3(**params):  
  2.     print params  
  3. >>> print_params_3(x=1,y=2,z=3)  
  4. {'y'2'x'1'z'3

四、反转过程

把元组或者字典分解成参数传给函数

* 分解元组

** 分组字典

 
  1. >>> def add(x,y):  
  2.     return x + y  
  3.  
  4. >>> params = (1,2)  
  5. >>> add(*params)  
  6. 3 
  7.  
  8. >>> def hello_new(greeting='hello',name='wisp'):  
  9.     print '%s,%s!' % (greeting,name)  
  10. >>> params = {'name':'wisp','greeting':'hello'}  
  11. >>> hello_new(**params)  
  12. hello,wisp! 

五、作用域

每个函数调用都会创建一个新的作用域,函数内的变量称为局部变量,函数内部可以用globals()[] 调用全局变量,函数内部也可以用global 来定义全局变量

 
  1. >>> x = 1 
  2. >>> def change_global():  
  3.     global x  
  4.     x = x + 1 
  5.  
  6. >>> change_global()  
  7. >>> x  
  8. 2 

6、递归

递归,就是引用自身。

当函数直接返回值时有基本实例

递归实例,包括一个或者多个问题最小部分的递归调用

 
  1. def factorial(n):  
  2.     """by wisp""" 
  3.     if n == 1:  
  4.         return 1 
  5.     else:  
  6.         return n * factorial(n-1)  
  7.  
  8. print factorial(10)  
  9.  
  10. 3628800 

二元查找算法:

 
  1. def search(sequence, number, lower, upper):  
  2.     """by wisp""" 
  3.     if lower == upper:  
  4.         assert number == sequence[upper]  
  5.         return upper  
  6.     else:  
  7.         middle = (lower + upper) // 2 
  8.         if number > sequence[middle]:  
  9.             return search(sequence, number, middle+1, upper)  
  10.         else:  
  11.             return search(sequence, number, lower, middle)  
  12.  
  13.  
  14. print search(range(1,100),37
本文转自运维笔记博客51CTO博客,原文链接 http://blog.51cto.com/lihuipeng/860224如需转载请自行联系原作者

lihuipeng
相关文章
|
2月前
|
存储 C语言 Python
【Python】学习笔记day3
【Python】学习笔记day3
27 1
|
5月前
|
SQL 分布式计算 大数据
Python+大数据学习笔记(一)
Python+大数据学习笔记(一)
45 0
|
6月前
|
Python
80 python - 打飞机案例(代码优化-抽象出基类)
80 python - 打飞机案例(代码优化-抽象出基类)
25 0
|
1月前
|
前端开发 安全 JavaScript
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
|
26天前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
26天前
|
存储 数据库 数据安全/隐私保护
基于Django的Python应用——学习笔记
基于Django的Python应用——学习笔记
|
2月前
|
存储 C语言 芯片
【Python】学习笔记day1
【Python】学习笔记day1
34 1
|
2月前
|
算法 搜索推荐 测试技术
python排序算法及优化学习笔记1
python实现的简单的排序算法,以及算法优化,学习笔记1
35 1
|
7月前
|
jenkins 持续交付 开发工具
Python学习笔记_Devops_Day05
Python学习笔记_Devops_Day05
|
7月前
|
持续交付 开发工具 数据安全/隐私保护
Python学习笔记_Devops_Day04
Python学习笔记_Devops_Day04