第十节

一、函数进阶

  1. 动态参数

    • *a r g s —— 聚合位置参数,动态位置参数

      默认返回的是tuple元组

      def eat(*args):  # 函数的定义阶段 *聚合(打包)    print(args) # tuple    print(*args) # 函数体中的 *    打散(解包)eat(*args) # 打散可得迭代的数据类型
      def eat(a,b,*c):    print(a)    print(b)    print(c)     # tupleeat("面条","米饭","馒头","大饼")# 返回的是 面条,米饭,(馒头,大饼)
    • k w a r g s —— 聚合关键字参数,动态默认参数

      默认返回的是d i c t字典

def eat(a,b,*args,d=2,**c):# 位置参数 > 动态位置参数 > 默认参数 > 动态默认参数    print(a)    print(b)    print(d)    print(args)     # tuple    print(c)        # dicteat("面条","米饭","大烧饼","大煎饼",a1=1,b1=2)# 位置 > 关键字

参数位置 > 动态参数位置 > 默认参数位置 > 动态默认参数位置

  • 定义的时候 * ** 都是聚合

  • 函数体和实际参时 * a r g s 将元组中的元组打散,** k w a r g s将字典中的键获取

  • 形参:

    • 位置参数:

      • 动态位置参数:先执行位置参数,位置参数接受后额外的参数动态参数进行接收,获取的是一个元组。

    • 默认参数:

      • 动态默认参数(默认):先执行默认参数,默认参数接受后额外的动态默认参数进行接收,获取的是一个字典。

  • 实参和函数体:

    • *打散 **实参时能够使用

 def eat(*args,**kwargs):  # (万能传参)     print(args) # tulpe     print(kwargs) #dict lst = [1,23,4,6,7] dic = {"key1":1,"key2":3} # 应用场景 eat(lst,dic) # ([1, 23, 4, 6, 7], {'key1': 1, 'key2': 3}) # {} eat(*lst,**dic) # (1, 23, 4, 6, 7) # {'key1': 1, 'key2': 3}

 # 数据库  ———— ** def func(*args,**kwargs):     print(kwargs) func("key"=1,"ke1"=1)# 数据库都是传入的键值对
  1. 函数的注释

    def 函数名():    """    注释信息    :return:    """    return# 函数名.__doc__查看注释内容# 函数名.__name__查看函数名称
  2. 名称空间

    1,内置空间:Python解释器自带的空间

    2,全局空间:p y文件顶格写的就是全局空间

    3,局部空间:函数体就是局部空间

    • 加载:

      • 内置空间 > 全局空间 > 局部空间

    • 取值:

      • 局部空间 > 全局空间 > 内置空间

    • 作用域:作用域就是作用范围, 按照生效范围来看分为 全局作用域 和 局部作用域

      • 全局作用域:全局+内置

      • 局部作用域:局部

  3. 函数的嵌套

    • 不管在什么位置,只要出现函数名()就是在调用函数。

      # 混合嵌套:def f1():    print(11)​def f2():    print(22)    f1()​def f3():    print(33)    f1()​def run():    f3()    f2()    f1()run()#33#11#22#11#11​def func(a):    print(a)    return f1(foo(a))​def foo(b):    print(b)    return b + 5​def f1(args):    return args + 10​print(func(5))#5#5#20​def foo(a):    a = 10    def f1(b):        c = b        def foo(c):            print(c)            print(foo.__doc__)        foo(c)        print(b)    f1(a)    print(a)foo(25)#10#None#10#10​def foo():    a = 10    func(a)​def func(a):    print(a)​foo()#10
  4. global 和 nonlocal

    • global :只修改全局变量,如果全局没有,则创建一个新的

    • nonlocal:只修改局部变量,修改声明nonlocal 最近的一层,上层没有继续向上上层查找;只限制在局部,找不到就报错。

    a = 10def func():    global a    a = a - 6    print(a)print(a)#10    直接读取全局空间的值func()#4print(a)#4     global 已经改变了全局空间中a的值​​a = 100def func():    b = 10    def foo():        b = a# b = a = 100        def f1():            nonlocal b            b = b + 5 # b = 100 + 5            print(b)  # 105        f1()        print(b)  # 105   b的值随着nonlocal改变了    foo()    print(b) # 10     读取的是相同空间的值func()print(a) # 100    全局空间的b 没发生改变

