目录
1.1 函数的创建与调用
1.2 函数的参数传递
1.3 函数的返回值(视情况而定)
1.4 函数的参数定义
1.5 变量的作用域
1.6 递归函数
1.1 函数的创建与调用
# -*- coding:utf-8 -*-
# @Author :Persistent.J
def 函数名([]):
函数体
[return XXX]
def calc(a, b): # 形参
c = a+b
return c
m = calc(1, 3) # 实参
print(m)
1.2 函数的参数传递
# -*- coding:utf-8 -*-
# @Author :Persistent.J
def calc(a, b):
c = a-b
return c
m = calc(b=1, a=3) # 使用了关键字参数
print(m) # 2
def calc(a, b):
c = a-b
return c
m = calc(1, 3)
print(m) # -2
1.3 函数的返回值(视情况而定)
# -*- coding:utf-8 -*-
# @Author :Persistent.J
def fun():
print('hello')
fun()
def fun():
return 'hello'
a = fun()
print(a)
def fun():
return 'hello', 'world'
b = fun()
print(b)
'''
hello
hello
('hello', 'world')
'''
1.4 函数的参数定义
- 函数定义默认值参数
- 函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参
# -*- coding:utf-8 -*-
# @Author :Persistent.J
def fun(a, b=20):
print(a, b)
fun(20)
fun(2, 8)
print('hello', end='\t')
print('world')
print('hello')
print('world')
'''
20 20
2 8
hello world
hello
world
'''
- ?个数可变的位置参数(只能是一个)
- 定义函数时,可能无法事先确定传递的位置实参的个数时,使用可变的位置参数
- 使用*定义个数可变的位置形参
- 结果为一个元组
- 个数可变的关键字形参(只能有一个)
- 定义函数时,无法事先确定传递的关键字实参的个数时,使用可变的关键字形参
- 使用**定义个数可变的关键字形参
- 结果为一个字典?
- 个数可变的位置形参要放在个数可变的关键字形参之前
1.5 变量的作用域
1.6 递归函数
- 在一个函数的函数体内调用该函数本身
- 递归函数由递归调用与递归终止条件组成
- 递归调用过程中
- 每递归调用一次函数,都会在栈内存分配一个栈帧
- 每执行完一次函数,都会释放相应的空间
- 缺点-占用内存多,效率低下
- 优点-思路与代码简单
|