1.函数:对功能和动作进行封装
2.函数的定义
def 函数名(形参列表)
函数体(return)
#函数调用
函数名(实参列表)
3.返回值
1)return 的作用:
①中止对这个函数的调用,②返回值的情况
2)返回值的几种情况
①函数体没有return语句,返回值为None
②return语句后面不加或者None(这种方式一般没有把),返回值为None
③return语句加一个值,返回值为一个值
④return语句后面加多个值,返回值为元组,可以直接解构成多个值
4.形参、实参、传参
形参:函数声明时的位置的变量
实参:函数调用时的位置的变量
传参:将实参赋值给形参的过程。
5.实参的分类
①位置参数:根据位置给形参传递信息
②关键字参数:按照形参的名字给参数传递信息
③混合参数:先位置,再关键字
6.形参的分类
①位置参数
②默认值参数:必须写在位置参数后面
③动态参数
*args:位置参数的动态参数,接收到的是元组;
**kwargs:默认值参数的动态参数,接收到的是字典。
顺序:位置参数 => *args => 默认值参数 => **kwargs
*和 ** 在形参位置上就表示 把传进来的参数聚合起来
在实参位置上表示把 参数打散
7.命名空间
1)内置命名空间:python解释器提供给我们的一下名称,如list,tuple,str
2)全局命名空间:我们直接放在py文件中,函数外声明的变量
3)局部命名空间:在函数中声明的变量
8.作用域:变量或者函数的声明周期
1)全局作用域:在整个文件的任何位置都可以使用,有内置命名空间和全局命名空间组成;
2)局部作用域:只在函数内部可以使用,有局部命名空间组成。
9.两个函数globals()和locals()
globals():查看全局作用域中的内容
locals():查看当前作用域中的内容
10.函数的嵌套
反复调用 def fun1(): print('我是fun1') def fun2(): fun1() print('我是fun2') fun2() 嵌套 def fun1(): print('我是fun1') def fun2(): print('我是fun2') fun1()
11.两个关键字global和nonlocal
global:把全局作用域中的变量拽进来;
nonlocal:把当前的上一层的变量拽进来使用
# global
a = 10 def fun(): global a a = 20 print(a) fun() print(a) >> 20 20
#nonlocal a=10 def fun1(): a = 20 def fun2(): nonlocal a a = 30 print(a) fun2() print(a) fun1() print(a) >> 30 30 10
12.函数名的应用
1)函数名可以赋值,可以像变量名一样进行使用
2)如果单独的使用函数名,后面没有加括号的话,返回的是这个函数的内存地址
3)变量名可以加减什么的,但函数名不可以哦
4)模板:
def fun1(): print("我是fun1") def fun2(): print("我是fun2") def fun3(a,b) xxx fun3(fun1(),fun2())
5)要适当给出函数的文本注释,只需要几行就行,简洁明了的说明函数的作用
6)__name__:得知最开始定义的函数名,因为我们在对函数名赋值的时候,函数名一直在变,到最后我们都不知道函数名指的啥了,所以这个很有必要。
__doc__:查看文本注释 和上面一样,(两边都是两个下划线‘_’)
#登录验证 def login(username,password): #函数的定义 if username == 'alex' and password == '123': # return '登陆成功' 最low return True #最好的方式 #函数有返回值,返回值为True # return 1 else: return False name = input('账户:') password = input('密码:') if login(name,password): #函数的调用 print('进入主页') else: print('用户名或密码错误,请重新登陆!')