python Day11

  • 函数中默认参数的陷阱

    • 只针对默认参数是可变的数据类型(如果你的默认参数指向的是可变的数据类型,那么你无论调用多少次默认参数,都是同一个)

      def test(name,list=[]):
      list.append(name)
      return list
      res=test("Zhxuiayu")
      print(res)
      res1=test("zhu")
      print(res1)
      ##正确的结果:['Zhxuiayu']
      ## ['zhu']
      ##运行的结果:['Zhxuiayu']
      ## ['Zhxuiayu', 'zhu']
      #解析:因为这里的lsit=[]变量即不再全局空间中也不在局部名称空间中
    • 在函数中,如果你定义了一个变量,但是在定义这个变量之前对其进行引用了,那么解释器认为:语法问题,应该在使用前经常定义

      count=1
      def func():
      print(count)
      count=3
      func()
      ##结果 UnboundLocalError: local variable 'count' referenced before assignment
    • 全局变量global ,在局部变量前添加global,全局名称空间变量可以引用局部名称变量

      def func():
      global name
      name="zhuxiayu"
      func()
      print(name)
    • nonlocal(不能操作全局变量,是内层函数对外层函数的局部变量进行修改)

      def wapper():
      count=1
      def inner():
      nonlocal count
      count+=1
      print(count)
      inner()
      wapper()
      ##结果:2
  • 函数名的应用
    • 函数名指向的是函数的内存地址
  • 函数名+()就可以执行次函数

  • 函数名就是变量

    def fun():
    print("1")
    def fun1():
    print("2")
    fun1=fun
    fun1()
    ##结果1
  • 函数名可以作为容器类数据类型的元素
    def fun():
    print("1")
    def fun1():
    print("2")
    def fun2():
    print("3")
    l1=[fun,fun1,fun2]
    for i in l1:
    i()
  • 函数名可以作为函数的参数
    def fun():
    print("1")
    def fun1(x):
    x()
    fun1(fun)
    ##结果 1
  • 函数名可以作为函数的返回值
    def fun():
    print("1")
    def fun1(x):
    return x
    rest=fun1(fun)
    rest()
    ##结果 1
  • 格式化输出
    • 任意表达式
      #结合字典格式
      dict={"name":"zhxuaiyu","age":12}
      print(f'我的名字是{dict["name"]},我的年龄是{dict["age"]}')
      ###结果:我的名字是zhxuaiyu,我的年龄是12
      ###结合函数的形式
      def sum(a,b):
      return a+b
      print(f"最终的结果为:{sum(10,20)}")
    • 优缺点
      • 缺点是!,:{}这些标点符号不能出现在表达式的{}中
      • 优点:
        • 结构更加简单
        • 可以结合表达式,函数进行使用
  • 迭代
    • 可迭代对象

      • python中一切皆对象。一个实实在在存在的值,对象。
      • 可迭代:更新迭代。重复的,循环的一个过程,每次都有新的内容,可以进行循环更新的一个实实在在的值。
      • str list tuple dict set range 文件句柄
      • 内部含有‘——iter——’方法的对象,可迭代对象。
    • 可迭代对象的优点
      • 存储的数据直接能显示,比较直观
      • 拥有的方法比较多,操作方便。
    • 可迭代对象的优点
      • 占用内存
  • 迭代器(可更新迭代的工具)
    • 迭代器的定义

      • 内部含有‘——iter——‘方法并且含有’——next——‘方法的对象就是迭代器。

      • 可以判断是否是迭代器:‘——iter——‘and’——next——‘在不在dir(对象中)

        ss1="Fdsfsdffddfs"
        obj=iter(ss1)
        for i in range(len(ss1)):
        print(obj.__next__())
      • 优点

        • 节省内存。
        • 惰性机制,next一次,取一个值,绝不过多取值。因为是按需一次获取一次数据项,这样占的内存就很少。next一次,取一个值
      • 缺点

        • 时间慢
        • 不走回头路
    • 可迭代对象与迭代器的对比

      • 可迭代对象是一个操作方法比较多,比较直观,存储数据相对少的一个数据集。

      • 当你数据量过大,大到足以撑爆你的内存或者你以节省为首选因数时,将数据集设置为迭代器是一个不错的选择。

      • 利用while去模拟for循环对可迭代对象进行取值的机制。

        ss1="Fdsfsdffddfs"
        obj=iter(ss1)
        while 1:
        try:
        print(obj.__next__())
        except StopIteration:
        break
  • 作业

    • 看代码写结果

      def func1():
      print("in the func1")
      def func2(x):
      print("in func2")
      return x
      def func3(y):
      print("in the func3")
      return y
      ret=func2(func1)
      ret()
      ###结果:in func2
      ## in the func1
      def func1():
      print("in the func1")
      def func2(x):
      print("in func2")
      return x
      def func3(y):
      print("in the func3")
      return y
      ret=func3(func2)
      ret1=ret(func1)
      ret1()
      ###结果:in the func3
      ### in func2
      ### in the func1
      def func():
      for item in range(10):
      pass
      print(item)
      func()
      ###结果:9
    • 传入一个参数n,返回一个n的阶乘

      #传入一个参数n返回一个n的阶乘
      def func(number):
      count=1
      for i in range(number,0,-1):
      count=count*i
      return count
      print(func(4))
    • 写一个函数,返回一个扑克牌列表,里面有52项,每一项是一个元组,eg:[("草花",2),(“红心”:3)]

    def pukepai(*args):
    list=[]
    for i in range(0,len(args),2):
    tuple1=args[i:i+2]
    list.append(tuple1)
    return list
    list=["红桃",2,"草花",3]
    print(pukepai(*list))
    • 写代码完成99乘法表

      for m in range(1,10):
      for n in range(1,10):
      if m<=n:
      print("%s*%s=%s"%(m,n,m*n),end=" ")

