zoukankan      html  css  js  c++  java
  • python问号堂--第二篇

    1.分别书写数字5,10,32,7的二进制表示?

      5---0b101      10---0b1010     32---0b100000    7---0b111

      以上结果可以bin()来检测

      

    2.简述对象和类以及模块的关系(可用比喻的手法)?

    • 对象是基于类创建的,对象的功能都在类里,类具体为对象才能调用类里的方法
    • 做个例子,各个品牌汽车商就是类,宝马汽车商就是宝马类,跑在马路上的宝马车就是对象,因为具有宝马类的特征:宝马标志,宝马造型,宝马发动机
      模块和字典差不多
      你知道怎样创建和使用字典这个数据类型,这是一种将一种东西对应到另外一种的方式。这意味着如果
      你有一个字典,它里边有一个叫 ‘apple’ 的 key,而你要从中取值的话,你需要这样做:
      mystuff = {'apple': "I AM APPLES!"}
      print mystuff['apple']
      记住这个“从Y获取X”的概念,现在再来看看模块(module),你已经创建和使用过一些模块了,你已
      经了解了它们的一些属性:
      1. 模组是包含函数和变量的 Python 文件。
      2. 你可以 import 这个文件。
      3. 然后你可以使用 ‘.’ 操作符访问到模组中的函数和变量。
      假如说我有一个模块名字叫 mystuff.py 并且在里边放了个叫做 apple 的函数,就像这样:
      # this goes in mystuff.py
      def apple():
        print "I AM APPLES!"

     

          接下来我就可以用 import 来调用这个模块,并且访问到 apple 函数:
          import mystuff
          mystuff.apple()
     
      模块还可以用一种方法去理解:你可以把它们当做一种特殊的字典,通过它们你可以储存一些 Python
      代码,而你可以通过 ‘.’ 操作符访问到这些代码。Python 还有另外一种代码结构用来实现类似的目的,
      那就是 类(class) ,通过类,你可以把一组函数和数据放到一个容器中,从而用 ‘.’ 操作符访问到它们。
      如果我要用创建 mystuff 模块的方法来创建一个类,那么方法大致是这样的:
      class MyStuff(object):
        def __init__(self):
          self.tangerine = "And now a thousand years between"
        def apple(self):
          print "I AM CLASSY APPLES!"
     
      这个和模块比起来有些复杂,确实,比起模块来,这里的确做了很多事情,不过你应该能大致看出来,
      这段代码差不多就是模拟了一个名字叫 MyStuff 的迷你模块,里边有一个叫做 apple() 的函数,难懂的
      恐怕是 __init__() 函数,还有就是设置 tangerine 变量时用了 self.tangerine 这样的语法。
     
      使用类而非模块的原因如下:你可以拿着上面这个类,重复创建出很多出来,哪怕是一次一百万个,它
      们也不会互相干涉到。而对于模块来说,当你一次 import 之后,整个程序里就只有这么一份内容,只有
      鼓捣得很深才能弄点花样出来。
     
      不过在弄懂这个之前,你要先理解“对象(object)”是什么东西,以及如何使用 MyStuff 达到类似
      import mystuff 实现的结果。
     
      对象相当于迷你版的 import
      如果说类和迷你模块差不多,那么对于类来说,也必然有一个类似 import 的概念。这个概念名称就是
      “实例(instance)”。这只是一种故作高深的叫法而已,它的意思其实是“创建”。当你将一个类“实例
      化”以后,你就得到了一个 对象(object) 。
      实现实例化的方法,就是像调用函数一样地调用一个类:
      thing = MyStuff()
      thing.apple()
      print thing.tangerine
     
      第一行代码就是“实例化”操作,这和调用函数很相似。然而,当你进行实例化操作时,Python 在背后
      做了一系列的工作,这里我针对上面的代码详细解释一下:
      1. Python 看到了 MyStuff() 并且知道了它是你定义过的一个类。
      2. Python 创建了一个空的对象,里边包含了你在类中用 def 创建的所有函数。
      3. 然后 Python 回去检查你是不是在里边创建了一个 __init__ 魔法函数,如果你有创建,它就会
      调用这个函数,从而对你的空对象实现了初始化。
      4. 在 MyStuff 中的 __init__ 函数里,我们有一个多余的函数叫做 self ,这就是 Python 为我们创
      建的空对象,而我可以对它进行类似模块、字典等的操作,为它设置一些变量进去。
      5. 在这里,我把 self.tangerine 设成了一段歌词,这样我就初始化了该对象。
      6. 最后 Python 将这个新建的对象赋给一个叫 thing 的变量,以供后面使用。
     

    3.现在有如下两个变量,请简述n1和n2是什么关系?

      n1 = 123

      n2 = 123

      n1和n2指向同一份内存空间,就是123的内存地址,这是python的内部优化机制

        

    4.现有如下两个变量,请简述n1和n2是什么关系

      n1 = 123456

      n2 = 123456

      n1和n2指向不同的内存空间,因为python的内部优化机制只适用-5----257,对以外的数字,当再赋值给新的变量,会重新开辟一份内存空间

      

    5.现有如下变量,请简述n1 和 n2是什么关系?

      n1 = 123456

      n2 = n1

      把变量赋给一个新的变量,其实赋给的是一个索引,当把n1赋给n2就是把n1索引到123456的内存地址赋给了n2,所以这里的n1和n2内存地址一样

      

    6.布尔值分别有什么?

      真--True   假--False

     

    7.阅读代码,请写出执行结果

      a = ‘alex’

      b = a.capitalize()

      print(a)

      print(b)

      输出结果为:a--alex,b--Alex

                                                            欢迎大家对我的博客内容提出质疑和提问!谢谢

                                                                                 笔者:拍省先生  

      

  • 相关阅读:
    剑指Offer_编程题_从尾到头打印链表
    剑指Offer_编程题_替换空格
    剑指Offer_编程题_二维数组中的查找
    我用java爬虫爬了一个图片网站
    docker安装mysql5.7
    设计模式和设计原则
    nginx 限流配置
    JAVA性能监控与调优参考文档链接
    单例模式
    Java开发中对Redis的基本操作
  • 原文地址:https://www.cnblogs.com/xinsiwei18/p/5540642.html
Copyright © 2011-2022 走看看