函数
# 函数是为了更便捷的处理同类型事务,封装功能一边后续使用 def 函数名(形参): 函数体(代码块) return 返回值 函数名() #这是调用
def yue(): print('打开手机') print('打开陌陌') print('找个漂亮的小姐姐') print('约不约') print('走起') return #当程序运行碰到return就结束函数 print('这老铁真黑') a = yue() # 调用(执行) #谁调用返回值就给谁 print(a) yue() 调用就是函数名加小括号 return 返回值 return #没有返回内容就返回None return #返回一个值的时候就是本身,返回多个值就是元组 print(yue) #函数的内存地址
函数返回值(return)
不写 return ,默认返回None,
写了 return不写返回值,返回None
返回一个参数时 是 本身 self
返回多个参数时 是 元组 tuple ( ,, )
程序运行到return时候,后面的代码不执行
参数:
传参: 调用时候实参传递给形参的过程 注意位置参数在前 位置参数 func(a,b,c) 关键字参数(默认参数) func(a=1,b=2) 混合参数 func(a,b=2) 不定长参数(动态参数) func(1,2,3,*(4,5),**{6:7,8:9}) def func(*args,**kwargs): print(args) #(1, 2, 3, 7, 8) print(kwargs) #{'age': 18, 'name': 'zc'} func(1,2,3,*[7,8],**{'age':18,'name':'zc'}) # func(1,2,3,c=4,d=5) #{'c': 4, 'd': 5}
三元运算 (三目):
a if a>b else b
结果 1 条件 结果2
排错方法:
1, print( )
2, pycharm debug
#位置参数>动态位置>默认>动态关键字参数 #命名(名称)空间 函数名的本质是内存地址 加()才是调用 python内置多种自带函数 但run代码开始时,先加载所有内置函数,这也就是第一行代码如果是print()也能执行的原因,最后执行文件自定义的函数 全局 命名空间 (全局作用域 python内置+全局) 局部 命名空间 (局部作用域 函数代码块内部) a=10 def func(): b=3 print() func() print(globals()) #查看全局作用域里的变量和函数名 print(locals()) #查看局部作用于里的变量和函数名 加载 python内置>>>全局>>>函数体局部 查找(取值) 函数体局部 >>>全局>>>内置 global 可变数据类型在函数中可直接操作 不可变数据类型才需要global nonlocal 改变最近的父级变量 变量不会被修改 nonlocal 改变最近的父级变量, 如果上级没有能够改变的就继续向上走,直到最外层函数就停止了. 函数: 将一个需求封装后调用,优点:除去重复代码. 函数的注释: def f(): ''' ''' return print( ) 函数嵌套(非常重要) 避免出现环形调用