目录
1.定义:函数是一个过程、功能、动作,实现某个功能或者某些功能指令的集合
2.语法结构:
3.函数的调用
4.函数的递归
5.全局变量和局部变量
6.值传递和引用传递
1.定义:函数是一个过程、功能、动作,实现某个功能或者某些功能指令的集合
2.语法结构:
def? 函数名称( [参数列表] ) :
? ? ?#缩进 函数体(写你想要的功能)
? ? ?# [ return 返回值 ]
3.函数的调用
函数名称( [参数] )
4.函数的递归
函数的递归:在函数的内部,去调用自己 条件: 1.函数自己要调用自己 2.递归一定要有结束条件
尾递归----调用自己的时候没有任何表达式
#求n的!
def fact(n):
if n == 1:
return 1
return n*fact(n-1)
print(fact(5))
#打印结果:120
#
##尾递归
def fact(n):
fact_iter(n,1)
def fact_iter(num,product):
if num == 1:
return product
return fact_iter(num-1,num*product)
print(fact_iter(5,1))
#打印结果:120
5.全局变量和局部变量
| 定义位置 | 调用位置 | 操作位置 |
---|
全局变量 | 定义在.py文件里 | 函数内、外都可 | 函数内不可操作全局变量。如要操作,需调用global关键字(不建议函数内操作) |
---|
局部变量 | 定义在函数内 | 函数内 | 函数内 |
---|
#全局变量 sex
sex = "female"
def show(msg):
#局部变量 gender
gender = "男"
print(sex)
print(gender)
#打印结果
female #全局变量可以在函数外调用
NameError: name 'gender' is not defined #局部变量不可在函数外调用
sex = "female"
def show(msg):
gender = "男"
print(sex)
print(gender)
show("msg")
#打印结果:
female #全局变量可以在函数内调用
男 #局部变量只能在函数内调用
age = 19
def person(x):
gender = "男"
age += 1 #函数内不可操作全局变量
print(age)
person("ss")
#打印结果:抛出异常
age = 19
def person(x):
gender = "男"
global age #需要在函数内操作全局函数,要调用global关键字
age = age + 1
print(age)
person("ss")
#打印结果:20
age = 19
def person(x):
gender = "男"
print(age)
age = age +1 #在函数外可以操作全局变量
person("ss")
#打印结果:20
6.值传递和引用传递
传入的参数对象是
可变对象:列表,字典,就是引用传递
不可变的对象:数字,元组,字符串,就是值传递
|