文章目录
函数的定义
def function(x,y):
对比matlab的函数定义,将function替换为了def,在参数表后增加:,在函数末尾减少了end
函数的参数类型
(1)默认参数
默认参数需要在定义函数形参时即给定默认值
def function1(name,year=100):
print('I love', name, year, 'years')
(2)收集参数
收集参数:*args收集多余的参数,并应放在参数表末尾
def function2(x=0,*args):
if x == 0:
print('case 1')
else:
print('case 2')
函数调用的传参方式
(1)指定位置传参
(2)关键字传参
关键字传参时,函数调用中的参数不需要按照函数定义中参数的排列顺序排列。
def love(name,year=100):
print('I love', name, year, 'years')
love(year=1000,name='ChiLam')
函数的返回值
def love(name1,name2):
res = f'{name1} love {name2}'
return res
变量的类型
(1)变量作用域分类
① 全局变量:函数外定义的变量、函数内使用global定义的变量
② 局部变量:函数内定义的变量
(2)数据类型分类
① 可变数据类型:列表、字典。在函数外定义在函数内可以修改
② 不可变数据类型:其他类型变量。在函数外定义在函数内不可修改
num = 10
varlist = [1, 2]
def fun1():
print(num + 5)
varlist[1] = 'a'
print(varlist)
global pp
pp = '先定义再赋值'
a = 20
print(locals())
fun1()
print(pp)
(3)作用域函数
① globals():获得全局变量即数据
② locals():获得当前作用域的数据
内外函数变量的相互使用
(1)在内函数中使用外函数定义的变量
nonlocal定义:在局部函数中使用,就可以使用上一层函数定义的变量
(2)在外函数使用内函数定义的变量
global定义:在局部函数中使用,可以在上层函数使用局部函数定义的变量
def outer():
num = 10
def inner():
nonlocal num
num += 1
print(num)
global n1
n1 = 12
inner()
print(n1)
outer()