函数
1.函数的简介
1.1 函数的特点
1, 函数可以用来保存一些可执行的代码,在你需要的时候可以对这些代码进行多次的调用
2, 函数中保存的额代码不会立即执行,需要调用函数的时候代码才会执行
1.2语法:
def 函数名():
代码块
函数名()#调用
2.函数的参数
# a,b 是形参 1,2是实参
def x(a,b):
print(a,b)
x(1,2)
3.实参的类型
实参可以传递任意类型的对象
def fn(a):
print('a = ', a)
fn(b)
# b = 456
# b = [1, 2, 3]
# b = True
# b = 'python'
# b = {1, 2, 3}
# b = (1,2,3)
# b = {name:you,age:10}
4.不定长参数
def fn(a, b):
print(a)
print(b)
fn(1, 2) #位置传参
fn(a=1, b=2) # 参数传参 参数跟上面的形参名要相同
# 带一个*的传参,只能放在后面,且只能有一个带(一个)*的
# *接收的是位置传参
def fn(a, *b):
print(a)
print(b)
fn(1,2,3)
#只能有一个带(一个)**的
# ** 接收的是关键字传参,返回的是字典
def fn(a, **b):
print(a)
print(b)
fn(1,c=3)
# * 和 ** 混合使用时 *放在前面
#传字典时 可以用 **d *d.items()
def fn(a, b, c):
print(a)
print(b)
print(c)
# print(k)
d = {'a': 1, 'b': 2, 'c': 3}
fn(**d) # **d时 需要形参跟键名相同
fn(*d.items())
5.函数的返回值
当你不写return语句和只写一个return的时候,返回值是None
在return的后面,程序的代码都不会执行,return一旦执行函数自动结束
返回函数名 返回的是一个函数的对象 可以用函数名()调用
6.函数的作用域
在Python中一共有两种作用域
全局作用域
• 全局作用域在程序执行时创建,在程序执行结束时销毁
• 所有函数以外的区域都是全局作用域
• 在全局作用域中定义的变量,都是全局变量,全局变量可以在程序的任意位置进行访问
函数作用域
• 函数作用域在函数调用时创建,在调用结束时销毁
• 函数每调用一次就会产生一个新的函数作用域
• 在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问
b = 222
def fn():
global a # global 声明变量是全局变量
a = 456
def fn1():
print('函数内部a = ', a)
print('函数内部b = ', b)
print('a1 = ',a)
return fn1()
fn()
7.文档字符串
#用字符串的形式 写函数的作用 help(函数名)输出结果
def fn(a, b, c):
"""
这是一个文档字符串的演示
这个函数的作用是。。。。。
函数的参数
:param a: 作用, 类型, 默认值。。。
:param b: 作用, 类型, 默认值。。。
:param c: 作用, 类型, 默认值。。。
:return: 123
"""
return 123
help(fn)
8.命名空间
locals()用来获取当前作用于的命名空间,返回的是一个字典
a = 123
scope = locals()
scope = globals() #获取全局作用域
scope['a']
scope['b'] = 456 #添加
9.递归
9.1 基线条件
问题可以分解为最小的问题,当满足基线条件的时候,递归就不在执行了
9.2 递归条件
将问题继续分解的条件
def fn(n):
# 基线条件
if n == 1:
return 1
# 递归条件
return n * fn(n-1)
r = fn(10)
print(r)