python_0基础开始_day10的更多相关文章

  1. python_0基础学习_day02

    第二节 一,while while也称为无限循环.死循环 while 条件: 缩进 循环体 应用领域:音乐播放:单曲循环,列表循环,随机播放(也是有规律的) 登陆界面:…… 数学计算:1~100的和, ...

  2. python_0基础学习_day01

    Python是一门动态解释型的强类型定义语言 一.变量 变量命名规则 由数字.字母.下划线组成 不能以数字开头 要具有描述性 要区分大小写 禁止使用python的关键字(在pycharm中关键字明明变 ...

  3. python_0基础开始_day07

    第七节 1,基础数据类型补充 str: print(str.capitalize()) —— 首字母大写 print(str.title()) —— 每个单词的首字母大写 print(str.swap ...

  4. python_0基础开始_day06

    第六节 1.小数据池 ==,is,id ==:查看等号两边的值是否一样 a = 9b = 9print(a == b) # 返回Truec = "dog"d = "dog ...

  5. python_0基础开始_day03

    第三节 一.整形和布尔值的转换 int整型 python3: 全部都是整型 python2: 整型,长整型long 十进制转换二进制 # 将十进制的168转换为二进制 ​#得出结果 将十进制的168转 ...

  6. python_0基础开始_day05

    第五节 一.字典 python的数据结构之一 字典 —— dict 定义:dic = {"key":"dajjlad"} 作用:存储数据,大量,将数据和数据起到 ...

  7. python_0基础开始_day04

    第四节 一.列表 list 数据类型之一,存储大量的,不同类型的数据 列表中只要用逗号隔开的就是一个元素 有序可变的. 1.1列表的索引 列表和字符串一样也拥有索引,但是列表可以修改: lst = [ ...

  8. python_0基础开始_day13

    第十三节 一,匿名函数 匿名函数 == 一行函数 lambda == def == 关键字 函数体中存放的是代码 生成器体中存放的也是代码 就是yield导致函数和生成器的结果不统一 lambda x ...

  9. python_0基础开始_day12

    第十二节 一,生成器 生成器的核心:生成器的本质就是迭代器 迭代器是python自带的 生成器是程序员自己写的一种迭代器 在python中有三种方式来创建生成器: 基于函数编写 推导式方式编写 pyt ...

随机推荐

  1. Oracle DBCA工具检测不到ASM磁盘组

    本例环境: 操作系统OEL 6.5 数据库版本:11.2.0.4 问题:DBCA建库的时候,检测不到ASM磁盘组 因素一:可能是在授权的时候执行了 chown –R 775 /u01/app等修改权限 ...

  2. Centos 7 下安装LDAP 双主同步

    Centos 7 下安装LDAP 双主同步 标签(空格分隔): LDAP 安装说明: 从OpenLDAP2.4.23版本开始所有配置数据都保存在slapd.d目录下的cn=config文件夹中,不再使 ...

  3. 连接数据库出现The server time zone value '�й���׼ʱ��' is unrecogni等问题的解决方案

    使用JDBC连接数据库出现The server time zone value '�й���׼ʱ��' is解决方案 ** 将jdbc.properties中url后加入?serverTimezone ...

  4. LeetCode 470. 用 Rand7() 实现 Rand10()(Implement Rand10() Using Rand7())

    题目描述 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数. 不要使用系统的 Math.random() 方法. 示 ...

  5. 图片加载框架之Glide和Picasso

    Glide介绍 Glide是一个加载图片的库,作者是bumptech,它是在泰国举行的google 开发者论坛上google为我们介绍的,这个库被广泛的运用在google的开源项目中. Glide是一 ...

  6. MEF等Ioc框架引起内存泄露-PartCreationPolicy

    对象的创建可以使用new,也可以使用IOC架如:castle.MEF等,IOC创建的对象的生命周期,可能IOC负责管理,使用框架的开发者如果不弄清楚可能会造成内存泄露问题. 这些内存泄露问题并不是IO ...

  7. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_7 ModelAttribute注解

    这个注解可以作用在方法上,也可以作用在参数上 演示 user里面有三个属性, 表单只提交了两个属性.缺少了date属性 date没有获取到值因为也没提交这个值. 下面返回的user对象.上面就会拿到 ...

  8. (转载)IDEA中对Git的常规操作(合并,提交,新建分支,更新)

    工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小 ...

  9. 谷歌云服务器XShell登录

    一,谷歌云服务器,默认用浏览器进行SSH链接,而且也不告知密码.以Centos为例,先使用浏览器连接 1,给root修改密码 sudo passwd root 2,编辑ssh配置文件 sudo nan ...

  10. jdk1.8-ArrayDeque

    一:类的继承关系 UML图 类的继承关系: )))))) ]) & ()) == ) & ()) == ) & ()] = e) ) & (); return resu ...