|
阅读:6453回复:0
python 基础 学习系列4 — 函数
函数
函数:有一定功能的代码块 函数作用:提高利用率(重复使用)、封装(模块化) 定义: 语法: def 函数名(参数列表): 函数体(代码块) 调用 函数名(参数) 分类: 有无参数: 有参函数、无参函数 有无返回值: 有返回值函数、 无返回值函数 参数: 形参:定义函数时申明的参数 实参:调用函数时传递的参数 联系:形参相当于复制实参 注: 引用类型的复制,形参改变了,实参也会变 值类型的复制,形参不会改变实参 参数参型 默认参数(形参后赋值,这个值称为默认值):默认值,要在必须参数的后面 必须参数(没有设置默认值的就是必须参数) 关键字参数(指定形参的名字来传递值) e.g student(age=18,name='doubleyong') 不定长参数 (*变量名, *后面的变量是元组类型) 注:不定长的参数也必须放到参数的后面 e.g def student(name, *info) # 变量info 是元组类型 返回值: return 值 函数没有return 时, 返回None 注: return 可以返回多个值,并且将多个返回值,装到一个元组中 如下: def add(num1,num2): return num1,num2,num1+num2 result = add(5,3) print(result) # result 为元组类型,结果为: (5,3,8) 变量作用域 Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。 变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:
# python中,只有模块(module)、类(class)、函数(def、lambda),会产生新的作用域 if(True): x = 5 print(x) 注:python中, 直接写if结构它是不会产生作用域的,所以x打印出来是5. # 函数里定义的是局部变量,局部变量,当前函数可以访问 # 函数外定义是全局变量, 全局变量,所有的函数都可以访问,不能修改,要修改,必须在前面加global x = 5 def change(): global x x=10 change() print(x) # 函数里,要修改全局变量,变量前加global 如果要修改不是自己的变量,加nonlocal,它是向上找,最先找到谁就是谁。 nonlocal, 不能找到全局的变量 y = 5 def a(): y = 10 def b(): # y=11 def c(): nonlocal y y=18 print('c函数中的y',y) c() print('b函数中的y',y) b() print('a函数中的y',y) a() print('全局中的',y) 注: nolocal会向上找,找到上级的变量后,进行修改,但是不会找到全局变量,只限在def内定义的变量 |
|
|