函數最初被設計出來,是用來減輕重複 coding 一段相同的代碼,這之間只有代碼 (方法,Method) 的重用,但還沒有物件導向OO整個Object 的屬性與方法被封裝重用的概念。

函數的定義很簡單,使用 def 這保留字,而其宣告方式如下:

def 函數名(參數名) :

例如:

>>> def print_count(): # 函數宣告
...    print('Good')
...    print('Morning')
...    print('Mr.')
...
>>> print_count()  # 函數調用
Good
Morning
Mr.

函數允許巢狀 Nested 結構,即一個函數的主體 Body 可以呼叫 call 另一個函數, 例如:

>>> def repeat_count(k):
...    for i in range(1,k):
...      print_count()
...
>>> repeat_count(2)
Good
Morning
Mr.

對函數 repeat_count(k) 而言,k 是形參 (parameter),而調用此函數 repeat_count(2) 的 2 是實參(argument)。

在函數的Body內定義的變數 Variable 都是局部的 Local,即它們只有存在函數內,例如:

>>> m = 6
>>> def repeat_count(k):
...    for i in range(1,k):
...       print_count()
...    m = 3
...
>>> repeat_count(2)
Good
Morning
Mr.
>>> print(m)
6

這範例我們宣告一個全局 Global 變數 m,並且指定 Assign 其值為 6,但在函數repeat_count(k) 同樣宣告一個同名的變數 m,指定其值為 3。,當呼叫調用此函數後,m 的值顯示依然為 6。

函數在被呼叫計算後,可以定義返回值 Return Value (Fruitful Function)。例如:

>>> def repeat_count(k):
...    for i in range(1,k):
...       print_count()
...    return ('OK')
...
>>> status = repeat_count(2)
Good
Morning
Mr.
>>> print(status)
OK

函數 repeat_count(2) 被呼叫後,將其返回值 'OK' 指定給變數 status。

還有一種函數,自己呼叫自己,此類函數被稱為遞歸(Recursive)函數。例如:

>>> def factorial(n):
...    if n == 1:
...       return 1
...    else:
...       return n * factorial(n - 1)
...
>>> factorial(3)
6
>>> factorial(4)
24
>>> factorial(5)
120

有關遞歸函數的概念較複雜,需另闢章節說明。

/end

最新文章

  1. [RxJava^Android]项目经验分享 --- 异常方法处理
  2. Unix权限管理
  3. 29 GroupSock(NetAddressList)——live555源码阅读(四)网络
  4. 细聊分布式ID生成方法
  5. HNOI2006-公路修建问题(二分答案+并查集)
  6. hdu3342 拓扑序
  7. jdk线程的死锁
  8. OR1200数据Cache介绍
  9. NOIP[2015] Day2题解
  10. LeetCode 606. Construct String from Binary Tree (建立一个二叉树的string)
  11. 四则运算----C++版
  12. Linux 命令详解(七)Systemd 入门教程:命令篇
  13. Redis数据结构之sorted-set
  14. H-Index II @python
  15. Netty源码分析第4章(pipeline)---->第1节: pipeline的创建
  16. Spring Boot后台启动不打印nohup.out
  17. 网站流量分析指标-PV/UV/PR/IP
  18. Java 面试前的基础准备 - 01
  19. Bootstrap 与 Jquery validate 结合使用——多个规则实现
  20. 深入理解计算机(CSAPP)资源汇总

热门文章

  1. CODING 代码多仓库实践
  2. Gemini.Workflow 双子工作流高级教程:对外API控制引擎:总述
  3. linux服务器JDK1.8环境变量配置
  4. Prometheus学习系列(四)之Prometheus 配置说明
  5. C#扩展方法学习笔记
  6. 《C#并发编程经典实例》学习笔记—3.1 数据的并行处理
  7. SQLserver、MySQL、ORCAL查询数据库、表、表中字段以及字段类型
  8. iOS开发WKWebView 返回H5上级页面
  9. 页面中加入地图map
  10. PWA 学习笔记(三)