Python-函数
函数:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
1)在 python 中,类型属于对象,变量是没有类型的:
a = [1,2,3]
a = 'sdf'
以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象
2)函数
def a():
语句
3)函数调用
a()
4)传参:
【1】必传参数 :def a(str):。函数调用 a()。不穿参数,代码会报错。
【2】关键字参数:传参的变量在方法调用时才定义。
【3】默认参数:方法在定义时,已经给参数赋值了。调用是如果没有传参,则使用方法定义时的值。
【4】不定长参数:
第一种:参数前面一个*号,打印出来的参数是tuple
def a(a1,*a2);
语句
第二种:参数前面一个**号,打印出来的参数是dictionary
def a(a1,**a2):
语句
【5】传参里面有*代替的。*后面的参数在调用方法是,必须是关键字传参。
5)匿名函数,a = lambda(a1,a2,a3:a1+a2*a3)。冒号前面是定义的参数,冒号后面是参数的运算。a 指向lambda返回值。lambda的调用同方法的调用
6)return语句。
【1】return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。
【2】return之后的语句是不执行的
7)变量作用域
【1】L (Local) 局部作用域,E (Enclosing) 闭包函数外的函数中,G (Global) 全局作用域,B (Built-in) 内置作用域(内置函数所在模块的范围)
1】局部作用域引用全局的变量是可以使用,但是不能修改全部变量指向新的值。即不能修改变量。下面的代码是会报错的。
num = 2
def a():
num = 3
如果想改,重新声明变量的作用域。
num = 2
def a():
global num
num = 3
2】如果全局变量是可变类型,list和dictionary。可以在局部作用域修改变量指向的值。下面的代码是不会报错的
num = [1,2,3]
def a():
num[1] = 22
3】同理,L (Local) 局部作用域 需要更新 E (Enclosing) 闭包函数外的函数中,需要关键字 nonlocal 重新声明变量。
【2】Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问
【3】执行以下代码会报错
a = 10
def test():
a = a + 1
print(a)
test()
修改为下面代码不会报错。
a = 10
def test(a):
a = a + 1
print(a)
test()
说明:已经定义的变量,再函数中再次用到相同的变量,

浙公网安备 33010602011771号