---恢复内容开始---

(一)定义一个函数

def 函数名(参数):

  函数体

  return 返回值

例:

def mySum(x , y):
  return int(x)+int(y)
print(mySum(1,2))

如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。也可以写成return

(二)python函数可以返回“多个值”(其实是个集合)

比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的坐标:# math包提供了sin()和 cos()函数,我们先用import引用它

import math
def move(x, y, step, angle):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny

使用这个函数:

x, y = move(100, 100, 60, math.pi / 6)
print (x , y) ======> 151.961524227 70.0
这只是一种假象,Python函数返回的仍然是单一值:
r = move(100, 100, 60, math.pi / 6)
print (r)=======>(151.96152422706632, 70.0)---只是一个tuple

(三)递归函数:

计算阶乘:

def fact(n):
if n==1:
return 1
return n * fact(n - 1)

使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。可以试试计算 fact(10000)。

(四)定义可变参数:

def func(*params):

  ...

函数定义成这样之后我们就可以传入任意数量的参数如:func(1,2)  func(1,2,3)

例:

def mySum(*params):
sum = 0
for value in params:
sum += int(value)
return sum
print(mySum(1,2,3))

打印出6


---恢复内容结束---

最新文章

  1. 响应性web设计实战总结(二)
  2. Centos7下搭建LAMP平台环境
  3. How to decide on the correct number of clusters?
  4. 关于JavaScript是否会阻塞图片加载
  5. Codeforces Round #104 (Div. 1)
  6. oracle 分区表和分区索引
  7. Oralce9 的新方法: Merge into Using
  8. 2014年2月5日 Oracle ORACLE的工作机制[转]
  9. MyEclipse取消Show in Breadcrumb的方法
  10. Eclipse中Tomcat v8.0 Server at localhost右键选择Properties详情页中Server Locations变灰无法编辑
  11. 路径打印(set以及字符串的相关操作)
  12. vim的翻页、跳转到某一行功能
  13. SpringMVC学习笔记一:基本概念,执行流程与开发步骤
  14. centos7 源码安装python3
  15. Objective-C中new与alloc/init的区别
  16. 记一次redis key丢失的问题排查
  17. set /p= 详解
  18. IOS-加载动态图(gif)
  19. Redis 学习之集群
  20. git与svn与github与码云的区别

热门文章

  1. Oldboy-Homework-Week2.2
  2. js学习笔记
  3. 正则表达式在python中的应用
  4. jsp内置对象
  5. H5文件操作api--持续完善中
  6. 第三方框架之ThinkAndroid 学习总结(二)
  7. Html5选择本地视频音频文件播放
  8. 【codevs】刷题记录→_→(推荐看!)
  9. Git分布式版本控制系统学习笔记
  10. 关于IoCallDriver使用的疑惑