python_func/ target=_blank class=infotextkey>python函数
1. 概念
-函数就是完成特定功能的一个语句组,
这组语句可以作为一个单位使用, 并给它取一个名字.
-可以通过函数名在程序的不同地方多次执行,
却不需要在所有地方都重复编写这些语句.
2. 分类
2.1 自定义函数
- 用户自己编写的
2.2 预定义的python函数
- 系统自带的函数
- 第三方编写的函数
3. 好处
- 模块化编程
将一个复杂的问题分解成一系列的简单的小问题,然后...
函数是模块化的最小单位
- 代码复用, DRY(Don't Repeat Yourself)原则
4. 定义
4.1 语法
4.2 举例
4.2.1 interactive model
4.2.2 .py
--------------function_1.py----------------
# define a simple function
def say() :
print "hello, I'm a simple function!!!"
# separate
print "--" * 10
# call function
say()
5. 函数的参数
- 形参
- 实参
- 默认参数
5.1 形参 和 实参
- 形参
定义函数时, 小括号里定义的参数 即为 形式参数
- 实参
调用函数时, 小括号里传递的参数 即为 实际参数
5.2 举例
# define
# times- 形参
def say(times) :
while times > 0 :
print times, "hello!"
times -= 1
# call
# 3- 实参
say(3)
5.3 默认值
5.3.1 语法
- 注意
默认参数只能是 从右到左 连续设置,
即 任意 一个默认参数 的右边 都是 默认参数
- 调用
5.3.2 举例
6. 变量的作用域
6.1 什么叫 局部变量 和 全局变量
- 在函数中定义的变量一般只能在该函数内部使用,
这些只能在程序的特定部分使用的变量 称之为 局部变量.
- 在一个文件顶部定义的变量可以供该文件中的任何函数调用,
这些可以为整个程序所使用的变量称之为全局变量.
6.2 当 局部变量 与 全局变量 同名时
在局部中, 局部变量会屏蔽掉全局变量.
globalVar = "I'm a global variable!!"
def fun_1() :
globalVar = "globalVar changed!!"
print globalVar
#######################################
fun_1()
print globalVar
------- output----
globalVar changed!!
I'm a global variable!!
6.3 global 语句
6.3.1 在局部区域 声明全局变量, 并给其赋值
def fun_2() :
global var
var = "I'm a global varible declared in function!"
print "run over!!"
fun_2()
print var
------- output----
run over!!
I'm a global varible declared in function!
6.3.2 在局部区域 给外部全局变量 重新赋值
var = "I'm a global variable declared outside!!"
def fun_3() :
global var
var = "change global variable in local are!"
print "before call funcation, var =", var
fun_3()
print "after call funcation, var =", var
------- output----
before call funcation, var = I'm a global variable declared outside!!
after call funcation, var = change global variable in local are!
7. 函数的返回值
- 函数被调用后 会 返回一个指定的值
- 默认返回 None
- return 返回值
- 返回值可以是任意类型
- return 执行后, 函数终止
- 区分 返回值 和 打印
举例:
def compare(num1, num2) :
print "#" * 5
if num1 < num2 :
return -1
print "#" * 10
if num1 > num2 :
return 1
print "#" * 20
if num1 == num2 :
return 0
print compare(1, 2)
print compare(2, 1)
print compare(1, 1)