python基础 Day11的更多相关文章

  1. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  2. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  3. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  4. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  5. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  6. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  7. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  8. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...

  9. python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

随机推荐

  1. 水题----B - Badge CodeForces - 1020B

    In Summer Informatics School, if a student doesn't behave well, teachers make a hole in his badge. A ...

  2. Jarvisoj-web Login

    题目入口: http://web.jarvisoj.com:32772/ 有个登陆框,随便提交参数然后bp抓包 get到了一个Hint,给了sql查询的语句 select * from `admin` ...

  3. 郭的手机出现提示:条码扫描器,抱歉,Android相机出现问题。您可能需要重启设备

    郭的手机出现提示:条码扫描器,抱歉,Android相机出现问题.您可能需要重启设备 ++++++++++++++++++ 原因是系统没有给应用使用摄像头的权限,我到楼下设置对方手机,选择“设置”-&g ...

  4. ubuntu 12.04无盘工作站

    注释:该篇博文是借鉴下列文章加上自己实践总结得来: a. http://forum.ubuntu.org.cn/viewtopic.php?f=77&t=117754 b. http://bl ...

  5. 第四课 OOP封装继承多态解析,接口抽象类选择 2019-04-21

    父类 xx = new 子类(); xx.method(); 1 普通方法由编译时决定(左边) --- 提高效率 2 虚方法(virtual)  由运行时决定-- -多态,灵活 3 抽象方法由运行时决 ...

  6. SpringBoot集成Dubbo+Zookeeper

    目录 Spring版本 dubbo_zookeeper负责定义接口 dubbo_provider 服务提供者 dubbo_consumer服务使用者 Spring版本 不知道为啥,新创建的Spring ...

  7. Python之数据结构:列表、元组、字典、set

    列表 列表里可以存储任意的数据类型.可修改的结构,用[ ]括起来表示或用函数list()构建. eg: y = [1,1.5,'hello',True] 列表还可以嵌套列表 eg: y = [1,1. ...

  8. 第六章 文件&IO流

    6.1.File类 描述:该类是文件和目录路径名的抽象表示 构造方法: 方法 描述 public File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的File ...

  9. 安装ElasticSearch遇到的深坑

    实验需要ES,安装过程中遇到一些奇葩的问题,记录下.下面介绍下安装步骤: 第一步:安装java ES是运行在java虚拟机上面的,所以首先需要安装java环境,安装过程不再赘述,唯一需要注意的是ES对 ...

  10. 怎么下载腾讯课堂M3U8格式的视频

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 前言 用过腾讯课堂的小伙伴们可能 ...