python 初识函数
1.可变形参
def show(username, password=‘123123’, *args, **kwargs): #形参语法顺序:普通参数, 缺省参数(即默认赋值参数),可变位置参数, 可变关键字参数 pass
可变位置参数形成一个tuple,可变关键字参数形成一个dict
在形参定义中,出现在一个可变位置参数后的普通参数,已经不再是普通参数了,因为此时它只能接受关键字传参,所以称为keyword-only参数
2.三目运算符
1 def my_max(a, b): 2 c = a if a > b else b # 当a>b成⽴立返回a, 否则返回b 3 return c
3.函数返回值
当函数执行到 return 后边得任何语句都不再执行,函数结束。没有明确 return ,函数会默认 return 一个 None
4.作用域
全局作用域:在整个程序运行环境中都可见。 全局作用域中的变量称为全局变量
局部作用域:在函数、类等内部可见,外部不可见。 局部作用域中的变量称为局部变量,使用范围不可超过其所在的局部作用域
x = 100 def fn(): print(x) x = 200 #首先在执行函数时,函数会在其内部作用域内查找是否有赋值定义的变量,如果有,则使用其作用域内的,如果没有,再向外部寻找
#但是如果其作用域内有,决定使用其作用域内的时,也需要先赋值才可以使用,上例中x在该作用域内存在,但还没有赋值即被Print调用,报错未赋值 print(x) fn() #报错
5.闭包
闭包是一个概念,出现在嵌套函数中,指的是内层函数引用了外层函数的自由变量(作用域内的局部变量)。无论外层多少层,只要是外层,就形成了闭包
def counter(): c = 0 def inc():
nonlocal c #nonlocal 非本地作用域的变量,可以是外部函数的自由变量,但绝对不可以是 global 变量
c += 1 return c return inc
m = counter()
print(m())
闭包技术可以帮助嵌套在内部的函数使用外部函数的自由变量时记住外部函数的自由变量而不释放
6.缺省值的引用
def bar(x=[]): # x = [] x.append(1) # 当第一次引用时,x标识符指向的是一个空列表,然后向这个列表中添加了一个元素。第二次引用时,x仍然指向列表的内存地址,所以第二次调用时x = [1] print(x)
bar() #结果 [1]
bar() #结果 [1, 1]