python函数
函数啊函数
多解决问题,踩的坑多了,就有经验了
- 函数作用: 以功能(完成一件事)为导向的代码块,一个函数就是一个功能.
- 随调随用,不用不调
- 减少代码重复性,增强了代码可读性
- 函数的结构与调用:
- def func(args):..expr..return a,b
- 函数名 加上 括号 才执行
- return的功能:
- 1-结束函数,函数里面的while循环内部遇到return也会跳出.
- 2-给函数外部返回一个或多个值(元组). 返回就是传给一个变量一个值
- 调用一次函数,就执行一次
- 函数的返回值
- return 单个值 type是值本身
- return 多个值 是以元组的形式返回给函数的执行者
- 没有return 实际返回是None
- 一个函数可以有多个return --根据条件
- 函数的参数\传参
- 函数执行时写的参数 叫 实参
- 函数定义时写的参数 叫 形参
- 位置参数: 按顺序一一对应
- 关键字参数:一一对应
- 混合参数: 位置参数一定要在关键字前面
- 默认参数的设置是经常用的
- 万能参数很强 args : 约定是args, 牛逼的是这个---函数定义的时候,*代表聚合,成一个元组
- 万能参数真强 **kwargs **聚合成一个字典
- 形参角度的参数顺序: (位置参数 *args, 默认参数, 关键字参数, **kwargs)
- 在函数执行时,*代表打散
def func(*args, **kwargs): print(args) print(kwargs) func(*'abc', *[1, 2, 3], *[66, 77], **{'a': 1, 'b': 2}, **{'tt': 100, 'yy': 101}) ## ('a', 'b', 'c', 1, 2, 3, 66, 77) ## {'a': 1, 'b': 2, 'tt': 100, 'yy': 101}
- 三元运算符--列表的和字典的三元表达式
- aa = list[:2] if expr else 1
- return a if a>b else b
- list1 = [a for a in range(10)] # 列表三元表达式
- dict1 = {key: value for key, value in enumerate(list1)} # 字典三元表达式
- 名称空间 和 作用域
- 内置名称空间: python内置函数的预置空间print input ord chr id isinstance....
- 全局名称空间: 记录变量名与值/函数名与函数体的对应关系 py文件root就是全局空间
- 局部名称空间:执行时开辟,函数运行结束关闭....也叫临时空间 +
- 加载顺序: 内置--全局--局部
- 取值顺序: 局部--全局--内置 就近原则
- 作用域:
- 全局作用域--内置名称空间和全局名称空间
- 局部作用域--局部名称空间
- 局部作用域可以"引用"全局作用域的变量,但不能修改这个变量
- local--eclose--global--builtin ==>LEGB就近原则
- 函数的嵌套--高阶函数--函数里面套函数
- 内置函数--
- globals() 返回的是字典: 字典里面的键值对:全局作用域的所有内容
- locals() 返回的是字典: 字典里面的键值对:当前作用域的所有内容
a=1 b=2 def func(): c=3 print(locals()) print(globals()) func() ###========----------内容如下 {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001393FED4820>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'E:\\software\\python\\pythonProject\\fuxitigao\\1106.py', '__cached__': None, 'a': 1, 'b': 2, 'func': <function func at 0x000001393FE13EB0>} --- {'c': 3}
- 关键字--nonlocal global